本章介绍如何使用 GConf
管理用户首选项。
GConf
简化了 Java Desktop System 的用户首选项的管理。GConf
使系统管理员能够进行以下操作:
为所有用户设置特定首选项的强制值。这样,系统管理员就可以控制用户是否能够更新特定的首选项。
为所有用户设置特定首选项的默认值。
使用首选项定义文件中指定的首选项建议值。
阅读有关每个首选项的文档。
当某个首选项值改变时,GConf
还将在本地或通过网络通知相应的应用程序。这样,当更改首选项时,所有使用此首选项的应用程序都将被立即更新。
GConf
有以下组件:
一个用户首选项信息库。
一个守护进程,gconfd-2。
一个命令行工具,gconftool-2。
GConf
信息库中的每个首选项都表示为一个键值对。GConf 首选项键是信息库中与应用程序首选项对应的一个元素。例如,/apps/gnome-session/options/show_splash_screen 首选项键与“会话”
首选项工具中“登录时显示启动画面”选项对应。并非 GConf
信息库中的所有首选项键都包含在 Java Desktop System 的用户界面中。例如,面板
首选项工具并不包含与 /apps/panel/global/tooltips_enabled 键对应的选项。
信息库的结构类似于一个简单的分级文件系统。信息库包含以下内容:
与使用 GConf
信息库的应用程序对应的目录。例如,文件系统包含目录 /apps/gnome-terminal。
与首选项类别对应的子目录。例如,文件系统包含目录 /apps/gnome-terminal/global。
列出目录中的首选项键并包含有关键的信息的特殊文件。例如,目录 /system/http_proxy 中有一个包含有关 HTTP 代理首选项的键信息的文件。
包含说明所有首选项键的文件的/schemas 目录。
首选项键通常有简单数据类型,如下所示:
字符串
转换为整数
字符串的列表
整数的列表
信息库中的首选项键的格式取决于用于读信息库的后端模块。以下是使用可扩展标记语言 (XML) 后端模块读取系统信息库时 /desktop/gnome/interface/font_name 首选项键的实例:
<entry name="font_name" mtime="1038323555" muser="user123" type="string"> <stringvalue>Sans 10</stringvalue></entry>
在本指南中谈到首选项键时,键名称中加上了该键的路径。例如,/desktop/gnome/interface 子目录中的 font_name 首选项键写作 /desktop/gnome/interface/font_name。
GConf
信息库包含一系列被称为配置源的存储位置。配置源列在 GConf 路径文件中。GConf
路径文件的位置是 /etc/gconf/gconf-version-number/path。每个用户都有一个路径文件。该路径文件指定了每个配置源的以下信息:
用于读取信息库的后端模块。
对信息库的权限。
信息库的位置。
GConf
路径文件还包含 include 指令。默认情况下,GConf
路径文件的目录如下所示:
xml:readonly:/etc/gconf/gconf.xml.mandatory include /etc/gconf/2/local-mandatory.path apoc:readonly:mandatory@ include "$(HOME)/.gconf.path" xml:readwrite:$(HOME)/.gconf apoc:readonly:@ include /etc/gconf/2/local-defaults.path xml:readonly:/etc/gconf/gconf.xml.defaults
当 GConf
搜索首选项值时,GConf
按照路径文件中指定的顺序读取配置源。下表说明路径文件中的配置源:
配置源 |
说明 |
---|---|
强制 |
此配置源上的权限设为只读。用户不能覆盖此配置源中的值,因此,此源中的首选项是强制的。 |
用户 |
此配置源存储在用户主目录中的 .gconf 目录中。用户设置首选项时,新的首选项信息将被添加到此位置。 您可以使用 |
Default |
此配置源包含默认的首选项设置。 |
路径文件中配置源的顺序确保强制首选项设置可以改写用户首选项设置。此顺序还确保用户首选项设置将改写默认首选项设置。也就是说,GConf
按以下优先级顺序应用首选项:
强制首选项
用户指定的首选项
默认首选项
GConf
路径文件中的 include 指令使系统管理员能够指定其它配置源。
包括的配置源 |
说明 |
---|---|
/etc/gconf/2/local-mandatory.path |
使用此配置源来存储特定系统所必需的首选项值。 |
$(HOME)/.gconf.path |
用户在名为 .gconf.path 的文件中指定主目录中配置源的位置。 |
/etc/gconf/2/local-defaults.path |
使用此配置源来存储特定系统的默认首选项值。 |
GConf
路径文件中的 apoc 引用指定一个 Sun Java Desktop System 配置管理器
后端模块。
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 目录中。可以用架构定义文件创建新的配置源。
有些架构定义文件与 Java Desktop System 的用户界面的一部分密切相关。例如,system_http_proxy.schemas 对应 Internet
首选项工具。而另一些架构定义文件包含 Java Desktop System 的用户界面中不显示的首选项键。例如 /apps/panel/global/tooltips_enabled 键在用户界面中就不显示。
Java Desktop System 用户界面的某些部分所包含的首选项可能表示一个以上的架构定义文件中的首选项键。例如,快捷方式
首选项工具包含的首选项可能表示 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 架构定义文件。
要设置强制工作区数,请使用以下命令:
# 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 架构定义文件。
要设置快捷键首选项,您可修改 /apps/metacity/global_keybindings 位置中首选项键的值。例如,您可能希望用户只需使用 Alt + F3 键盘快捷键就可以打开“运行应用程序”对话框。要设置该强制值,请运行以下命令:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /apps/metacity/global_keybindings/panel_run_dialog '<Alt>F3'
还可以设置其他键盘快捷键首选项。有关其他快捷键首选项的信息,参见 metacity.schemas 架构定义文件。
panel-default-setup.entries 文件指定 Java Desktop System 中面板的以下详细信息:
面板数。
面板类型。
面板属性。
面板内容。
配置单个面板和面板对象是一项复杂的任务。要配置单个面板和面板对象,您首先需要了解 panel-default-setup.entries 文件的结构。有关 panel-default-setup.entries 文件的更多信息,参见 指定单个面板和面板对象 。
要设置单个面板和面板对象的首选项,必须在配置源中设置许多首选项的值。要设置面板首选项值,最简单的办法是使用 gconftool-2 命令以及 --dump 和 --load 选项。有关如何设置面板和面板对象首选项的更多信息,请参阅指定单个面板和面板对象 。
文件 panel-default-setup.entries 包含指定面板和面板内容的段。panel-default-setup.entries 文件指定架构键的值。panel-default-setup.entries 文件驻留在 /etc/gconf/schemas 目录中。
panel-default-setup.entries 文件的结构如下:
有一个 entrylist 元素为文件中所有键指定基本路径。panel-default-setup.entries 中的以下节录指定键的基本路径为 /apps/panel/default_setup:
<entrylist base="/apps/panel/default_setup">
例如,如果在 panel-default-setup.entries 中引用了键 general/toplevel_id_list,则该键的完整路径为 /apps/panel/default_setup/general/toplevel_id_list。
指定桌面上的面板、小程序和其他面板对象的常规结构的键。以下键指定了桌面上显示的面板、面板对象和小程序的数量:
general/toplevel_id_list
general/object_id_list
general/applet_id_list
这些键还为每个面板、面板对象和小程序指定了标识符。例如,panel-default-setup.entries 中的以下范例指定在桌面上出现一个面板:
<entry> <key>general/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>
在 panel-default-setup.entries 文件中,标识符 bottom_panel 标识屏幕底部的面板。
指定面板属性的键。面板属性键的结构如下所示:
toplevels/panel-name/panel-property-key
例如,键 toplevels/bottom_panel/size 指定底部面板的大小。
指定面板对象、面板对象属性和这些对象所在面板的键。例如,panel-default-setup.entries 的以下示例指定在底部面板的左侧有一个“主菜单”对象:
<entry> <key>objects/main_menu/object_type</key> <schema_key>/schemas/apps/panel/objects/object_type</schema_key> <value> <string>menu-object</string> </value> </entry> <entry> <key>objects/main_menu/toplevel_id</key> <schema_key>/schemas/apps/panel/objects/toplevel_id</schema_key> <value> <string>bottom_panel</string> </value> </entry> <entry> <key>objects/main_menu/position</key> <schema_key>/schemas/apps/panel/objects/position</schema_key> <value> <int>0</int> </value> </entry>
指定小程序、小程序首选项和小程序所在面板的键。例如,panel-default-setup.entries 的以下示例指定了底部面板中的窗口列表
小程序:
<entry> <key>applets/window_list/object_type</key> <schema_key>/schemas/apps/panel/objects/object_type</schema_key> <value> <string>bonobo-applet</string> </value> </entry> <entry> <key>applets/window_list/toplevel_id</key> <schema_key>/schemas/apps/panel/objects/toplevel_id</schema_key> <value> <string>bottom_panel</string> </value> </entry> <entry> <key>applets/window_list/position</key> <schema_key>/schemas/apps/panel/objects/position</schema_key> <value> <int>3</int> </value> </entry> . . . <entry> <key>applets/window_list/bonobo_iid</key> <schema_key>/schemas/apps/panel/objects/bonobo_iid_type</schema_key> <value> <string>OAFIID:GNOME_WindowListApplet</string> </value> </entry>
OAFIID 是每个小程序的唯一标识符。要查找特定小程序的 OAFIID,请参阅 /usr/lib/bonobo/servers 目录中该小程序的 .server 文件。例如,GNOME_Wncklet_Factory.server 中的以下节录显示 Window List
applet 的 OAFIID:
<oaf_server iid="OAFIID:GNOME_WindowListApplet" type="factory" location="OAFIID:GNOME_Wncklet_Factory">
要设置面板和面板对象的首选项,请执行以下步骤:
登录到 Java Desktop System 会话,并按需要配置面板。
使用 --dump 选项与 gconftool-2 命令行工具生成一个文件,包含您的面板配置的 XML 描述。--dump 选项可生成一个列表,其中包含了您指定的 GConf
信息库目录中的所有首选项键。
例如,以下命令在名为 my-panel-setup.entries 的文件中创建默认面板配置的 XML 描述:
# gconftool-2 --dump /apps/panel/profiles/default > my-panel-setup.entries
在文本编辑器中打开 my-panel-setup.entries 文件,然后根据需要修改该文件。
例如,您可能需要更改桌面条目文件的位置。以下内容摘自用 --dump 选项生成的文件:
<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>
在以上范例中,您可能要将对 hadjaha-00adce02f7.desktop 的引用更改为可全局使用的另一个桌面条目文件。
用 --dump 选项生成面板配置时,面板对象的位置是绝对位置。您可能希望将面板对象的位置从绝对位置更改为相对位置。面板最左边的对象的 position 值是 0。下一个对象的 position 值是 1,依此类推。如果您想将对象位置更改为相对于面板右边的值,则将 right_stick 键的值设置为 true。
使用 --load 选项以及 gconftool-2 命令行工具把默认配置源的值设置为 my-panel-setup.entries 文件中的值。例如,以下命令把默认配置源中键的值设置为 my-panel-setup.entries 中相应键的值:
# gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --load my-panel-setup.entries
下文介绍如何为外观首选项指定强制或默认值。
要设置字体首选项,请修改两个首选项键的值。下表显示要修改的键以及与这些键对应的用户界面组件:
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。
此命令将所有子目录中所有首选项键的值,从用户设置重置为默认配置源中的设置。