Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (9015B)
1 #! page 2 title: Des debian multi-utilisateurs et multi-langues 3 author: Arthur Pons 4 description: Comment créer un système multi-utilisateurs multi-langues pour debian + lightdm + cinnamon 5 publication: 2025-02-11 6 7 sectionmd: main 8 9 ## Tuto 10 11 Cette page détaille comment le tout fonctionne. 12 13 Pour le tuto voir [ici](tuto). 14 15 Pour le code du script d'installation voir 16 http://git.bebou.netlib.re/secours-catholique/log.html. 17 Je précise que ce script est un peu moche et très spécifique aus besoins de 18 l'accueil de jour et du choix de la stack technique. Les locales sont en dur 19 dedans, il est un peu fastidieux d'en rajouter. Si vous voulez l'utiliser je 20 vous recommande de vous en inspirer ou en faire une version générique si 21 vous savez faire. 22 23 ## Pourquoi 24 25 L'accueil de jour du Secours Catholique souhaitait s'équiper de quelques 26 ordinateurs en accès libre pour les personnes exilées. Problème, les 27 bénéficiaires parlent des langues différentes. Il faut donc un système 28 permettant de changer relativement facilement de langue et de configuration de 29 clavier. 30 31 ## Les outils 32 33 Pour faire simple et, on l'espère, stable, nous allons utiliser : 34 35 * OS : debian pour sa stabilité et son ubiquité 36 * Environnement de bureau : cinnamon pour sa ressemblence à windows 37 * Gestionnaire de session : lightdm parce que c'est le défaut de debian 38 39 ## La configuration 40 41 Notre principal besoin est de pouvoir utiliser le système sous plusieurs 42 langues. Or il semblerait qu'il ne soit pas possible[^1] de modifier la langue 43 du système à la volée. Pour le faire nous allons créer autant de comptes que de 44 langues nécessaires. Un compte pour l'arabe du Soudan, un compte pour l'arabe 45 de Syrie, un compte pour le persan etc. Je suis au courant que les relations 46 qui lient les pays et langues ne sont pas "Un pays = une langue" ou "une langue 47 = un pays" mais du fait de contraintes qui seront exposée plus tard nous allons 48 faire comme si c'était le cas. 49 50 ### Créer les locales 51 52 Les locales désignent un ensemble de configurations qui permettent au système 53 ou aux outils à l'intérieur de se comporter en accord avec une langue et ses 54 pratiques. Par exemple : 55 56 $ LC_ALL=fr_FR.utf8 date 57 mar. 11 févr. 2025 20:52:57 CET 58 59 $ LC_ALL=en_US.utf8 date 60 Tue Feb 11 08:54:02 PM CET 2025 61 62 Ces locales doivent être générées. Ca peut se faire à l'installation de debian 63 mais aussi après coup. D'abord, décommenter les lignes pertinentes de 64 `/etc/locale.gen` (ici exemple de l'arabe soudanais et syrien) : 65 66 sed -i.bak '/ar_SD/ s/^# //;\ 67 /ar_SY/ s/^# //;' /etc/locale.gen 68 69 Puis les générer 70 71 locale-gen 72 73 ### Changer de disposition de clavier 74 75 Il est possible de modifier son clavier, pour peu que l'on connaisse 76 l'identifiant de la disposition de clavier voulue : 77 78 setxkbmap ara 79 80 Cela dit on veut pouvoir changer d'un clavier à un autre au sein d'une même 81 session pour pouvoir taper des url ou des mot de passe par exemple. Pour cela 82 pas d'autre choix que de le faire via l'UI de cinnamon. 83 84 ### Création des comptes 85 86 Pour créer le compte du soudan on peut faire : 87 88 adduser sudan 89 90 sauf que les personnes concernées ne savent pas toujours lire notre alphabet. 91 Elles ne sauront donc pas choisir le bon utilisateur. On peut utiliser le nom 92 arabe du Soudan avec l'option `--allow-all-names` et un marqueur en ascii[^5]. 93 94 adduser --allow-all-names السُّودان 95 96 Puisque cela n'a pas vraiment de sens de mettre un nom et prénom etc on utilise `--comment` : 97 98 adduser --allow-all-names السُّودان 99 100 Et finalement puisque l'on ne veut pas de mot de passe on les supprime : 101 102 passwd -d ﺎﻠﺳُّﻭﺩﺎﻧ 103 104 A noter que créer le compte avec --disabled-password n'a pas l'effet escompté, 105 lightdm demander toujours un mot de passe. 106 107 #### Configurer la langue 108 109 ##### De l'environnement de bureau 110 111 Pour chaque compte il faut créer un fichier .xsessionrc qui déterminera la 112 locale à la première connexion. Il sera toujours possible de la modifier en 113 utilisant le menu en haut à droite de lightdm. 114 115 <<. cat > "$homefolder/.xsessionrc" 116 LC_ALL=$locale 117 export GDM_LANG=$locale 118 export LANG=$locale 119 . 120 121 Si vous suivez en lisant le script vous verrez qu'`$homefolder` est determiné à 122 l'aide d'un grep sur la base des caractères ascii inclus dans le nom du compte. 123 Cela permet de contourner les éventuels soucis d'encodage. En effet, lorsque 124 l'on créer un compte en arabe : 125 126 adduser ar_sd_لهجة-سودانية 127 128 Puis que l'on tente de copier un truc dedans : 129 130 $ touch /home/ar_sd_لهجة-سودانية/test 131 Impossible de créer le fichier standard blablabla 132 133 Je ne connais pas la source exacte du bug mais je suppose que quelque part 134 l'encodage du texte arabe doit varier d'une manière qui les deux occurences 135 visiblement identifiques mais en fait deux châines différentes. Peut-être à la 136 création du dossier par `adduser`, peut-être lors d'un copier-coller de ma 137 part... 138 139 ##### De firefox 140 141 Pour Firefox il faut installer les pack de langue correspondant. Dieu merci[^6] 142 ils sont packagés : 143 144 apt install firefox-esr-l10n-id_langue 145 146 #### Configurer les claviers 147 148 `dconf` permet de lire et écrire la configuration des claviers sous cinnamon. 149 Par exemple pour changer la priorité entre l'arabe et le français : 150 151 $ dconf read /org/gnome/libgnomekbd/keyboard/layouts 152 ['fr','ara','ir','af\tps'] 153 $ dconf write /org/gnome/libgnomekbd/keyboard/layouts ['ara','fr','ir','af\tps'] 154 155 Ces commandes doivent être lancées sous le compte en question et *après* le 156 lancement de la session graphique. Pour cela on créer un fichier desktop dans 157 `.config/autostart`. Il s'exécutera automatiquement au lancement de la session. 158 Il faut d'abord créer le dossier correspondant puis y mettre : 159 160 [Desktop Entry] 161 Type=Application 162 Name=keyboard 163 Exec=dconf write /org/gnome/libgnomekbd/keyboard/layouts "$layout" 164 165 Sans oublier de correctement configurer son propriétaire et les droits 166 d'exécution 167 168 chmod +x "$homefolder/.config/autostart/keyboard.desktop" 169 chown -R "$username" "$homefolder" 170 171 ### Configuration du gestionnaire de sessions 172 173 Le besoin est : 174 175 * Pouvoir choisir un compte dans une liste de pays/langues 176 * Ne pas avoir à entrer de mot de passe 177 * Avoir un second moyen d'identifier le pays/langues 178 * Masquer le compte "d'admin" secours 179 180 La configuration se fait dans les fichiers `/etc/lightdm/lightdm.conf` et 181 `/etc/lightdm/lightdm-gtk-greeter.conf`. Dans `lightdm.conf` il faudra 182 décommenter la ligne : 183 184 #greeter-hide-users=false 185 186 pour que l'écran liste les différents comptes plutôt que d'avoir à les taper. 187 C'est d'autant plus importants qu'ils contiennent des caractères de plusieurs 188 alphabets différents. Il faudra ensuite ajouter la ligne suivante à 189 `lightdm-gtk-greeter.conf` : 190 191 indicators = ~host;~spacer;~clock;~spacer;~layout;~language;~session;~a11y;~power 192 193 L'indicateur `~language` permet notamment de régler la langue du compte qui est 194 seléctionné[^2]. Cela permet de se connecter et éventuellement des réglages sur 195 le compte soudanais sans pour autant lire l'arabe. Il faudra par contre se 196 souvenir de revenir à l'arabe ensuite[^4]. 197 198 Pour masquer le compte `secours` on peut mettre SystemAccuont à false dans son 199 fichier `AccountsService` : 200 201 SystemAccount=false 202 203 Pour l'affaire du mot de passe lightdm se comporte agréablement bien. Si pas de 204 mot de passe alors la boite ne s'affiche pas, la seule option est de se 205 connecter et ça fonctionne ! 206 207 ### Installation des raccourcis de bureau 208 209 A la création d'un compte le système copie les fichiers trouvés dans 210 `/etc/skel` dans le home. On peut donc y précréer un dossier Desktop dans lequel on met les fichiers `.desktop` : 211 212 mkdir -p /etc/skel/Desktop 213 cp *.desktop /etc/skel/Desktop 214 215 Problème : cela ne fonctionne que pour les futurs comptes et ne permet pas 216 d'ajouter de nouveaux raccourcis. Il faut donc aussi : 217 218 for folder in $(find /home -maxdepth 2 -type d | grep -E "(Desktop|Bureau)$");do 219 cp *.desktop "$folder"/ 220 done 221 222 ### Installation de micro 223 224 Si l'on souhaite créer/modifier des raccourcis de bureau il est préférable 225 d'avoir un éditeur de texte terminal qui soit pas trop complexe. On peut 226 installer `micro` : 227 228 apt install micro 229 230 [^2]: Dans les fait je ne comprends pas bien comment cela fonctionne, je dois 231 parfois me logguer deux fois de suite pour que ça fonctionne. 232 [^1]: ou du moins je ne sais pas faire 233 [^3]: sur mon debian perso je n'avais pas de dossier et pour cause, je n'avais 234 pas le paquet accountsservice. Je n'ai pourtant pas le souvenir de l'avoir 235 installé à la main sur le debian du secours catholique. Pas grand, au pire 236 il faut l'installer. 237 [^4]: en modifiant le fichier dans `accountsservices` comme détaillé auparavant 238 ou en se déconnectant puis en modifiant la langue via l'écran de login en 239 haut à droite 240 [^5]: pour une raison que l'on verra ensuite en plus de rendre les comptes plus intelligibles à qui ne lit pas l'arabe. 241 [^6]: le secours *cath* lol