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 :
- OS : debian pour sa stabilité et son ubiquité
- Environnement de bureau : cinnamon pour sa ressemblence à windows
- Gestionnaire de session : lightdm parce que c’est le défaut de debian
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 :
- Pouvoir choisir un compte dans une liste de pays/langues
- Ne pas avoir à entrer de mot de passe
- Avoir un second moyen d’identifier le pays/langues
- Masquer le compte “d’admin” secours
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
-
ou du moins je ne sais pas faire ↩
-
pour une raison que l’on verra ensuite en plus de rendre les comptes plus intelligibles à qui ne lit pas l’arabe. ↩
-
le secours cath lol ↩
-
Dans les fait je ne comprends pas bien comment cela fonctionne, je dois parfois me logguer deux fois de suite pour que ça fonctionne. ↩
-
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 ↩