# GConf

GConf ist ein von der Desktop-Umgebung Gnome verwendetes System zur Speicherung von Konfigurationseinstellungen des Desktops und der GNOME-Anwendungen. Mit der Veröffentlichung von Version 3 der Desktop-Umgebung gilt es als veraltet und wird nach und nach durch das neu eingeführte dconf/GSettings ersetzt. Dieser Prozess dauert Stand Mai 2024 weiterhin an. Beispielsweise wurde GConf bis Februar 2024 noch von Red Hat Enterprise Linux eingesetzt.

## Vorgehensweise

Änderungen an den Einstellungen werden durch den Daemon gconfd vorgenommen. gconfd überwacht die Datenbank auf Änderungen und wendet neue Einstellungen auf alle Anwendungen an, die diese benutzen. Diese Technik ist auch als „auto apply“ (automatisches Anwenden) bekannt im Gegensatz zu „explicit apply“, bei dem Änderungen erst übernommen werden, wenn der Benutzer auf „OK“ oder „Anwenden“ klickt. Auch der Ausdruck „instant apply“ (sofortiges Anwenden) wird manchmal verwendet.
Die Datenbank von GConf setzt standardmäßig eine Verzeichnisstruktur mit XML-Dateien ein, die im Verzeichnis ~/.gconf gespeichert wird. GConf kann auch andere Backends, beispielsweise einen Datenbankserver, verwenden, die Speicherung in XML-Dateien ist jedoch die am häufigsten eingesetzte Konfiguration.
Die Anwendung gconf-editor ermöglicht es Benutzern Einstellungen manuell zu ändern, sie wird in der Regel jedoch nicht von Endbenutzern verwendet, um Benutzereinstellungen festzulegen. Diese sollten von der Anwendung selbst verwaltet werden.

## Architektur

GConf basiert auf der ORBit genannten C-Implementierung von CORBA. Die Software besteht aus einem Sitzungsdaemon, der verschiedene Quellen für Konfigurationsschemata beim Anmelden des Benutzers initialisiert. Jede Quelle basiert auf einem bestimmten Backend, das die Schlüssel-Werte-Paare der Konfigurationsdatenbank bereitstellt. Standardmäßig basiert das Backend auf XML. Momentan ist dies das einzige funktionierende Backend für GConf, daneben existiert nur noch ein LDAP-Backend im frühen Entwicklungsstadium. Jede Quelle kann auch im schreibgeschützten Modus betrieben werden, um zum Beispiel in Firmennetzwerken eine Basiskonfiguration bereitzustellen.
Die Werte in der GConf-Datenbank werden über einen Pfad der Form /pfad/zum/anwendungsschluessel angesprochen.
Um auf die durch den GConf-Daemon verwaltete GConf-Datenbank zuzugreifen, sollte eine auf GConfClient-basierende GObject-Klasse verwendet werden.

## Weitergabe der Änderungen

Eine Anwendung, die GConf verwendet, sollte nicht durch Polling die Datenbank abfragen, sondern eine Rückruffunktion (Callback) für den gewünschten Schlüssel anmelden, was dem Model-View-Controller-Paradigma entspricht. Jedes Mal, wenn eine Anwendung den an diesen Schlüssel gebundenen Wert ändert, werden die Rückruffunktionen aufgerufen.

## Schemata

Eine Anwendung, die GConf verwendet, sollte zu jedem Schlüssel, den sie innerhalb der GConf-Datenbank anlegt eine Beschreibung bereitstellen. Diese 'Schema' genannten Konfigurationsmetadaten werden ebenfalls in der Konfigurationsdatenbank abgelegt. Das Schema sollte einen (möglichst lokalisierten) beschreibenden Text, einen gültigen Wertetyp und eine Voreinstellung enthalten.

## Schnittstellen

Wie viele Bibliotheken der GNOME-Plattform kann auch auf GConf in verschiedenen Programmiersprachen wie beispielsweise C, C++, Perl, Java und Python zugegriffen werden.
Im Normalfall wird die GConf nicht direkt vom Endanwender editiert. Der Zugriff erfolgt indirekt über das jeweilige Programm, das seine Einstellungen hinterlegt. Bestimmte Zusatzoptionen sind allerdings nicht über ein graphisches Interface konfigurierbar und lassen sich ausschließlich in der Registry setzen. Dem Entwickler und fortgeschrittenen Anwender stehen hierzu Werkzeuge wie das Kommandozeilenprogramm gconftool oder das graphische Tool gconf-editor zur Verfügung.