# GConf

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/GConf
> Markdown URL: https://mediated.wiki/source/GConf.md
> Source: https://en.wikipedia.org/wiki/GConf
> Source revision: 1258276162
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{Short description|Software}}
{{distinguish|text = gpgconf, the configuration utility of [GPG](/source/GNU_Privacy_Guard)}}
{{Infobox software
| name                   = GConf
| logo                   = Gconf-editor logo.png
| screenshot             = GConf 3.0.1.png
| caption                = ''obsolete:'' GConf editor
| collapsible            = 
| author                 = 
| developer              = Havoc Pennington
| released               = <!-- {{start date|YYYY|MM|DD}} -->
| discontinued           = yes
| latest release version = 3.2.6
| latest release date    = {{Start date and age|2013|01|22}}
| latest preview version = 
| latest preview date    = <!-- {{start date and age|YYYY|MM|DD}} -->
| programming language   = [C](/source/C_(programming_language))
| operating system       = 
| platform               = 
| size                   = 
| language               = 
| genre                  = Configuration
| license                = [GNU Lesser General Public License](/source/GNU_Lesser_General_Public_License)
}}
'''GConf''' was a system used by the [GNOME](/source/GNOME) desktop environment for storing [configuration](/source/computer_configuration) settings for the desktop and [applications](/source/List_of_GNOME_applications). It is similar to the [Windows Registry](/source/Windows_Registry). 

It was [deprecated](/source/deprecation) as part of the [GNOME 3](/source/GNOME_3) transition. Migration to its replacement, [GSettings](/source/dconf) and [dconf](/source/dconf), is ongoing.<ref>{{cite web|url=https://wiki.gnome.org/Initiatives/GnomeGoals/GSettingsMigration|title=GNOME Goal: Gconf to GSettings migration|publisher=GNOME|accessdate=2014-11-05}}</ref>

Changes to this system are controlled by GConfd, a [daemon](/source/daemon_(computer_software)). GConfd watches out for changes to the [database](/source/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 term "instant-apply" is sometimes used, compared to plain "apply".

The GConf database by default uses a system of [directories](/source/directory_(file_systems)) and [XML](/source/XML) files, stored in a directory called <code>~/.gconf</code>. GConf can also use other backends, such as a database [server](/source/Server_(computing)), but XML file storage is the most common configuration.

The application [gconf-editor](/source/gconf-editor) is provided to allow users to change settings manually, but it is not normally used for [end-user](/source/end-user) preferences.

==Architecture==
'''GConf''' is currently based on the [C](/source/C_(programming_language)) implementation of [CORBA](/source/CORBA) named ORBit. Its architecture consists of a session daemon that initializes various sources of configuration [schemas](/source/Database_schema) on user login. Each source is based on a specific [backend](/source/Front_and_back_ends) that translates the key and value pairs that compose the configuration [database](/source/database); the default backend is based on [XML](/source/XML). At this time, this is the only working backend for GConf, although an [LDAP](/source/Lightweight_Directory_Access_Protocol) backend existed in embryonic form. Each source can also be set to read-only, in order to create a default basic configuration, e.g. in a corporate [network](/source/Computer_network).

The values inside the GConf database are indexed using a [path](/source/Path_(computing)) string in the form of <code>/path/to/application/key</code>.

The proper way to access the GConf database held by the GConf daemon is to use the [GConfClient](/source/GConfClient) [GObject](/source/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](/source/Callback_(computer_science)) to a given key, thus using a [model-view-controller](/source/model-view-controller) (MVC) 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](/source/software_localization)) descriptive text, the valid type of the value bound to a key, and a default value.

==Bindings==
Like many libraries in the [GNOME](/source/GNOME) platform, '''GConf''' can be accessed using various programming languages, such as
C, [C++](/source/C%2B%2B), [Perl](/source/Perl), [Java](/source/Java_(programming_language)), C#, VB.NET and [Python](/source/Python_(programming_language)).

==References==
{{Reflist}}

==External links==
{{Portal|Free and open-source software}}
* {{webarchive|url=https://web.archive.org/web/20200101133032/https://projects-old.gnome.org/gconf/|title=GConf configuration system}}
* {{webarchive|url=https://web.archive.org/web/20200101133028/https://projects-old.gnome.org/gconf/plans.html|title=Future GConf Plans}}
* [https://gtk2-perl.sourceforge.net/doc/pod/Gnome2/GConf.html Gnome2::GConf Perl Module]
* {{webarchive|url=https://web.archive.org/web/20200101133026/https://www.florian-diesch.de/software/easygconf/|title=easygconf Python Module}}

{{GNOME}}

Category:Free system software
Category:GNOME obsolete

---
Adapted from the Wikipedia article [GConf](https://en.wikipedia.org/wiki/GConf) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/GConf?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
