En mode graphique, on peut modifier la base de registre utilisateur via dconf-editor, sympathique utilitaire graphique, qui permet de modifier des clés/valeurs en un tour de main, tant qu'on reste dans sa session graphique.
En console : on peut utiliser dconf ou gsettings dans un terminal pour lire/écrire les clés/valeurs dans la base de registre. On peut également utiliser systemd pour appeler un script SHELL au démarrage des sessions graphiques, lequel va fixer des réglages communs pour tous les usagers (ce que nous utilisons déjà via notre script maison en réunion informatisée pour info...).
En SSH, si root veut modifier les clés/valeurs pour un utilisateur, il faut faire appel à dbus, sinon ça ne marche pas.
Prenons un simple exemple pour bien illustrer le problème :
Code : Tout sélectionner
su - toto -c "gsettings list-recursively"
Jusque là, tout va bien.
Si maintenant vous voulez changer une clé existante (on ne parle même pas ici d'en créer une nouvelle), vous vous dites qu'il suffit d'un :
Code : Tout sélectionner
su - toto -c "gsettings set org.gnome.Vinagre always-show-tabs true"
On se dit alors que la modification de la base n'est finalement possible qu'en session graphique.
Heureusement, ce n'est pas le cas, et après plusieurs heures passées sur le problème, la solution est :
Code : Tout sélectionner
sudo -H -u toto dbus-run-session gsettings set org.gnome.Vinagre always-show-tabs true
Code : Tout sélectionner
su - toto -c "dbus-run-session gsettings set org.gnome.Vinagre always-show-tabs true"
À noter que les changements ne sont pris en compte que lorsque l'usager rouvrira sa session.
La base dconf n'est lue qu'au démarrage de la session, ce qui est plutôt logique dans la pratique.