arthur.bebou

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