Gconf, Dconf, Gsettings und die Beziehung zwischen ihnen

65

Ich versuche zu verstehen, wie Gconf, Dconf und Gsettings funktionieren und wie die Beziehung zwischen ihnen ist.

Alles was ich weiß ist:

  • Gconf - XML-basierte Datenbank (Backend-System). Der ältere.
  • Dconf - BLOB-basierte Datenbank (Backend-System). Der neuere.
  • Gsettings - CLI-Tool zum Bearbeiten von Einstellungen. Sieht so aus, als würde es nur mit Dconf funktionieren (obwohl ich irgendwo gesehen habe, dass es mit Gconf funktionieren könnte).

Ich weiß, dass es für Gconf einen GUI - Gconf-Editor und für Dconf - Dconf-Editor gibt.

Damit:

  1. Welches Backend-System wird am häufigsten verwendet - Dconf oder Gconf?
  2. Gsettings funktioniert mit beiden? Und warum werden nicht alle Dconf-Schemata angezeigt?
  3. Wo speichert Dconf seine Daten?
idgar
quelle
Mich würde besonders interessieren, welche Einstellungen von welchem ​​Tool vorgenommen werden (dconf oder gsettings) und warum gibt es Unterschiede?
Johsm

Antworten:

39

GConf ist veraltet. Es ist das ältere GNOME 2.x-Konfigurations-API und -System und wurde in neueren Versionen durch DConf / GSettings ersetzt. Einige Anwendungen verwenden es jedoch weiterhin.

GSettings ist eine GLib-Implementierung von DConf, die ihre Daten in einer Binärdatenbank speichert.

Das gsettingsBefehlszeilentool ist einfach ein Tool zum Zugreifen auf oder Ändern von Einstellungen über die GSettings-API, genau wie das ältere gconftoolBefehlszeilentool für GConf.

dobey
quelle
1
Funktioniert GSettings auch mit GConf?
Idgar
3
Nein, GSettings ist eine Implementierung der DConf-Spezifikation. Das Kommandozeilen-Tool funktioniert nicht mit gconf. Es gibt jedoch einige Kompatibilitätsebenen, die derzeit unter Ubuntu verwendet werden. Wenn Sie eine Einstellung in gsettings oder gconf ändern, wird die Änderung auf die andere übertragen. Dies ist jedoch nicht üblich und nichts, worauf man sich verlassen kann.
Dobey
Eine andere Sache, ich habe irgendwo gesehen, dass GSettings mit Konfigurationsdateien arbeitet. Gibt es etwas dagegen? und warum zeigt GSettings nicht die gleichen Schemata wie DConf-editor an?
idgar
1
Der interessante Teil zu wissen wäre, welche Einstellungen von welchem ​​Tool verwaltet werden? Die Tasten, die bei Verwendung von dconf oder dconf-editor vorhanden sind, unterscheiden sich von denen, auf die mit gsettings zugegriffen werden kann. Beispielsweise gibt es eine Taste / com / canonical / unity / always-show-Menüs, auf die über dconf zugegriffen werden kann, aber keine entsprechende Taste, die über gsettings zugegriffen werden kann in Ubuntu 15.04.
Johsm
1
@dobey: danke, dass du dabei hilfst. Was ich wirklich danach bin, ist jedoch: Wie funktioniert die Zuordnung zwischen dem Schlüssel, den ich in dconf verwenden muss, und dem Schlüssel, den ich mit gsettings verwenden muss? Wenn ich einen kenne, gibt es einen algorithmischen Weg, um den anderen zu finden? In meinem konkreten Fall bekam ich / com / canonical / unity / always-show-menus - wie finde ich nun den passenden Schlüssel für gsettings? Sollte es keine logische Zuordnung geben, wenn beide dieselben zugrunde liegenden Daten verwenden? Oder fehle ich noch etwas?
Johsm
43

Dconf ist ein Datenspeicher zum Speichern von Konfigurationen. Es ist der Ersatz für Gconf , der für den gleichen Zweck verwendet wurde. Schließlich sollten keine Programme mehr von Gconf abhängen.

Gsettings ist eine Entwicklungsbibliothek, die zum Lesen und Schreiben in ein Konfigurationsspeicher-Backend verwendet wird. Unter Linux wird Dconf verwendet, unter Windows die Registrierung und unter OS X ein systemeigener Datenspeicher.

Anwendungsentwicklern und Endbenutzern wird empfohlen, Gsettings und nicht Dconf direkt zu verwenden.

Siehe auch:

Flimm
quelle