本章描述 Java Desktop System 如何实现菜单以及您如何定制菜单。
Java Desktop System 实现菜单的方式允许您进行以下操作:
轻松定制菜单分级结构。菜单分级结构不基于文件系统分级结构。您可以通过编辑少数几个文件来定制菜单分级结构。您无需修改应用程序或移动文件。
轻松安装应用程序。安装应用程序时,无需向应用程序提供有关菜单分级结构的信息。
配置菜单,使用户无法修改菜单。
Java Desktop System 中的菜单使用下列组件:
文件抽象层
Vfolder
桌面项文件
目录项文件
gnome-vfs 文件抽象层为应用程序与文件进行交互提供了一个简单、通用的方法。文件抽象层还提供映射到特定菜单配置文件的统一资源标识符 (URI) 位置。
要为所有用户添加菜单或菜单项,必须将菜单或菜单项添加到某个 URI 位置。表 2–1 列出了可以添加菜单项的菜单以及与菜单相对应的 URI 位置。
表 2–1 系统管理员的菜单和 URI 位置
菜单 |
URI 位置 |
---|---|
所有用户的应用程序菜单 |
applications-all-users:/// |
所有用户的“首选项”菜单 |
preferences-all-users:/// |
如果用户仅要将菜单或菜单项添加到自己的系统,则用户必须将菜单或菜单项添加到其他 URI 位置。表 2–2 列出了用户可添加项的菜单,以及与菜单对应的 URI 位置。
表 2–2 用户的菜单和 URI 位置
菜单 |
URI 位置 |
---|---|
“应用程序”菜单 |
applications:/// |
首选项菜单 |
preferences:/// |
有关用户可以如何定制菜单的更多信息,参阅《Java Desktop System 发行版 3 用户指南》。
一般而言,vfolder 是系统上一个或多个实际位置的菜单项的虚拟表示形式。例如,一个 vfolder 可以表示几个目录的内容。vfolder 是一个或多个物理位置的抽象表示。就 Java Desktop System 中的菜单而言,vfolder 表示实际可能位于几个目录中的属于同一个菜单的菜单项。
vfolder 信息文件是描述 vfolder 的一个 XML 文件。Vfolder 信息文件指定菜单结构。它指定菜单名称及应用程序在菜单中出现的顺序。Vfolder 信息文件的扩展名为 .vfolder-info。
以下是取自一个 vfolder 信息文件的范例:
<VFolderInfo> . . . <Folder> <Name>Applications</Name> <Desktop>Applications.directory</Desktop> <Folder> <Name>Accessories</Name> <Desktop>Accessories.directory</Desktop> <Query> <And> <Keyword>Application</Keyword> <Keyword>Utility</Keyword> </And> </Query> <DontShowIfEmpty/> </Folder> . . . </Folder> </VFolderInfo>
表 2–3 介绍了 vfolder 信息文件中的某些元素。
表 2–3 Vfolder 信息文件元素
元素 |
说明 |
---|---|
<Folder> |
包含定义菜单的名称、内容和结构的元素。 |
<Name> |
指定该菜单的名称。 |
<Desktop> |
指定一个目录项文件的名称,该文件指定菜单的名称、注释和图标。 |
<Query> |
指定要对桌面项文件运行的查询。如果桌面项文件与查询要求相匹配,相应的菜单项将显示在菜单中。 节录中的查询搜索在 Categories 键中包含关键字 Application 和 Utility 的桌面项文件。匹配的桌面项文件显示在“应用程序” 菜单中。 此元素是可选的。 |
<DontShowIfEmpty/> |
如果指定了此元素,而且菜单不包含任何菜单项,则不显示菜单。 此元素是可选的。 |
桌面项文件是提供菜单项信息的数据文件。桌面项文件指定菜单项的详细信息,如名称、执行的命令、图标等。桌面项文件还包含确定菜单项在菜单分级结构中的位置的关键字。桌面项文件的扩展名为 .desktop。
下面是桌面项文件的一个示例:
[Desktop Entry] Encoding=UTF-8 Name=Calculator Comment=Perform calculations Exec=gcalctool Icon=gcalctool.png Terminal=false Type=Application Categories=GNOME;Application;Utility;
表 2–4介绍了桌面项文件中最重要的键。
表 2–4 桌面项键
桌面项键 |
说明 |
---|---|
Encoding |
指定桌面项文件的编码。 |
Name |
指定该菜单项的名称。此名称显示在该菜单项上。 |
Comment |
指定关于该菜单项的简短说明。当您指向该菜单项时,此注释显示为工具提示。 |
Exec |
指定从菜单中选择该菜单项时执行的命令。 |
Icon |
指定表示该菜单项的图标的文件名。不指定文件名的路径或文件扩展名。 |
Terminal |
指定 Exec 键中的命令是否在终端窗口中运行。如果此值为 true,则该命令在终端窗口中运行。 对于并不创建窗口以在其中运行的命令,此键的值必须为 true。 |
Type |
指定菜单项的类型。此值应为以下选项之一:
|
Categories |
指定描述该菜单项的关键字。各个关键字之间用分号 (;) 分隔。要查看标准类目关键字的列表,请参阅以下 URL 的桌面菜单指标: http://www.freedesktop.org vfolder 信息文件将这些关键字映射到菜单。 |
有关桌面项文件中的键的更多信息,参见以下 URL 中的桌面项规范:
http://www.freedesktop.org
面板启动程序和桌面对象也使用桌面项文件。启动程序和桌面对象的桌面项文件所提供的信息与菜单项信息相同。例如,桌面项文件提供用户选择启动程序或对象时要运行的命令。
目录项文件是提供菜单信息的数据文件。目录目文件指定菜单的详细信息,如名称、工具提示、图标等。目录项文件的扩展名为 .directory。
下面是目录项文件的一个示例:
[Desktop Entry] Name=Accessories Comment=Accessories menu Icon=gnome-util.png Type=Directory
表 2–5介绍了目录项文件中最重要的键。
表 2–5 目录项键
目录项键 |
说明 |
---|---|
Name |
指定该菜单的名称。此名称显示在该菜单上。 |
Comment |
指定关于该菜单的简短说明。当您指向该菜单时,此注释显示为工具提示。 |
Icon |
指定表示该菜单的图标的文件名。不指定文件名的路径或文件扩展名。 |
Type |
指定菜单的类型。此键的值总是 Directory。 |
您可以使用以下 Java Desktop System 组件来编辑菜单:
Nautilus
文件管理器
面板上的菜单
使用文件管理器为所有用户添加菜单或菜单项时,必须将菜单或菜单项添加到 URI 位置。表 2–1 列出了可以添加菜单项的菜单以及与菜单相对应的 URI 位置。
使用面板为所有用户定制菜单时,应使用菜单项弹出菜单。有关更多信息,参见《Java Desktop System 发行版 3 用户指南》。
也可以使用菜单配置文件和菜单数据文件来定制菜单。
可以使用以下方法为所有用户添加菜单:
使用文件管理器。
修改菜单配置文件和菜单数据文件。
要为所有用户添加菜单,请执行以下步骤:
在文件管理器窗口中,转到要将菜单添加到的位置。例如,要将菜单添加到“应用程序”菜单,请在“位置”字段中键入 applications-all-users:///,然后按回车键。
选择“文件”->“新建文件夹”。系统会在视图窗格中添加一个未命名的文件夹。该文件夹的名称已被选中。
在 Solaris 平台上,您可能要重新装入文件管理器窗口的显示才能键入文件夹的名称。
键入该文件夹的名称,然后按下回车键。您在第 1 步中转到的位置的 vfolder 信息文件将使用新菜单的详细信息自动更新。该文件夹的名称显示为菜单名称。
用户下次登录时,该菜单将位于指定的位置。
要为所有用户添加菜单,请执行以下步骤:
为要添加的菜单创建目录项文件。在 /usr/share/gnome/vfolders 目录中创建目录项文件。有关目录项文件的更多信息,参见目录项文件。
找到要将菜单添加到的位置的 vfolder 信息文件。例如,要把菜单添加到“应用程序”菜单,请找到文件 /etc/gnome-vfs-2.0/vfolders/applications-all-users.vfolder-info。
在 vfolder 信息文件中,为新菜单添加 <Folder> 元素。有关 vfolder 信息文件的更多信息,参见虚拟文件夹和菜单。
用户下次登录时,该菜单将位于指定的位置。
要为所有用户将菜单项添加到菜单中,请执行以下步骤:
为要添加的菜单项创建桌面项文件。有关桌面项文件的更多信息,参见桌面项文件。
打开文件管理器窗口。选择“文件”->“新建窗口”打开另一个文件管理器窗口。
在一个窗口中,转到要将菜单项添加到的位置。例如,要将菜单项添加到“首选项”菜单中,请在 “位置”字段中键入 preferences-all-users:///,然后按回车键。
在另一个窗口中,选择为菜单项创建的桌面项文件。将桌面项文件拖动到要将菜单项添加到的位置。
或者,也可以复制桌面项文件,然后将该文件粘贴到要将菜单项添加到的位置。
用户下次登录时,该菜单项将位于指定的位置。
要为所有用户编辑菜单的属性,请执行以下步骤:
从面板中,打开要编辑的菜单。在菜单中右击任意菜单项。
选择“整个菜单”-> “属性”。即可显示“启动程序属性”对话框。
在“启动程序属性”对话框中修改该菜单的属性。有关“启动程序属性”对话框中元素的更多信息,参见《Java Desktop System 发行版 3 用户指南》。
单击“确定”。
要编辑菜单项,请执行以下步骤:
从面板中,打开包含要编辑的菜单项的菜单。右击要编辑的菜单项。
选择属性。即可显示“启动程序属性”对话框。
在启动程序属性对话框中修改菜单项的属性。有关“启动程序属性”对话框中元素的更多信息,参见《Java Desktop System 发行版 3 用户指南》。
单击“确定”。
请执行以下步骤:
从面板中,打开包含要删除的菜单项的菜单。
右击要删除的项,然后选择“删除此项”。
用户下次登录时,菜单中将不显示该菜单项。
如果满足以下条件,用户将无法修改菜单:
/etc/gnome-vfs-2.0/vfolders 目录中存在与菜单相对应的 vfolder 信息文件。
vfolder 信息文件与对应于菜单的 URI 位置同名。
要配置菜单使用户无法修改它,请执行以下步骤:
在 /etc/gnome-vfs-2.0/vfolders 目录中,为要配置的菜单创建 vfolder 信息文件。
为 vfolder 信息文件指定与要配置的菜单相对应的 URI 位置相同的名称。例如,要配置“应用程序”菜单,请在 /etc/gnome-vfs-2.0/vfolders 目录中创建名为 applications.vfolder-info 的 vfolder 信息。