Contents
This chapter discusses the following topics:
GConf is a system for storing application preferences that simplifies the administration of user preferences. GConf lets system administrators do the following:
Set mandatory values for particular preferences for all users. This controls whether users can update particular preferences.
Set default values for particular preferences for all users.
Use suggested values for preferences that are specified in definition files for the preferences.
Read documentation on each preference.
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:
Directories that correspond to applications that use the GConf repository. For example,
the file system contains the directory /apps/metacity.
Subdirectories that correspond to categories of preferences. For example, the file system
contains the directory /apps/metacity/general.
Special files that list the preference keys in the directory and contain information
about the keys. For example, a file that contains information about the keys that relate to
the HTTP proxy preferences is in the directory /system/http_proxy.
A /schemas directory that contains files that describe all of the
preference keys.
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 | |
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:
Backend module to use to read the repository
Permissions on the repository
Location of the repository
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 10.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:
Mandatory preferences
User-specified preferences
Default preferences
The include instructions in the GConf path file enable system administrators to specify other configuration sources:
Table 10.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 10.3. Schema Keys and Objects
The following are examples of a preference key, a schema key, and a schema object:
Table 10.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:
Search for the value of the preference key in each configuration source, in the order specified in the path file.
If the value is found, return the value.
If the value is not found, search for the schema key that corresponds to the preference key in each configuration source, in the order specified in the path file.
If the schema key is found, check the value of the schema key.
If the value of the schema key is a schema object, return the suggested value in the <default> element of the schema object.
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:
Set the values of keys
Display the values of keys
Install schemas from schema definition files when you install an application
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 10.5. gconftool-2 Options
|
Option |
Function |
|---|---|
|
|
Lists all subdirectories in a directory that you specify. |
|
|
Displays the values of all keys in a directory that you specify. |
|
|
Use with the
|
|
|
Use with the
|
|
|
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
|
|
|
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. |
|
|
Displays a help message about the gconftool-2 command and the options that you can use with it. |
|
|
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 |
|
|
Use with the
|
|
|
Installs schema definition files to applications. |
|
|
Use with the
|
|
|
Displays the values of all preference keys in all subdirectories in a directory that you specify. |
|
|
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. |
|
|
Sets the value of a preference key and writes the value to the user configuration
source. Use it with the
gconftool-2 --set “/apps/gnome-terminal/profiles/Default/background_color” --type string “#000000”
You can also use it with the
|
|
|
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
gconftool-2 --set-schema “/schemas/apps/gnome-terminal/profiles/Default/background_color” --short-desc “Default background color of terminal”
|
|
|
Use with the
|
|
|
Terminates the GConf daemon. |
|
|
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:
|
|
|
Resets the value of a preference key from the user setting to the setting in the default configuration source. |
|
|
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:
Number of panels
Types of the panels
Properties of the panels
Contents of the panels
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 Section 10.1.5.6.1, “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 Section 10.1.5.6.2, “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:
Keys that specify the general structure of panels, applets, and other panel objects in the GNOME Desktop.
The following keys specify the number of panels, panel objects, and applets that appear in the GNOME Desktop:
/apps/panel/default_setup/general/toplevel_id_list
/apps/panel/default_setup/general/object_id_list
/apps/panel/default_setup/general/applet_id_list
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.
Keys that specify the properties of the panels.
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.
Keys that specify the panel objects, the panel object properties, and the panels where the objects reside.
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>
Keys that specify the applets, the applet preferences, and the panels where the applets reside.
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:
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:
The Configuration Editor window contains the following panes:
Lets you navigate the directories and subdirectories in the GConf repository. Use this pane to display the keys that you want to modify in the modification pane. The tree pane is on the left side of the window.
Displays the keys in the selected GConf repository directory. Use this pane to select keys that you want to modify, and to modify the values of keys. The modification pane is in the upper part of the right side of the window.
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.
Displays documentation for the currently selected key. Use this pane to get more information about the GConf preference keys.
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.
To access a key in your bookmarks, select the key from the Bookmarks menu.