Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  





2 Software architecture  



2.1  dconf database  





2.2  GVariant  





2.3  GSettings  







3 Documentation  





4 History  



4.1  Release history  







5 References  





6 External links  














dconf






Español
Français
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


dconf
Developer(s)The GNOME Project (Allison Lortie)
Initial releaseSeptember 16, 2009; 14 years ago (2009-09-16)
Stable release

0.40.0[1] Edit this on Wikidata / 13 March 2021; 3 years ago (13 March 2021)

Repository
Written inC
TypeConfiguration, settings management
LicenseGNU Lesser General Public License
Websitewiki.gnome.org/Projects/dconf
GNOME Tweak Tool gives access to a certain popular subset of the desktop settings.

dconf is a low-level configuration system and settings management tool. Its main purpose is to provide a back endtoGSettings on platforms that don't already have configuration storage systems. It depends on GLib. It is part of GNOME as of version 3, and is a replacement for GConf.

Overview

[edit]

dconf is a simple key-based configuration system. Keys exist in an unstructured database (but it is intended that keys that logically belong together are grouped together).

Change notification is supported.

Stacking of multiple configuration sources is supported. Mandatory keys are supported.

The stacking can be done at "mount points". For example, the global system configuration can be mounted under /system/ inside of each user's configuration space. A single configuration source may appear at multiple points in the hierarchy. For example, in addition to stacking over the normal keys at /user/, the system default keys may also appear at /default/ for inspection and modification by a system policy configuration utility.

PolicyKit integration is planned so that a normal user may temporarily gain the ability to, for example, write to the keys under /system/ (or/default/). This means that programs like the GNOME Display Manager configuration utility no longer have to be run as root.

dconf is loosely the GNOME equivalent of the Windows Registry.

Software architecture

[edit]

Since a typical GNOME login consists of thousands of reads and ideally 0 writes, dconf is optimized for reads. Typically, reading a key from dconf involves zero system calls and zero context switches. This is achieved with a simple file format that doubles both as the storage format for data in dconf and as an IPC mechanism between the clients and the server.

Avoiding round trips and context switches is desirable in itself, but the real advantage[citation needed] comes from allowing the I/O scheduler in the kernel to do a better job by saturating it with requests coming from all of the applications trying to read their keys (as opposed to a common configuration server serially requesting a single key at a time).

Having all of the keys in a single compact binary format also avoids the intense fragmentation problems currently experienced by the tree-of-directories-of-xml-files approach.

dconf Architecture
dconf Architecture

Writes are less optimized – they traverse the bus and are handled by a "writer" – aD-Bus service – in the ordinary way. Change notification is also handled by the writer. The reason for having a bus service at all is that because getting the clients to synchronize on writing would be very difficult.[citation needed]

The writer service doesn't have to be activated until the first write operation is performed.

The service is completely stateless and can start and stop dynamically. The list of change notifications that an individual client is interested in is maintained by the bus daemon (as a D-Bus signal watch/match list).

dconf database

[edit]

One dconf database consists of a single file in binary format, i.e. it is not a text-file. The format is defined as gvdb (GVariant Database file). It is a simple database file format that stores a mapping from strings to GVariant values in a way that is extremely efficient for lookups.

The GNOME database file for each user is by default ~/.config/dconf/user, a file expected to be in GVDB format.

GVariant

[edit]

GVariant is a strongly typed variant datatype used for all the values stored in dconf; it can contain one or more values along with information about the type of the values.

A GVariant may contain simple types, like integers, or boolean values; or complex types, like an array of two strings, or a dictionary of key value pairs. A GVariant is also immutable: once it's been created, neither its type nor its content can be modified further. GVariant is useful whenever data needs to be serialized, for example when sending method parameters in DBus, or when saving settings using GSettings.

GVariant is part of GLib.

GSettings

[edit]

The GSettings class provides a high-level API for application for storing and retrieving their own settings.

The utility program /usr/bin/gsettings is contained in libglib2.0-bin.

GSettings is part of GIO.[2] which is part of GLib. libglib2.0-0

Documentation

[edit]

A system administrators guide for dconf is available. Since version 0.2, dconf is licensed under the LGPL version 2.1 "or later".

History

[edit]

Release history

[edit]
Version Release date Significant changes
0.1 2009-09-18
0.2 2009-10-27
0.3 2010-05-25
0.4 2010-07-12
0.5 2010-09-15
0.6 2010-12-21
0.7 2011-05-09
0.8 2011-07-26
0.9 2011-09-19
0.10 2011-09-26
0.11 2012-03-19
0.12 2012-05-01
0.13 2012-08-20
0.14 2012-11-01
0.15 2013-02-11
0.16 2013-07-16
0.17 2013-09-16
0.18 2013-09-23
0.19 2014-03-17
0.20 2014-03-24 dconf compile: always write little endian
0.21 2014-07-22
0.22 2014-09-19
0.23 2015-03-16 split dconf-editor into a separate package
0.24 2015-03-23
0.25 2015-12-16
0.26 2016-03-23 libdbus-1 back-end removed; dconf now always uses GDBus
0.27 2017-10-17 Port to Meson build system (#784910)

References

[edit]
  1. ^ "Release 0.40.0". 13 March 2021. Retrieved 10 April 2021.
  • ^ "gio/gsettings.c · master · GNOME / GLib". GitLab. Retrieved 22 April 2018.[permanent dead link]
  • [edit]
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Dconf&oldid=1203449233"

    Categories: 
    Configuration management
    GNOME
    Software that uses Meson
    Hidden categories: 
    All articles with dead external links
    Articles with dead external links from March 2023
    Articles with permanently dead external links
    Articles with short description
    Short description matches Wikidata
    All articles with unsourced statements
    Articles with unsourced statements from April 2013
     



    This page was last edited on 4 February 2024, at 22:35 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki