Oracle® Solaris 11.2 Desktop 管理员指南

退出打印视图

更新时间: 2014 年 7 月
 
 

使用菜单定义文件

菜单文件定义 Oracle Solaris Desktop 菜单栏中使用的菜单的分层结构。通过修改这些文件,可以为所有用户或单个用户定制菜单,具体取决于所修改的 applications.menu 文件的位置。

菜单文件必须位于 $XDG_CONFIG_DIRS/menus/applications.menu 目录下。要使用菜单文件,必须设置 XDG base directory specification(XDG 基目录规范)中定义的 $XDG_CONFIG_DIRS 环境变量。

    为了解析 applications.menu 文件的位置,系统按照以下顺序搜索缺省路径:

  1. 搜索 $XDG_CONFIG_HOME 路径中的每个目录以查找 menus/applications.menu 文件。如果未设置 $XDG_CONFIG_HOME 环境变量,缺省搜索 ~/.config/ 目录。

  2. 搜索 $XDG_CONFIG_DIRS 路径中的每个目录以查找 menus/applications.menu 文件。如果未设置 $XDG_CONFIG_DIRS 环境变量,缺省搜索 /etc/xdg/ 目录。

  3. 使用找到的第一个 applications.menu 文件。

以下示例提供了一个 .menu 文件示例:

示例 3-1  .menu 文件示例
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
  <Name>Applications</Name>
  <Directory>Applications.directory</Directory>

  <!-- Read standard .directory and .desktop file locations -->
  <DefaultAppDirs/>
  <DefaultDirectoryDirs/>

  <!-- Accessories submenu -->
  <Menu>
    <Name>Accessories</Name>
    <Directory>Accessories.directory</Directory>
    <Include>
      <And>
        <Category>Utility</Category>
        <Not>
        

<Category>System</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- End Accessories -->

  <!-- possibly more submenus -->

</Menu> <!-- End Applications -->

在该示例中,顶层菜单名为 Applications,该菜单是使用 <Name> 元素指定的。Applications 菜单包含单个子菜单,但允许使用多个子菜单。每个子菜单还可以具有一个 <Include> 元素以使用匹配规则对一组可用桌面项进行过滤。

例如,<Category> 元素是基本的匹配规则,仅当 Categories 键包含 <Category> 元素的内容时选择一个桌面项文件。在该示例中,仅当 Accessories 菜单在 Categories 键中包含单词 "Utility" 但不包含单词 "System" 时,该菜单才包含一个桌面项。有关 Categories 关键字的更多信息,请参见Working With Desktop Entry Files

下表介绍了 .menu 文件中的一些元素。

表 3-1  菜单定义文件元素
元素
说明
Menu
可能包含嵌套的 <Menu> 元素的根元素。嵌套的元素定义子菜单。这些元素嵌套的方式决定菜单结构。
Name
指定菜单的名称。每个 <Menu> 元素必须包含一个 <Name> 元素。
Directory
指定用于指定菜单名称、内容和图标的目录项文件的名称。如果未指定该元素,则必须使用 <Name> 元素来显示菜单名称。
缺省情况下,在 $XDG_DATA_DIRS/desktop-directories/ 目录(在 XDG 菜单规范中定义)中搜索 .directory 文件。
DefaultAppDirs
指示应扫描 $XDG_DATA_DIRS/applications/ 目录中的所有可用桌面项的指令。如果未包含该指令,则不在这些位置扫描桌面项。
DefaultDirectoryDirs
指示应扫描 $XDG_DATA_DIRS/desktop-directories/ 目录中的所有可用目录项的指令。如果未包含该指令,则不在这些位置扫描目录项。
Include
包含一列用于生成菜单内容的匹配规则。可以包含 <Filename><Category><And><Or><Not><All> 匹配规则。
Exclude
<Include> 元素的作用相反的元素。如果有桌面项匹配该元素,则从前一个包含的元素集中排除这些元素。因此,该元素必须出现在 <Include> 元素之后。
Filename
Desktop File-Id 匹配 <Filename> 元素的内容时选择桌面项的匹配规则。
Category
Categories 键匹配 <Category> 元素的内容时选择桌面项的匹配规则。
And
当某个桌面项由 <And> 元素中所有嵌套的匹配规则选择时选择该桌面项的匹配规则。
Or
当某个桌面项由 <Or> 元素中任何嵌套的匹配规则选择时选择该桌面项的匹配规则。
Not
当某个桌面项由 <Not> 元素中任意嵌套的匹配规则选择时不选择该桌面项的匹配规则。
All
选择所有桌面项的匹配规则。

有关 .menu 文件中的元素的详细说明,请参见 XDG menu specification(XDG 菜单规范)。