Gconf, Dconf, Gsettings et la relation entre eux

65

J'essaie de comprendre comment Gconf, Dconf et Gsettings fonctionnent et quelle relation existe entre eux.

Tout ce que je sais c'est:

  • Gconf - Base de données XML (système backend). Le plus vieux.
  • Dconf - base de données BLOB (système backend). Le plus récent.
  • Gsettings - Outil CLI pour modifier les paramètres. On dirait que cela fonctionne uniquement avec Dconf (bien que j'ai vu quelque part que cela pourrait fonctionner avec Gconf).

Je sais que pour Gconf, il existe une interface graphique - Gconf-editor et pour Dconf - Dconf-editor.

Alors:

  1. Quel système backend est le plus souvent utilisé - Dconf ou Gconf?
  2. Gsettings fonctionne avec les deux? Et pourquoi ne montre-t-il pas tous les schémas Dconf?
  3. Où Dconf sauvegarde-t-il ses données?
idgar
la source
Je serais particulièrement intéressé par quels paramètres sont gérés par quel outil (dconf ou gsettings) et pourquoi il y a des différences?
Johsm

Réponses:

39

GConf est obsolète. Il s’agit de l’ancienne API et du système de configuration GNOME 2.x et a été remplacé par DConf / GSettings dans les versions les plus récentes. Cependant, certaines applications l'utilisent encore.

GSettings est une implémentation GLib de DConf, qui stocke ses données dans une base de données binaire.

L' gsettingsoutil de ligne de commande est simplement un outil permettant d'accéder aux paramètres ou de les modifier via l'API GSettings, de la même manière que l'ancien gconftooloutil de ligne de commande est destiné à GConf.

Dobey
la source
1
GSettings fonctionne-t-il également avec GConf?
Idgar
3
Non, GSettings est une implémentation de la spécification DConf. L'outil de ligne de commande ne fonctionne pas avec gconf. Il existe cependant certaines couches de compatibilité actuellement utilisées sous Ubuntu, dans lesquelles la modification d'un paramètre dans gsettings ou gconf entraîne la propagation de la modification à l'autre. Ce n'est pas commun cependant, et pas quelque chose à compter.
Dobey
autre chose, j’ai vu quelque part que GSettings fonctionne avec des fichiers de configuration. y a-t-il quelque chose à ce sujet? et pourquoi GSettings ne montre-t-il pas les mêmes schémas que DConf-editor?
Idgar
1
La partie intéressante à savoir serait quels paramètres sont gérés par quel outil? Les clés présentes lors de l'utilisation de dconf ou de dconf-editor sont différentes de celles accessibles avec gsettings. Par exemple, il existe une clé / com / canonical / unity / always-show-menus accessible via dconf, mais aucune clé équivalente n'est accessible via gsettings. dans Ubuntu 15.04.
Johsm
1
@ Dobey: merci de votre aide. Ce que je cherche vraiment, c’est cependant: comment fonctionne le mappage entre la clé que j’ai besoin d’utiliser dans dconf et celle que je dois utiliser avec gsettings? Si j'en connais un, existe-t-il un moyen algorithmique de trouver l'autre? Dans mon cas concret, on m'a donné / com / canonical / unit / always-show-menus - maintenant, comment pourrais-je trouver la clé appropriée pour gsettings? Si les deux utilisent les mêmes données sous-jacentes, ne devrait-il pas y avoir de mappage logique? Ou est-ce que je manque encore quelque chose?
Johsm
43

Dconf est un magasin de données conçu pour stocker la configuration. C'est le remplacement de Gconf , qui était utilisé dans le même but. Finalement, aucun programme ne devrait plus dépendre de Gconf.

Gsettings est une bibliothèque de développement utilisée pour lire et écrire dans un backend de magasin de configuration. Sous Linux, il utilise Dconf, mais sous Windows, il utilise le registre et, sous OS X, il utilise un magasin de données natif.

Il est recommandé aux développeurs d'applications et aux utilisateurs finaux d'utiliser Gsettings, pas directement Dconf.

Voir également:

Flimm
la source