Introduction au système de configuration dconf
Dconf est le système de configuration de bas niveau utilisé par l’environnement de bureau GNOME. Il s’agit essentiellement d’une base de données, où les différentes configurations sont stockées sous forme de clés avec leurs valeurs. Les clés de la base de données peuvent être inspectées, modifiées ou vidées à l’aide de l’utilitaire dconf ou de l’outil graphique dconf-editor.
Dans ce tutoriel, nous voyons comment gérer les clés dconf, comment les sauvegarder et les restaurer et comment synchroniser l’état de la base de données avec un fichier de configuration.
Dans ce tutoriel, vous allez apprendre :
- Comment lister les clés dans la base de données dconf
- Comment lire la valeur d’une clé
- Comment changer la valeur d’une clé
- Comment sauvegarder et restaurer les clés dconf
- Comment gérer dconf avec l’interface graphique de dconf-editor
Liste des clés d’une base de données
Dans une base de données dconf, les clés sont organisées dans une structure « arborescente ». Du point de vue de l’utilisateur, les clés sont organisées dans des répertoires, la racine étant /. Pour lister le contenu d’un certain répertoire, nous pouvons utiliser l’utilitaire dconf avec la commande list, qui prend un répertoire comme argument. Pour lister le contenu du répertoire /, nous exécuterions :
dconf list /La commande renvoie le résultat suivant sur ma machine :
org/De la même manière, pour lister le contenu du répertoire /org/, nous exécuterions :
dconf list /org/
gnome/
gtk/Comme vous pouvez le remarquer dans l’exemple ci-dessus, le chemin du répertoire passé en argument à la commande « list » comprend une barre oblique de fin. Le premier répertoire renvoyé dans la sortie, gnome/, contient les clés liées à l’environnement de bureau GNOME, tandis que gtk/ contient les clés liées à la boîte à outils GTK (la boîte à outils graphique utilisée par GNOME) :
dconf list /org/gnome/
TextEditor/
calculator/
control-center/
desktop/
evolution-data-server/
login-screen/
nautilus/
nm-applet/
settings-daemon/
shell/
system/
terminal/Récupération de la valeur d’une clé
Pour récupérer la valeur d’une clé stockée dans la base de données dconf, nous pouvons utiliser la commande read de l’utilitaire dconf. Prenons un exemple. L’image utilisée comme fond d’écran de l’environnement de bureau GNOME est stockée dans la clé /org/gnome/desktop/background/picture-uri dans dconf. Pour lire la valeur de la clé, on passe son chemin (sans barre oblique de fin) en argument de la commande « read » :
dconf read /org/gnome/desktop/background/picture-uriLa commande renvoie la valeur de la clé, qui dans ce cas est :
'file:///home/egdoc/.local/share/backgrounds/2022-08-20-14-48-58-1.jpg'Changer la valeur d’une clé
Pour modifier la valeur d’une clé stockée dans la base de données dconf, nous utilisons la commande write et passons le chemin d’accès à la clé en premier argument, et la valeur que nous voulons lui attribuer, en tant que second. Supposons que nous voulions changer le fond d'écran utilisé par notre bureau GNOME, en utilisant un fichier avec l'URI suivant : 'file:///mnt/data/system/wallpapers/3.jpg'. Voici la commande que nous exécuterions :
dconf write /org/gnome/desktop/background/picture-uri "'file:///mnt/data/system/wallpapers/3.jpg'"Vous avez peut-être remarqué que dans l’exemple ci-dessus, nous avons utilisé des guillemets supplémentaires pour la chaîne qui indique le chemin de l’image à utiliser comme fond d’écran. En effet, la valeur d’une clé dconf doit être fournie au format GVariant.
Sauvegarde et restauration d’une base de données dconf
L’utilitaire dconf fournit certaines commandes qui peuvent être utilisées pour créer et restaurer une sauvegarde de l’état de toutes les clés contenues dans un certain répertoire de la base de données dconf. Il s’agit respectivement de dump et load.
La commande « dump » nous permet de vider le contenu que le répertoire a passé en argument. Par défaut, la sortie de la commande est envoyée à stdout, mais elle peut être facilement écrite dans un fichier à l’aide d’une redirection shell. Supposons que nous voulions sauvegarder le contenu de la base de données entière et le stocker dans le fichier dconf_backup.txt, nous exécuterions :
dconf dump / > dconf_backup.txtVoici un exemple de la façon dont le dump est organisé :
[org/gnome/TextEditor]
indent-style='space'
last-save-directory='file:///home/egdoc/Downloads'
show-line-numbers=true
spellcheck=false
tab-width=uint32 2
wrap-text=false
[...]La commande « load » effectue l’opération inverse, nous permettant de remplir la base de données dconf avec les valeurs lues à partir de son entrée standard. Il accepte le chemin d’accès du répertoire à restaurer comme seul argument. Pour restaurer la configuration que nous avons stockée dans le fichier dconf_backup.txt dans l’exemple précédent, nous exécuterions :
dconf load / < dconf_backup.txtSynchroniser l’installation de dconf avec un fichier de configuration
La stratégie que nous avons utilisée pour créer une sauvegarde dconf dans l’exemple précédent n’est pas très pratique : à chaque fois que nous effectuons une modification à notre configuration, nous devons recréer le dump à nouveau pour garder la « sauvegarde » à jour. Une autre stratégie consiste à garder la configuration de dconf synchronisée avec un fichier texte. Voici comment nous pouvons le mettre en œuvre.
La première chose à faire est d’ajouter la ligne service-db :keyfile/user au début du fichier /etc/dconf/profile/user, qui, après la modification, devrait ressembler à ceci :
service-db:keyfile/user
user-db:user
system-db:local
system-db:site
system-db:distroLa deuxième chose à faire, c’est de placer le fichier contenant la sauvegarde dconf que nous avons précédemment créée dans ~/.config/dconf/user.txt, ou de créer le dump directement à cette position :
dconf dump / > ~/.config/dconf/user.txtAvec cette stratégie, qui deviendra effective une fois que nous fermerons et ouvrirons une nouvelle session (généralement en nous déconnectant et en effectuant une nouvelle connexion), la configuration de dconf sera lue à partir du fichier susmentionné et les modifications que nous avons apportées aux clés de la base de données y seront automatiquement écrites. Cette configuration est particulièrement utile si nous voulons garder la configuration de dconf sous contrôle de version, comme
nous le faisons pour nos dotfiles, par exemple.
Gestion de dconf avec l’interface graphique dconf-editor
Jusqu’à présent, nous avons vu comment gérer les clés stockées dans la base de données dconf en utilisant l’utilitaire de ligne de commande dconf. Si nous préférons utiliser un outil graphique pour effectuer les mêmes opérations, nous pouvons utiliser dconf-editor, qui est inclus dans les dépôts de toutes les principales distributions Linux. Pour l’installer sur Fedora, nous exécutons :
sudo dnf install dconf-editorSur Debian et les distributions basées sur Debian, à la place :
sudo apt install dconf-editorLe paquet est inclus dans le dépôt « extra » d’Archlinux. Sur la distribution roulante, nous pouvons l’installer avec la commande suivante :
sudo pacman -Sy dconf-editorLa première fois que nous lançons l’application, nous sommes avertis de l’utiliser avec précaution :
Depuis l’interface de l’application, comme vous pouvez l’observer dans la capture d’écran ci-dessous, nous pouvons facilement naviguer dans les différents répertoires, modifier les valeurs clés et même mettre en signet les emplacements les plus fréquemment utilisés en cliquant sur le bouton « étoile », afin d’y accéder plus rapidement :
Conclusions
Dans cet article, nous avons vu comment gérer les paramètres et les options stockés dans la base de données dconf, qui est utilisée par l’environnement de bureau GNOME. Nous avons vu comment utiliser l’utilitaire de ligne de commande dconf pour lister les clés existantes, récupérer et modifier leurs valeurs et créer/restaurer une sauvegarde de la base de données dconf. Nous avons également vu comment garder l’état de dconf synchronisé avec un fichier de configuration textuel. Enfin, nous avons vu comment gérer la base de données dconf via l’application graphique dconf-editor.


