This is an old revision of the document!
Configuration Storage System
Xfconf is a hierarchical (tree-like) configuration system where the immediate child nodes of the root are called “channels”. All settings beneath the channel nodes are called “properties.”
Valid channel and property names are composed of the ASCII US-English uppercase characters A-Z, lowercase characters a-z, numerals 0-9, the dash (-), and underscore (_). No other characters are allowed for channel names. The less than (<) and greater than (>) characters (aka “angle brackets”) are also allowed in property names, but not in channel names.
Property names are referenced by their “full path” underneath their channel, for example: “/main/history-window/last-accessed”. Of course, when querying a particular property, the channel must be specified separately as well.
Both channel and property names are case-insensitive. For example, the following four all refer to the same property:
- Channel: ExampleApp, property: /main/history-window/last-accessed
- Channel: EXAMPLEAPP, property: /main/history-window/last-accessed
- Channel: ExampleApp, property: /Main/History-Window/Last-Accessed
- Channel: exampleapp, property: /MAIN/history-window/last-accessed
The Xfconf daemon supports a so-called “kiosk mode” or “lockdown mode” such that certain configuration properties or certain channels can be locked from user modification. In this case, the locked values are provided by a system administrator in the form of a settings file (in the same format as the user's settings files) in a system read-only location.
XML Markup (DTD)
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT channel property*> <!ELEMENT property (property|value)*> <!-- <value> elems only allowed if type="array" --> <!ELEMENT value EMPTY> <!ATTLIST channel name CDATA #REQUIRED> <!ATTLIST channel version CDATA #REQUIRED> <!-- currently "1.0" --> <!ATTLIST channel locked CDATA #IMPLIED> <!-- only one of these --> <!ATTLIST channel unlocked CDATA #IMPLIED> <!-- two are allowed --> <!ATTLIST property name CDATA #REQUIRED> <!ATTLIST property type (string|uchar|char|uint16|int16|uint|int|uint64|int64|float|double|bool|array|empty) #REQUIRED> <!ATTLIST property value CDATA #IMPLIED> <!-- not used if type="array" or type="empty" --> <!ATTLIST property locked CDATA #IMPLIED> <!-- only one of these --> <!ATTLIST property unlocked CDATA #IMPLIED> <!-- two are allowed --> <!ATTLIST value type (string|uchar|char|uint16|int16|uint|int|uint64|int64|float|double|bool) #REQUIRED> <!ATTLIST value value CDATA #REQUIRED>