本章介绍如何使用 GConf
管理用户首选项。
GConf
简化了在 GNOME 桌面环境中对用户首选项的管理。 GConf
使系统管理员能够进行以下操作:
为所有用户设置特定首选项的强制值。 这样,系统管理员就可以控制用户是否能够更新特定的首选项。
为所有用户设置特定首选项的默认值。
使用首选项定义文件中指定的首选项建议值。
阅读有关每个首选项的文档。
当某个首选项值改变时,GConf
还将在本地或通过网络通知相应的应用程序。 这样,当更改首选项时,所有使用此首选项的应用程序都将被立即更新。
GConf
有以下组件:
一个用户首选项库。
一个守护进程,gconfd-2。
一个命令行工具,gconftool-2。
GConf
库中的每个首选项都表示为一个键值对。 GConf 首选项键是库中与应用程序首选项对应的一个元素。 例如,/apps/gnome-session/options/show_splash_screen 首选项键与“会话”
首选项工具中“登录时显示启动画面”选项对应。 GNOME 用户界面不包含 GConf
库中的所有首选项键。例如,“会话”
首选项工具不包含对应于 /apps/gnome-session/options/splash_screen_text 键的选项。
库的结构类似于一个简单的分级文件系统。 库包含以下内容:
与使用 GConf
库的应用程序对应的目录。 例如,文件系统包含目录 /apps/metacity。
与首选项类别对应的子目录。 例如,文件系统包含目录 /apps/metacity/general。
列出目录中的首选项键并包含有关键的信息的特殊文件。 例如,目录 /system/http_proxy 中有一个包含有关 HTTP 代理首选项的键信息的文件。
包含说明所有首选项键的文件的/schemas 目录。
通常,首选项键具有简单值,例如:字符串、整数或字符串和整数的列表。 库中的首选项键的格式取决于用于读库的后端模块。 以下是使用可扩展标记语言 (XML) 后端模块读取库时的 /desktop/gnome/interface/font_name 首选项键的示例:
<entry name="font_name" mtime="1038323555" muser="user123" type="string"> <stringvalue>avantgarde 10</stringvalue></entry>
在本指南中谈到首选项键时,键名称中加上了该键的路径。 例如,/desktop/gnome/interface 子目录中的 font_name 首选项键又称 /desktop/gnome/interface/font_name。
GConf
库包含一系列被称为配置源的存储位置。 配置源列在 GConf 路径文件中。 GConf
路径文件的位置是 /etc/gconf/version_number/path 。 每个用户都有一个路径文件。 路径文件中的每一行指定以下信息:
用于读取库的后端模块。
对库的权限。
库的位置。
默认情况下,GConf
路径文件的内容如下所示:
xml:readonly:/etc/gconf/gconf.xml.mandatory include "$(HOME)/.gconf.path" xml:readwrite:$(HOME)/.gconf xml:readonly:/etc/gconf/gconf.xml.defaults
当 GConf
搜索首选项值时,GConf
按照路径文件中指定的顺序读取配置源。 下表说明路径文件中的配置源:
配置源 |
说明 |
---|---|
强制 |
此配置源上的权限设为只读。 用户不能覆盖此配置源中的值,因此,此源中的首选项是强制的。 |
用户 |
此配置源存储在用户主目录中的 .gconf 目录中。 用户设置首选项时,新的首选项信息将添加到这里。 |
默认 |
此配置源包含默认的首选项设置。 |
路径文件中配置源的顺序确保强制首选项设置可以改写用户首选项设置。 此顺序还确保用户首选项设置将改写默认首选项设置。 也就是说,GConf
按以下优先级顺序应用首选项:
强制首选项
用户指定的首选项
默认首选项
通过更改 GConf
路径文件中的 include 指令,用户可以使用另一个配置源。要使用另一个配置源,用户必须指定此配置源的位置。 用户在主目录中一个名为 .gconf.path 的文件中指定此配置源的位置。
GConf 架构是 GConf 架构键和 GConf 架构对象的统称。下表说明架构键和架构对象以及这些项目与首选项键之间的关系:
菜单项 |
说明 |
---|---|
首选项键 |
|
架构键 |
为首选项键存储架构对象的键。 |
架构对象 |
配置源中包含有关首选项键的信息的元素,例如以下信息:
|
下表给出首选项键、架构键和架构对象的示例:
菜单项 |
示例 |
---|---|
首选项键 |
/desktop/gnome/interface/font_name |
架构键 |
/schemas/desktop/gnome/interface/font_name |
架构对象 |
<schema> <applyto>/desktop/gnome/interface/font_name</applyto> <key>/schemas/desktop/gnome/interface/font_name</key> <owner>gnome</owner> <type>string</type> <default>Sans 10</default> <locale name="C"> <short>Default font</short> <long>Name of the default font used by gtk+.</long> </locale> </schema> |
可以将一个架构键与一个首选项键关联起来。 例如,下面的 /desktop/gnome/interface/font_name 键包含一个架构键:
<entry name="font_name" mtime="1034873859" schema="/schemas/desktop/gnome/interface/font_name"/>
将架构键与首选项键相关联后,首选项将使用架构键的架构对象中指定的建议值。 建议值包含在架构对象的 <default> 元素中。 默认情况下,默认配置源中所有的首选项键都与架构键相关联。
通常,架构存储在默认的配置源中。
架构从架构定义文件生成。架构定义文件定义特定应用程序中所有键的特性。 架构定义文件的扩展名为 .schemas。
架构定义文件包含在 /etc/gconf/schemas 目录中。 可以用架构定义文件创建新的配置源。
有些架构定义文件与 GNOME 用户界面的一部分密切相关。 例如,system_http_proxy.schemas 对应于网络代理
首选项工具。 而另一些架构定义文件包含 GNOME 用户界面中不显示的首选项键。 例如,用户界面中不显示 /apps/gnome-session/options/splash_screen_text 键。
GNOME 用户界面的某些部分所包含的首选项可能表示一个以上的架构定义文件中的首选项键。例如,键盘快捷键
首选项工具包含的首选项表示 panel-global-config.schemas 和 metacity.schemas 文件中的键。
GConf
守护进程称为 gconfd-2。 GConf
守护进程在首选项值更改时通知应用程序。 例如,您可能在“菜单和工具栏”
首选项工具中选择仅在工具栏中显示图标。在首选项工具中选择此选项之后,所有打开的应用程序的工具栏立即更新。 GConf
守护进程可以本地或通过网络进行操作。
系统为每个用户启动一个 GConf
守护进程实例。 GConf
守护进程无须处理身份验证和数据安全等复杂问题。 启动 GConf
守护进程之后,守护进程将加载 GConf
路径文件。 GConf
守护进程管理应用程序和配置源之间的所有访问。
当应用程序请求首选项键的值时,守护进程按如下方式搜索配置源:
按照路径文件中指定的顺序在每个配置源中搜索首选项键的值。 如果找到,则返回此值。
如果没有找到,则按照路径文件中指定的顺序在每个配置源中搜索与首选项键对应的架构键。
如果找到架构键,检查该架构键的值。
如果架构键的值是架构对象,则返回架构对象 <default> 元素中的建议值。
GConf
守护进程还缓存首选项键值。所有应用程序均使用此缓存,因此应用程序只需访问一次配置源。
要终止 GConf
守护进程,请运行以下命令:
# gconftool-2 --shutdown
GConf
包括一个命令行工具,gconftool-2。 可以使用 gconftool–2 命令执行以下任务:
设置键值。
显示键值。
安装应用程序时,从架构定义文件安装架构。
例如,使用以下命令显示 /desktop/gnome 目录和子目录中所有键的值。
# gconftool-2 --recursive-list /desktop/gnome
表 1–1 列出了一些可以与 gconftool-2 命令一起使用的选项。
表 1–1 gconftool-2 命令选项
可以为首选项键设置强制值或默认值。 为用户更改强制首选项值或默认首选项值之前,必须确保 GConf
守护进程没有为任何用户运行。为用户更改首选项值之前,确保所有用户都已经注销。
要为首选项键设置强制值或默认值,请按如下方式使用 gconftool-2 命令:
# gconftool-2 --direct --config-source configuration_source --type data_type --set preference_key value
例如,要将 wwwproxy.xyz.com 设置为强制 HTTP 代理主机,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /system/http_proxy/host wwwproxy.xyz.com
用户不能改写此首选项值。
还可以使用 gconftool-2 命令设置默认值。 例如,要将默认工作区数设置为 5,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type int --set /apps/metacity/general/num_workspaces 5
用户可以改写此首选项值。
为用户更改强制首选项值或默认首选项值之前,必须确保所有用户都已经注销。
下文介绍如何为常规首选项指定强制或默认值。
要设置 HTTP 代理首选项,请修改 /system/http_proxy/ 位置中首选项键的值。 例如,要为 HTTP 代理主机设置强制值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /system/http_proxy/host proxy_name
要为 HTTP 代理主机设置默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set /system/http_proxy/host proxy_name
还可以设置其他 HTTP 代理相关的首选项。有关其他 HTTP 代理首选项的信息,请参阅 system_http_proxy.schemas 架构定义文件。
要设置打印管理器首选项,请修改 /apps/gnome-print-manager 位置中首选项键的值。 例如,如果不希望让用户查看其他用户的打印任务,请按如下方式设置强制值:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-print-manager/show_all_jobs false
要为此首选项设置默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /apps/gnome-print-manager/show_all_jobs false
还可以设置其他打印管理器首选项。 有关其他打印管理器首选项的信息,请参阅 gnome-print-manager.schemas 架构定义文件。
要设置强制工作区数,请使用以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int --set /apps/metacity/general/num_workspaces integer
要设置默认工作区数,请使用以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type int --set /apps/metacity/general/num_workspaces integer
还可以设置其他窗口管理器首选项。 有关其他窗口管理器首选项的信息,请参阅 metacity.schemas 架构定义文件。
要设置键盘辅助功能首选项,请修改 /desktop/gnome/accessibility/keyboard 位置中首选项键的值。例如,如果要设置强制值以便启用键盘辅助功能,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /desktop/gnome/accessibility/keyboard/enable true
要为此首选项设置默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set desktop/gnome/accessibility/keyboard/enable false
还可以设置其他键盘辅助功能首选项。 有关其他键盘辅助功能首选项的信息,请参阅 desktop_gnome_accessibility_keyboard.schemas 架构定义文件。
要设置键盘快捷键首选项,请在两个位置修改首选项键值。下表显示要修改的位置,以及与这些位置相对应的用户界面组件:
GConf 位置 |
用户界面组件 |
---|---|
/apps/panel/global |
|
/apps/metacity/general |
|
例如,您可能希望用户只使用 Alt + F3 键盘快捷键来打开“运行程序”对话框。要设置该强制值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /apps/panel/global/run_key '<Alt>F3'
默认情况下,您可能希望用户使用 Alt + F11 键最大化窗口。要设置此默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set /apps/metacity/window_keybindings/maximize '<Alt>F11'
还可以设置其他键盘快捷键首选项。有关其他键盘快捷键首选项的信息,请参阅 panel-global-config.schemas 和 metacity.schemas 架构定义文件。
要设置面板的全局首选项,请修改 /apps/panel/global 位置中的首选项键的值。例如,如果任何时候都不希望用户使用面板动画,请按如下方式设置一个强制值:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/panel/global/enable_animations false
要为此首选项设置默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /apps/panel/global/enable_animations false
还可以设置其他全局面板首选项。 有关其他全局面板首选项的信息,请参阅 panel-global-config.schemas 架构定义文件。
panel-per-panel-config.schemas 架构定义文件指定桌面上面板的以下详细信息:
面板数。
面板类型。
面板属性。
面板内容。
配置单个面板和面板对象是一项复杂的任务。要配置单个面板和面板对象,必须了解 panel-per-panel-config.schemas 架构定义文件的结构。有关 panel-per-panel-config.schemas 架构定义文件的更多信息,请参阅下一节。
要设置单个面板和面板对象的首选项,必须在配置源中设置许多首选项的值。要设置多个首选项的值,最简单的方法就是使用脚本。 有关设置面板和面板对象的首选项的示例脚本,请参阅设置单个面板首选项的示例脚本。
架构定义文件 panel-per-panel-config.schemas 包含为大、中和小屏幕指定面板和面板内容的部分。 关于小屏幕和大屏幕的部分在本指南发布时尚无法使用。要了解面板或面板对象的首选项键,请阅读只适用于中等尺寸屏幕的部分。
panel-per-panel-config.schemas 文件的中等尺寸屏幕部分的结构如下所示:
指定桌面上的面板、小程序和其他面板对象的常规结构的首选项键。以下各键指定显示在桌面上的面板数、小程序数和其他面板对象数:
/apps/panel/default_profiles/medium/general/panel_id_list
/apps/panel/default_profiles/medium/general/applet_id_list
/apps/panel/default_profiles/medium/general/object_id_list
这些键还为每个面板、小程序和面板对象指定标识符。例如,panel-per-panel-config.schemas 中的以下设置指定在桌面上显示两个面板:
<key>/schemas/apps/panel/default_profiles/medium/ general/panel_id_list</key> . . . <default>[00000001,00000002]</default>
在 panel-per-panel-config.schemas 中,标识符 00000001 标识底边面板,标识符 00000002 标识菜单面板。
指定面板属性的首选项键。面板属性键的结构如下所示:
/apps/panel/default_profiles/medium/panels/panel_number/panel_property_key
例如,/apps/panel/default_profiles/medium/panels/00000001/screen_edge 键指定底边面板所在的屏幕边缘。
指定底边面板属性的键首先列出。 在 panel-per-panel-config.schemas 的中等尺寸屏幕部分的结尾列出了指定“菜单面板”属性的键。
列出面板对象、面板对象属性和对象所在的面板的首选项键。例如,panel-per-panel-config.schemas 中的以下设置指定了对象 00000001:
<key>/schemas/apps/panel/default_profiles/medium/ objects/00000001/object_type</key> . . . <default>launcher-object</default> . . . <key>/schemas/apps/panel/default_profiles/medium/ objects/00000001/launcher_location</key> . . . <default>applications:///nautilus.desktop</default> . . . <key>/schemas/apps/panel/default_profiles/medium/ objects/00000001/panel_id</key> . . . <default>00000002</default>
该对象是启动 Nautilus
文件管理器的启动程序。该启动程序位于菜单面板中。
列出小程序、小程序首选项和小程序所在的面板的首选项键。例如,panel-per-panel-config.schemas 中的以下设置指定了小程序 00000001:
<key>/schemas/apps/panel/default_profiles/medium/ applets/00000001/object_type</key> . . . <default>bonobo-applet</default> . . . <key>/schemas/apps/panel/default_profiles/medium/ applets/00000001/panel_id</key> . . . <default>00000001</default> . . . <key>/schemas/apps/panel/default_profiles/medium/ applets/00000001/bonobo_iid</key> . . . <default>OAFIID:GNOME_TasklistApplet</default>
该小程序是 Window List
小程序。 它位于底边面板中。
本节包含一个示例脚本,此脚本为具有以下主要特性的面板设置首选项:
面板是边缘面板,位于屏幕底部边缘。
面板包含一个文件管理器启动程序和一个终端
启动程序。
面板包含一个 Window List
小程序。
该示例脚本还设置其他不太重要的首选项。所有的首选项都有默认值而不是强制值。
该示例脚本如下所示:
# Usage is: set_key <type> <key> <value> <extra options if any> function set_key() { TYPE="$1" shift KEY="$1" shift VALUE="$1" shift OTHER_ARGS="$*" gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --owner=panel $OTHER_ARGS --type "$TYPE" --set "$KEY" "$VALUE" } # Define the number of panels, the number of launchers, and the number of applets set_key list /apps/panel/default_profiles/medium/general /panel_id_list [00000001] --list-type string set_key list /apps/panel/default_profiles/medium/general /object_id_list [00000001,00000002] --list-type string set_key list /apps/panel/default_profiles/medium/general /applet_id_list [00000001] --list-type string # Define the characteristics of the panel set_key string /apps/panel/default_profiles/medium/panels /00000001/panel_type edge-panel set_key string /apps/panel/default_profiles/medium/panels /00000001/panel_size panel-size-x-small set_key string /apps/panel/default_profiles/medium/panels /00000001/screen_edge panel-edge-bottom set_key bool /apps/panel/default_profiles/medium/panels /00000001/hide_buttons_enabled false set_key string /apps/panel/default_profiles/medium/panels /00000001/panel_background_type no-background # Define the first launcher set_key string /apps/panel/default_profiles/medium/objects /00000001/object_type launcher-object set_key string /apps/panel/default_profiles/medium/objects /00000001/launcher_location 'applications:///nautilus.desktop' set_key string /apps/panel/default_profiles/medium/objects /00000001/panel_id 00000001 set_key int /apps/panel/default_profiles/medium/objects /00000001/position 20 # Define the second launcher set_key string /apps/panel/default_profiles/medium/objects /00000002/object_type launcher-object set_key string /apps/panel/default_profiles/medium/objects /00000002/launcher_location 'applications:///System/gnome-terminal.desktop' set_key string /apps/panel/default_profiles/medium/objects /00000002/panel_id 00000001 set_key int /apps/panel/default_profiles/medium/objects /00000002/position 25 # Define the applet set_key string /apps/panel/default_profiles/medium/applets /00000001/object_type bonobo-applet set_key string /apps/panel/default_profiles/medium/applets /00000001/bonobo_iid OAFIID:GNOME_TasklistApplet set_key string /apps/panel/default_profiles/medium/applets /00000001/panel_id 00000001 set_key int /apps/panel/default_profiles/medium/applets /00000001/position 25
下文介绍如何为外观首选项指定强制或默认值。
要设置字体首选项,请修改两个首选项键的值。下表显示要修改的键以及与这些键对应的用户界面组件:
GConf 位置 |
用户界面组件 |
---|---|
/desktop/gnome/interface/font_name |
|
/apps/nautilus/preferences/desktop_font |
|
例如,要将 Sans 12 设置为强制的应用程序字体,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /desktop/gnome/interface/font_name “Sans 12”
要将 palatino 12 设置为默认桌面对象字体,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set /apps/nautilus/preferences/desktop_font “palatino 12”
要设置桌面背景首选项,请修改 /desktop/gnome/background 位置中首选项键的值。例如,要为桌面背景设置强制图像,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /desktop/gnome/background/picture_filename filename.png
要为此首选项设置默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set /desktop/gnome/background/picture_filename filename.png
还可以设置其他桌面背景首选项。有关其他桌面背景首选项的信息,请参阅 desktop_gnome_background.schemas 架构定义文件。
要设置启动图像首选项,请修改 /apps/gnome-session/options/ 位置中的首选项键的值。例如,如果不希望用户看到启动图像,请按如下方式设置强制值:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-session/options/show_splash_screen false
要为此首选项设置默认值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /apps/gnome-session/options/show_splash_screen false
还可以设置其他显示图像首选项。 有关其他启动图像首选项的信息,请参阅 gnome-session.schemas 架构定义文件。
要为用户恢复默认首选项值,请运行以下命令:
# gconftool-2 --direct --config-source user_configuration_source --recursive-unset
使用用户起始目录下的 .gconf 目录中的配置源替换 user_configuration_source。
此命令将所有子目录中所有首选项键的值,从用户设置重置为默认配置源中的设置。