GConf
|
GConf is a system used by the GNOME desktop environment for storing configuration settings for the desktop and applications. Changes to this system are controlled by GConfd, a daemon. GConfd watches out for changes to the database, and when they are changed, it applies the new settings to applications using it. This technology is known as "auto-apply", compared to "explicit-apply", which requires users to press an OK or Apply button to make changes come into effect.
The GConf database by default uses a system of directories and XML files, stored in a directory called ~/.gconf
. GConf can also use other backends, such as a database server, but XML file storage is the most common configuration.
The application Gconf-editor is provided to allow users to change settings manually, but it is not usually used for end user preferences. These should be provided by the application, but hasn't in some cases, causing upset among users. (see man gconf-editor article for details)
Contents |
Architecture
GConf is currently based on the C implementation of CORBA named ORBit. Its architecture consists of a session daemon that initializes various sources of configuration schemas on user login. Each source is based on a specific backend that translates the key and value pairs that compose the configuration database; the default backend is based on XML (at this moment, is the only working backend for GConf, even though a LDAP backend existed in embrionic form). Each source can also be set to read-only, in order to create a default basic configuration, e.g. in a corporate network.
The values inside the GConf database are indexed using a path string in the form of /path/to/application/key
.
The proper way to access the GConf database held by the GConf daemon is to use the GConfClient GObject-based class.
Changes notification
When writing an application that uses GConf, one should never directly poll the database. Instead, one should attach a callback to a given key, thus using a Model-view-controller paradigm. Each time an application changes the value bound to a specific key, the notification callbacks will be invoked.
Schemas
An application using GConf should provide a description for each key it creates inside the GConf database. This configuration meta-data is also stored inside the configuration database, and is called a schema; it could contain a (possibly localized) descriptive text, the valid type of the value bound to a key, and a default value.
Bindings
Like many libraries in the Gnome platform, GConf can be accessed using various programming languages, such as C, C++, Perl, Java, Python.
Weblinks
- GConf Project Page (http://www.gnome.org/projects/gconf/index.html)
- Official GConf Manual (http://developer.gnome.org/doc/API/gconf)
- Future GConf Plans (http://www.gnome.org/projects/gconf/plans.html)
- D-Bus enabled GConf Wiki (http://freax.be/wiki/index.php/GConf3)
- Gnome2::GConf Perl Module (http://gtk2-perl.sourceforge.net/doc/pod/Gnome2/GConf.html)