GConf is a system for storing application preferences that simplifies the administration of user preferences. GConf lets system administrators do the following:
GConf also notifies applications when a preference value changes, locally or across a network. Therefore, when you change a preference, all applications that use the preference are immediately updated.
GConf provides a preferences database, similar to a simple file system. The file system contains keys organized into a hierarchy. Each key is either a directory containing more keys or it has a value. For example, the key /apps/metacity/general/titlebar_font contains an integer value giving the size of the titlebar font for the Metacity window manager.
GConf has the following components:
Each preference in the GConf repository is expressed as a key-value pair. A GConf preference key is an element in the repository that corresponds to an application preference. For example, the /apps/gnome-session/options/show_splash_screen preference key corresponds to the Show Splash Screen on Login option in the Sessions preference tool. The GNOME Desktop user interface does not contain all of the preference keys in the GConf repository. For example, the Panel preference tool does not contain an option that corresponds to the /apps/panel/global/tooltips_enabled key.
The repository is structured like a simple hierarchical file system. The repository contains the following:
Preference keys typically have simple values such as strings, integers, or lists of strings and integers. The format of the preference key in the repository depends on the backend module that is used to read the repository. The following is an example of the /desktop/gnome/interface/font_name preference key when an Extensible Markup Language (XML) backend module is used to read the repository:
<entry name=”font_name” mtime=”1038323555” muser=”user123” type=”string”> <stringvalue>Sans 10</stringvalue> </entry>
NOTE:When this guide refers to a preference key, the path to the key is added to the name of the key. For example, the font_name preference key in the /desktop/gnome/interface subdirectory is referred to as /desktop/gnome/interface/font_name.
The GConf repository contains a series of storage locations that are called configuration sources. The configuration sources are listed in the /etc/opt/gnome/opt/gnome/gconf/ gconf-version-number/ path GConf path file. Each user has a path file. The path file specifies the following information for each configuration source:
The GConf path file also contains include instructions. By default, the contents of the GConf path file are as follows:
xml:readonly:/etc/opt/gnome/opt/gnome/gconf/gconf.xml.mandatory include /etc/opt/gnome/opt/gnome/gconf/2/local-mandatory.path include “$(HOME)/.gconf.path” include /etc/opt/gnome/opt/gnome/gconf/2/local-defaults.path xml:readwrite:$(HOME)/.gconf xml:readonly:/etc/opt/gnome/opt/gnome/gconf/gconf.xml.defaults
When GConf searches for a preference value, it reads the configuration sources in the order specified in the path file. The following table describes the configuration sources in the path file:
Table E-1 Configuration Sources in the Path File
The sequence of the configuration sources in the path file ensures that mandatory preference settings override user preference settings. The sequence also ensures that user preference settings override default preference settings. That is, GConf applies preferences in the following order of priority:
The include instructions in the GConf path file enable system administrators to specify other configuration sources:
Table E-2 Other Configuration Sources
A GConf schema is a collective term for a GConf schema key and a GConf schema object. The following table describes schema keys and schema objects and their relationship to preference keys:
Table E-3 Schema Keys and Objects
The following are examples of a preference key, a schema key, and a schema object:
Table E-4 Preference Key, Schema Key, and Schema Object Examples
You can associate a schema key with a preference key. For example, the following /desktop/gnome/interface/font_name key includes a schema key:
<entry name=”font_name” mtime=”1034873859” schema=”/schemas/desktop/gnome/interface/font_name”/>
When you associate a schema key with a preference key, the preference uses the suggested value that is specified in the schema object of the schema key. The suggested value is contained in the <default> element in the schema object. By default, all the preference keys in the default configuration source are associated with schema keys.
Typically, schemas are stored in the default configuration source.
Schemas are generated from schema definition files. A schema definition file defines the characteristics of all of the keys in a particular application. Schema definition files have a .schemas extension.
The schema definition files are included in the /etc/opt/gnome/opt/gnome/gconf/schemas directory. You can use the schema definition files to create a new configuration source.
Some schema definition files correspond closely to a part of the GNOME Desktop user interface. For example, system_http_proxy.schemas corresponds to the Network Proxy preference tool. Other schema definition files contain preference keys that are not present in the GNOME Desktop user interface. For example, the /apps/panel/global/tooltips_enabled key is not present.
Some parts of the GNOME Desktop user interface contain preferences that represent preference keys from more than one schema definition file. For example, the Keyboard Shortcuts preference tool contains preferences that represent keys from the panel-global-config.schemas and metacity.schemas files.
The GConf daemon is called gconfd-2. It notifies applications when a preference value changes. For example, you might choose to show only icons in toolbars in the Menus & Toolbars preference tool. When you select this option in the preference tool, the toolbars on all open applications are updated instantly. The daemon can operate locally or across a network.
An instance of the GConf daemon is started for each user. It does not have to deal with complex problems such as authentication and data security. When the daemon starts, it loads the GConf path file. The daemon also manages all access between applications and the configuration sources.
When an application requests the value of a preference key, the daemon searches the configuration sources as follows:
The GConf daemon also caches preference key values. All applications use this cache, so applications need to access the configuration sources only once.
To terminate the GConf daemon, use the following command:
gconftool-2 --shutdown
GConf includes a command line tool called gconftool-2. You can use gconftool-2 to perform the following tasks:
For example, you would use the following command to display the values of all keys in the /desktop/gnome directory and subdirectories:
gconftool-2 --recursive-list /desktop/gnome
The following table lists some of the options that you can use with the gconftool-2 command:
Table E-5 gconftool-2 Options
Option |
Function |
---|---|
--all-dirs |
Lists all subdirectories in a directory that you specify. |
--all-entries |
Displays the values of all keys in a directory that you specify. |
--config-source=configuration-source |
Use with the --direct option to specify a configuration source to use. If you do not specify a configuration source with this option, the command runs on all configuration sources in the path file. |
--direct |
Use with the --config-source option to access a configuration source directly. When you use this option, GConf bypasses the server. Ensure that the GConf daemon, gconfd-2, is not running before you use this option. |
--dump |
Generates a list that contains all preference keys in a GConf repository directory that you specify. The list contains XML descriptions of all the keys, in a <gconfentryfile> element. For example, you can redirect the output from this option to generate a file that lists all keys that are related to your panel configuration. You can use the --load option with this file. |
--get |
Displays the value of a preference key that you specify. Also displays the values of the elements in the schema object for a schema key that you specify. |
--help |
Displays a help message about the gconftool-2 command and the options that you can use with it. |
--load=filename |
Sets the values of preference keys in the current directory in a configuration source to the values in the file that you specify. The file that you specify must contain XML descriptions of the keys, in a <gconfentryfile> element. |
--long-desc=description |
Use with the --set-schema option to specify a long description for a schema key. |
--makefile-install-rule |
Installs schema definition files to applications. |
--owner=owner |
Use with the --set-schema option to specify an owner for a schema key. |
--recursive-list |
Displays the values of all preference keys in all subdirectories in a directory that you specify. |
--recursive-unset |
Resets the values of all preference keys, in all subdirectories in a directory, from the user setting to the setting in the default configuration source. |
--set |
Sets the value of a preference key and writes the value to the user configuration source. Use it with the --type option to specify the data type of the value that you want to set. For example, the following command sets the value of the /apps/gnome-terminal/profiles/Default/background_color key in the user configuration source: gconftool-2 --set “/apps/gnome-terminal/profiles/Default/background_color” --type string “#000000” You can also use it with the --direct option and the --config-source option to write a value to another configuration source. |
--set-schema |
Sets the value of an attribute in a schema key and writes the value to the default configuration source. Use it with the following options to specify the attribute that you want to update:
For example, the following command sets the short description in the schema key for the /apps/gnome-terminal/profiles/Default/background_color key: gconftool-2 --set-schema “/schemas/apps/gnome-terminal/profiles/Default/background_color” --short-desc “Default background color of terminal” |
--short-desc=description |
Use with the --set-schema option to specify a short description for a schema key. |
--shutdown |
Terminates the GConf daemon. |
--type=data-type |
Specifies the data type when you set a value of a preference key. You can also use this option when you set the value of an attribute in a schema key. The following are valid data types:
|
--unset |
Resets the value of a preference key from the user setting to the setting in the default configuration source. |
--usage |
Displays a brief help message about the gconftool-2 command and the options that you can use with it. |
You can set a mandatory value or a default value for a preference key. Before you change mandatory preference values or default preference values for users, you must ensure that the GConf daemon is not running for any user.
IMPORTANT:Before you change mandatory preference values or default preference values for users, you must ensure that all users are logged out.
To set a mandatory value or a default value for a preference key, use the gconftool-2 command, as follows:
gconftool-2 --direct --config-source configuration-source --type data-type --set preference-keyvalue
For example, to set wwwproxy.xyz.com as the mandatory HTTP proxy host, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/opt/gnome/gconf/gconf.xml.mandatory --type string --set /system/http_proxy/host wwwproxy.xyz.com
The user cannot override this preference value.
You can also use the gconftool-2 command to set default values. For example, to set the default number of workspaces to five, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/opt/gnome/gconf/gconf.xml.defaults --type int --set /apps/metacity/general/num_workspaces 5
The user can override this preference value.
The following sections describe how to assign mandatory or default values to general preferences:
To set HTTP proxy preferences, modify the values of the preference keys in the /system/http_proxy/ location. For example, to set a mandatory value for the HTTP proxy host, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/opt/gnome/gconf/gconf.xml.mandatory --type string --set /system/http_proxy/host proxy-name
To set a default value for the HTTP proxy host, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/opt/gnome/gconf/gconf.xml.defaults --type string --set /system/http_proxy/host proxy-name
You can also set other HTTP proxy-related preferences. For more information, see the system_http_proxy.schemas schema definition file.
To set print manager preferences, modify the values of the preference keys in the /apps/gnome-print-manager location. For example, if you do not want users to view the print jobs of other users, set a mandatory value as follows:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-print-manager/show_all_jobs false
To set a default value for this preference, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --type bool --set /apps/gnome-print-manager/show_all_jobs false
You can also set other print manager preferences. For more information, see the gnome-print-manager.schemas schema definition file.
To set a mandatory number of workspaces, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type int --set /apps/metacity/general/num_workspaces integer
To set a default number of workspaces, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --type int --set /apps/metacity/general/num_workspaces integer
You can also set other window manager preferences. For more information, see the metacity.schemas schema definition file.
To set keyboard accessibility preferences, modify the values of the preference keys in the /desktop/gnome/accessibility/keyboard location. For example, if you want to set a mandatory value so that keyboard accessibility features are enabled, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type bool --set /desktop/gnome/ accessibility/keyboard/enable true
To set a default value for this preference, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --type bool --set /desktop/gnome/ accessibility/keyboard/enable false
You can also set other keyboard accessibility preferences. For more information, see the desktop_gnome_accessibility_keyboard.schemas schema definition file.
To set keyboard shortcut preferences, modify the values of preference keys in /apps/ metacity/global_keybindings location. For example, you might want users to use only the Alt+F3 keyboard shortcut to open the Run Application dialog. To set this mandatory value, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type string --set /apps/metacity/global_keybindings ’<Alt>F3’
You can also set other keyboard shortcut preferences. For more information, see the metacity.schemas schema definition file.
The panel-default-setup.entries file specifies the following details of the panels in the GNOME Desktop:
The configuration of individual panels and of panel objects is a complex task. You must first understand the structure of the panel-default-setup.entries file. For more information, see Specifying Individual Panels and Panel Objects.
To set preferences for individual panels and panel objects, you must set the values of many preferences in a configuration source. The easiest way to do this is to use the gconftool-2 command with the --dump and --load options. For more information, see Setting Preferences for Individual Panels and Panel Objects.
The panel-default-setup.entries file contains sections that specify panels and panel contents, and it specifies values for schema keys. This file is located in the /etc/opt/gnome/gconf/schemas directory.
The panel-default-setup.entries file is structured as follows:
The following keys specify the number of panels, panel objects, and applets that appear in the GNOME Desktop:
The keys also assign identifiers to each panel, panel object, and applet. For example, the following sample from panel-default-setup.entries specifies that one panel appears in the GNOME Desktop:
<entry> <key>toplevel_id_list</key> <schema_key>/schemas/apps/panel/general/toplevel_id_list </schema_key> <value> <list type=”string”> <value> <string>bottom_panel</string> </value> </list> </value> </entry>
In the panel-default-setup.entries file, the identifier bottom_panel identifies the bottom edge panel.
The panel property keys are structured as follows:
/apps/panel/default_setup/toplevels/panel-name/panel-property-key
For example, the /apps/panel/default_setup/toplevels/bottom_panel/size key specifies the size of the bottom panel.
For example, the following sample from panel-default-setup.entries specifies a Main Menu object at the left side of the bottom panel:
<entrylist base=”/apps/panel/default_setup/objects/main_menu”> <entry> <key>object_type</key> <schema_key>/schemas/apps/panel/objects/object_type</schema_key> <value> <string>menu-object</string> </value> </entry> <entry> <key>toplevel_id</key> <schema_key>/schemas/apps/panel/objects/toplevel_id</schema_key> <value> <string>bottom_panel</string> </value> </entry> <entry> <key>position</key> <schema_key>/schemas/apps/panel/objects/position</schema_key> <value> <int>0</int> </value> </entry> . . . </entrylist>
For example, the following sample from panel-default-setup.entries specifies the Window List applet, in the bottom panel:
<entrylist base=”/apps/panel/default_setup/applets/window_list”> <entry> <key>object_type</key> <schema_key>/schemas/apps/panel/objects/object_type </schema_key> <value> <string>bonobo-applet</string> </value> </entry> <entry> <key>toplevel_id</key> <schema_key>/schemas/apps/panel/objects/toplevel_id </schema_key> <value> <string>bottom_panel</string> </value> </entry> <entry> <key>position</key> <schema_key>/schemas/apps/panel/objects/position </schema_key> <value> <int>2</int> </value> </entry> . . . <entry> <key>bonobo_iid</key> <schema_key>/schemas/apps/panel/objects/bonobo_iid_type</schema_key> <value> <string>OAFIID:GNOME_WindowListApplet</string> </value> </entry> </entrylist>
The OAFIID is a unique identifier for an applet. To find the OAFIID for a particular applet, see the .server file for the applet in the /usr/lib/bonobo/servers directory. For example, the following excerpt from GNOME_Wncklet_Factory.server shows the OAFIID for the Window List applet:
<oaf_server iid=”OAFIID:GNOME_WindowListApplet” type=”factory” location=”OAFIID:GNOME_Wncklet_Factory”>
Log in to a GNOME session, then configure the panels as required.
Use the --dump option with the gconftool-2 command line tool to generate a file that contains an XML description of your panel configuration.
The --dump option generates a list that contains all preference keys in a GConf repository directory that you specify.
For example, the following command creates an XML description of the default panel configuration in a file called my-panel-setup.entries:
gconftool-2 --dump /apps/panel/profiles/default > my-panel-setup.entries
Open the my-panel-setup.entries file in a text editor, then modify the file as required.
For example, you might want to change the location of the desktop entry files. The following is an excerpt from a file generated with the --dump option:
<entry> <key>objects/object_16/launcher_location</key> <schema_key>/schemas/apps/panel/objects/launcher_location </schema_key> <value> <string>hadjaha-00adce02f7.desktop</string> </value> </entry>
In the above example, you might want to change the reference to hadjaha-00adce02f7.desktop to another desktop entry file that is available globally.
When you generate a panel configuration with the --dump option, the positions of the panel objects are absolute positions. You might want to change these positions to relative positions. The object at the extreme left of a panel has a position value of 0. The next object has a position value of 1, and so on. If you want object positions to be relative to the right side of the panel, set the value of the right_stick key to True.
Use the --load option with the gconftool-2 command line tool to set the values of the default configuration source to the values in the my-panel-setup.entries file.
For example, the following command sets the values of the keys in the default configuration source to the values of the corresponding keys in my-panel-setup.entries:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --load my-panel-setup.entries
The following sections describe how to assign mandatory or default values to look-and-feel preferences:
To set font preferences, modify the values of two preference keys. The following table shows the keys to modify and the part of the user interface that the keys correspond to:
Table E-6 Font Preference Keys
For example, to set Sans 12 as the mandatory application font, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type string --set /desktop/gnome/interface/font_name “Sans 12”
To set Palatino 12 as the default desktop object font, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --type string --set /apps/nautilus/preferences/desktop_font “palatino 12”
To set preferences for the desktop background, modify the values of the preference keys in the /desktop/gnome/background location. For example, to set a mandatory image for the background, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type string --set /desktop/gnome/background/picture_filename filename.png
To set a default value for this preference, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --type string --set /desktop/gnome/background/picture_filename filename.png
You can also set other background preferences. For more information, see the desktop_gnome_background.schemas schema definition file.
To set splash image preferences, modify the value of the preference keys in the /apps/gnome-session/options/ location. For example, if you do not want users ever to see a splash image, set a mandatory value as follows:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-session/options/show_splash_screen false
To set a default value for this preference, use the following command:
gconftool-2 --direct --config-source xml:readwrite:/etc/opt/gnome/gconf/gconf.xml.defaults --type bool --set /apps/gnome-session/options/show_splash_screen false
You can also set other splash image preferences. For more information, see the gnome-session.schemas schema definition file.
To restore the default preference values for a user, use the following command:
gconftool-2 --direct --config-source user-configuration-source --recursive-unset
Replace user-configuration-source with the configuration source in the .gconf directory in the home directory of the user.
This command resets the values of all preference keys, in all subdirectories, from the user setting to the setting in the default configuration source.
The Configuration Editor (GConf Editor) lets you view and edit the values of the keys stored in the GConf repository.
To open the Configuration Editor:
Click
.Type /opt/gnome/bin/gconf-editor, then click
.Figure E-1 Configuration Editor Window
The Configuration Editor window contains the following panes:
The icons beside the keys in the modification pane indicate what type of value you can enter for the key. For example, the check mark icon beside the /system/http_proxy/use_http_proxy key indicates that you can enter a boolean value for the key.
The icons also indicate if you cannot edit the value of a key. For example, a key icon beside a schema key indicates that you cannot modify the value of the key.
You can copy the names of keys so that you can paste them into another application. You can also add bookmarks to keys.
Use the tree pane to display the key that you want to modify in the modification pane.
Click the key you want to modify.
To change the value of an integer key or a string key, click the
column of the key and then type the new value for the key.To change the value of a boolean key, click the
column of the key.Click the key whose name you want to copy in the modification pane.
Click
.If required, you can paste the name of the key into another application.
To access a key in your bookmarks, select the key from the Bookmarks menu.
Click the key that you want to bookmark in the modification pane.
Click
.Click
s.An Edit Bookmarks dialog is displayed.
Select a bookmark from the list on the left, then click
.Click
.