Des debian multi-utilisateurs et multi-langues


Tuto

Cette page détaille comment le tout fonctionne.

Pour le tuto voir ici.

Pour le code du script d’installation voir http://git.bebou.netlib.re/secours-catholique/log.html.
Je précise que ce script est un peu moche et très spécifique aus besoins de l’accueil de jour et du choix de la stack technique. Les locales sont en dur dedans, il est un peu fastidieux d’en rajouter. Si vous voulez l’utiliser je vous recommande de vous en inspirer ou en faire une version générique si vous savez faire.

Pourquoi

L’accueil de jour du Secours Catholique souhaitait s’équiper de quelques ordinateurs en accès libre pour les personnes exilées. Problème, les bénéficiaires parlent des langues différentes. Il faut donc un système permettant de changer relativement facilement de langue et de configuration de clavier.

Les outils

Pour faire simple et, on l’espère, stable, nous allons utiliser :

La configuration

Notre principal besoin est de pouvoir utiliser le système sous plusieurs langues. Or il semblerait qu’il ne soit pas possible1 de modifier la langue du système à la volée. Pour le faire nous allons créer autant de comptes que de langues nécessaires. Un compte pour l’arabe du Soudan, un compte pour l’arabe de Syrie, un compte pour le persan etc. Je suis au courant que les relations qui lient les pays et langues ne sont pas “Un pays = une langue” ou “une langue = un pays” mais du fait de contraintes qui seront exposée plus tard nous allons faire comme si c’était le cas.

Créer les locales

Les locales désignent un ensemble de configurations qui permettent au système ou aux outils à l’intérieur de se comporter en accord avec une langue et ses pratiques. Par exemple :

$ LC_ALL=fr_FR.utf8 date
mar. 11 févr. 2025 20:52:57 CET

$ LC_ALL=en_US.utf8 date
Tue Feb 11 08:54:02 PM CET 2025

Ces locales doivent être générées. Ca peut se faire à l’installation de debian mais aussi après coup. D’abord, décommenter les lignes pertinentes de /etc/locale.gen (ici exemple de l’arabe soudanais et syrien) :

sed -i.bak '/ar_SD/ s/^# //;\
            /ar_SY/ s/^# //;' /etc/locale.gen

Puis les générer

locale-gen

Changer de disposition de clavier

Il est possible de modifier son clavier, pour peu que l’on connaisse l’identifiant de la disposition de clavier voulue :

setxkbmap ara

Cela dit on veut pouvoir changer d’un clavier à un autre au sein d’une même session pour pouvoir taper des url ou des mot de passe par exemple. Pour cela pas d’autre choix que de le faire via l’UI de cinnamon.

Création des comptes

Pour créer le compte du soudan on peut faire :

adduser sudan

sauf que les personnes concernées ne savent pas toujours lire notre alphabet. Elles ne sauront donc pas choisir le bon utilisateur. On peut utiliser le nom arabe du Soudan avec l’option --allow-all-names et un marqueur en ascii2.

adduser --allow-all-names السُّودان

Puisque cela n’a pas vraiment de sens de mettre un nom et prénom etc on utilise --comment :

adduser --allow-all-names السُّودان

Et finalement puisque l’on ne veut pas de mot de passe on les supprime :

passwd -d ﺎﻠﺳُّﻭﺩﺎﻧ

A noter que créer le compte avec –disabled-password n’a pas l’effet escompté, lightdm demander toujours un mot de passe.

Configurer la langue

De l’environnement de bureau

Pour chaque compte il faut créer un fichier .xsessionrc qui déterminera la locale à la première connexion. Il sera toujours possible de la modifier en utilisant le menu en haut à droite de lightdm.

<<. cat > "$homefolder/.xsessionrc"
LC_ALL=$locale
export GDM_LANG=$locale
export LANG=$locale
.

Si vous suivez en lisant le script vous verrez qu’$homefolder est determiné à l’aide d’un grep sur la base des caractères ascii inclus dans le nom du compte. Cela permet de contourner les éventuels soucis d’encodage. En effet, lorsque l’on créer un compte en arabe :

adduser ar_sd_لهجة-سودانية

Puis que l’on tente de copier un truc dedans :

$ touch /home/ar_sd_لهجة-سودانية/test
Impossible de créer le fichier standard blablabla

Je ne connais pas la source exacte du bug mais je suppose que quelque part l’encodage du texte arabe doit varier d’une manière qui les deux occurences visiblement identifiques mais en fait deux châines différentes. Peut-être à la création du dossier par adduser, peut-être lors d’un copier-coller de ma part…

De firefox

Pour Firefox il faut installer les pack de langue correspondant. Dieu merci3 ils sont packagés :

apt install firefox-esr-l10n-id_langue

Configurer les claviers

dconf permet de lire et écrire la configuration des claviers sous cinnamon. Par exemple pour changer la priorité entre l’arabe et le français :

$ dconf read /org/gnome/libgnomekbd/keyboard/layouts
['fr','ara','ir','af\tps']
$ dconf write /org/gnome/libgnomekbd/keyboard/layouts ['ara','fr','ir','af\tps']

Ces commandes doivent être lancées sous le compte en question et après le lancement de la session graphique. Pour cela on créer un fichier desktop dans .config/autostart. Il s’exécutera automatiquement au lancement de la session. Il faut d’abord créer le dossier correspondant puis y mettre :

[Desktop Entry]
Type=Application
Name=keyboard
Exec=dconf write /org/gnome/libgnomekbd/keyboard/layouts "$layout"

Sans oublier de correctement configurer son propriétaire et les droits d’exécution

chmod +x "$homefolder/.config/autostart/keyboard.desktop"
chown -R "$username" "$homefolder"

Configuration du gestionnaire de sessions

Le besoin est :

La configuration se fait dans les fichiers /etc/lightdm/lightdm.conf et /etc/lightdm/lightdm-gtk-greeter.conf. Dans lightdm.conf il faudra décommenter la ligne :

#greeter-hide-users=false

pour que l’écran liste les différents comptes plutôt que d’avoir à les taper. C’est d’autant plus importants qu’ils contiennent des caractères de plusieurs alphabets différents. Il faudra ensuite ajouter la ligne suivante à lightdm-gtk-greeter.conf :

indicators = ~host;~spacer;~clock;~spacer;~layout;~language;~session;~a11y;~power

L’indicateur ~language permet notamment de régler la langue du compte qui est seléctionné4. Cela permet de se connecter et éventuellement des réglages sur le compte soudanais sans pour autant lire l’arabe. Il faudra par contre se souvenir de revenir à l’arabe ensuite5.

Pour masquer le compte secours on peut mettre SystemAccuont à false dans son fichier AccountsService :

SystemAccount=false

Pour l’affaire du mot de passe lightdm se comporte agréablement bien. Si pas de mot de passe alors la boite ne s’affiche pas, la seule option est de se connecter et ça fonctionne !

Installation des raccourcis de bureau

A la création d’un compte le système copie les fichiers trouvés dans /etc/skel dans le home. On peut donc y précréer un dossier Desktop dans lequel on met les fichiers .desktop :

mkdir -p /etc/skel/Desktop
cp *.desktop /etc/skel/Desktop

Problème : cela ne fonctionne que pour les futurs comptes et ne permet pas d’ajouter de nouveaux raccourcis. Il faut donc aussi :

for folder in $(find /home -maxdepth 2 -type d | grep -E "(Desktop|Bureau)$");do
    cp *.desktop "$folder"/
done

Installation de micro

Si l’on souhaite créer/modifier des raccourcis de bureau il est préférable d’avoir un éditeur de texte terminal qui soit pas trop complexe. On peut installer micro :

apt install micro

  1. ou du moins je ne sais pas faire 

  2. pour une raison que l’on verra ensuite en plus de rendre les comptes plus intelligibles à qui ne lit pas l’arabe. 

  3. le secours cath lol 

  4. Dans les fait je ne comprends pas bien comment cela fonctionne, je dois parfois me logguer deux fois de suite pour que ça fonctionne. 

  5. en modifiant le fichier dans accountsservices comme détaillé auparavant ou en se déconnectant puis en modifiant la langue via l’écran de login en haut à droite