Ignorer GConf ici parce qu'il est obsolète. TLDR : utiliser gsettings
.
dconf
ne connaît pas les schémas et ne tient donc pas compte des valeurs par défaut.
de man dconf
(1) :
Le programme dconf peut effectuer diverses opérations sur une base de données dconf, comme lire ou écrire des valeurs individuelles ou des répertoires entiers. Cet outil opère directement sur dconf, sans utiliser les informations du schéma de gsettings. Par conséquent, il ne peut pas effectuer de contrôles de type et de cohérence sur les valeurs. L'utilitaire gsettings(1) est une alternative si de tels contrôles sont nécessaires.
Je ne me soucie pas tellement des "contrôles de type et de cohérence".
Dans la pratique, je vois une différence plus importante - dconf
ne voit que les paramètres que j'ai explicitement définis. Exemple de paramètres non modifiés :
> gsettings list-recursively org.gnome.desktop.interface | grep scaling
org.gnome.desktop.interface text-scaling-factor 1.0
org.gnome.desktop.interface scaling-factor uint32 0
> gsettings list-schemas --print-paths | grep org.gnome.desktop.interface
org.gnome.desktop.interface /org/gnome/desktop/interface/
> dconf dump /org/gnome/desktop/interface/ | grep scaling
> dconf list /org/gnome/desktop/interface/ | grep scaling
> dconf read /org/gnome/desktop/interface/text-scaling-factor
> dconf read -d /org/gnome/desktop/interface/text-scaling-factor
>
Aquí dconf read -d
prétend qu'il lit les valeurs par défaut, mais en pratique ne fait rien pour moi ?
Je peux toujours l'écrire (aveuglément), même si c'est à la même valeur 1.0 que la valeur par défaut et ensuite dconf le voit :
> dconf write /org/gnome/desktop/interface/text-scaling-factor 1.0
> dconf dump /org/gnome/desktop/interface/ | grep scaling-factor
text-scaling-factor=1.0
> dconf read /org/gnome/desktop/interface/text-scaling-factor
1.0
> dconf read -d /org/gnome/desktop/interface/text-scaling-factor
>
De plus, je peux stocker n'importe quelle clé que j'invente ! Donc, ça fonctionne comme un stupide table de hachage de valeurs fixées explicitement, et reset
supprime simplement l'entrée :
> dconf write /org/gnome/desktop/interface/foo 123
> dconf dump /org/gnome/desktop/interface/ | grep foo
foo=123
> dconf reset /org/gnome/desktop/interface/foo
> dconf dump /org/gnome/desktop/interface/ | grep foo
>
gsettings
utilise les données du schéma
C'est logique. J'ai utilisé locate --regexp org.gnome.desktop.interface
et j'ai obtenu un couple de fichiers xml (peut-être pas le site droite), et les fichiers de schéma contiennent bien la valeur par défaut :
<key name="text-scaling-factor" type="d">
<range min="0.5" max="3.0"/>
<default>1.0</default>
<summary>Text scaling factor</summary>
<description>
Factor used to enlarge or reduce text display, without c>
</description>
</key>
Alors gsettings
combine les valeurs effectivement définies avec les valeurs par défaut.
C'est pourquoi, au lieu d'un seul chemin, il prend deux arguments, par exemple. gsettings read _SCHEMA[:PATH]_ _KEY_
- car il part du schéma, le fait correspondre au chemin dconf (cf. gsettings list-schemas --print-paths
mais prend le PATH optionnel pour les schémas relocalisables), et ensuite superpose les valeurs modifiées de dconf.
Il peut également fournir des informations sur le schéma :
> gsettings describe org.gnome.desktop.interface text-scaling-factor
Factor used to enlarge or reduce text display, without changing font size.
mais, de manière quelque peu décevante, je ne vois aucun moyen de lire simplement la valeur par défaut (si une valeur est définie), ni de distinguer si un paramètre est laissé par défaut ou explicitement défini à la même valeur.
dconf-editor
utilise également les données du schéma
Malgré son nom, dconf-editor montre les paramètres modifiés et par défaut, y compris ceux qui sont par défaut et ceux qui sont explicitement définis :
et est pleinement conscient des informations sur les schémas :