第 12 章 整合应用程序

在 GNOME 桌面上整合应用程序时,系统管理员通常会执行有关定制“应用程序”菜单结构和 MIME 类型的相关任务,例如:

12.1. 自定义菜单

GNOME 菜单系统基于 freedesktop.org Desktop Menu Specification,由三组主要的配置文件和数据文件组成。
桌面项文件(.desktop
后缀 .desktop 的文件提供每个菜单项的名称、运行命令、图标等数据。后缀 .desktop 的条目文件也规定了菜单项在菜单结构中的位置,以及在“活动概览”中搜寻应用程序所使用的键值。
.desktop 系统文件位于 /usr/share/applications/ 目录下。针对用户特定的 .desktop 文件位于 ~/.local/share/applications/ 目录下。
以下是一个名为 ~/.local/share/applications/myapplication1.desktop.desktop 样本文件:
[Desktop Entry]
Type=Application
Name=My Application 1
Icon=myapplication1
Exec=myapplication1
Categories=Network;WebBrowser;
MimeType=application/x-newtype
上述文件规定了应用程序的名称(My Application 1),应用程序的图标(myapplication1),以及运行该应用程序的命令(myapplication1)。它还将这个应用程序放置在一个特定的类别目录下(“Network;WebBrowser;”),并且将该应用程序与“application/x-newtype”MIME 类型关联。
菜单定义文件(.menu
.menu 文件是 XML 配置文件,它们规定了菜单和菜单项的顺序、级别和合并。
计算机范围的 .menu 文件位于 /etc/xdg/menus/ 目录下。针对用户特定的 .menu 文件位于 ~/.config/menus/ 目录下,它们可以用来覆盖计算机范围的 .menu 文件中规定的值。
特别的一点是, /etc/xdg/menus/applications.menu 文件中包括对“应用程序”菜单布局的定义。
目录项文件(.directory
.directory 文件提供每个菜单的名称等数据,它们位于 /usr/share/desktop-directories/ 中。

获得更多信息

关于描述桌面项文件的更多信息,请参见位于 freedesktop.org 网站的《桌面项说明 》:
关于描述 GNOME 菜单系统执行情况的详细信息,请参见位于 freedesktop.org 网站的《桌面菜单说明 》。

12.1.1. 为个别用户移除某个菜单项

针对某个指定用户的“应用程序”菜单定制默认存储于 ~/.config/menus/gnome-applications.menu 定义文件中。该文件的位置可以通过设置 $XDG_DATA_HOME 环境变量被覆盖。
如需覆盖“应用程序”菜单的默认属性,首先需要创建一个 gnome-applications.menu 文件。要注意,从“应用程序”菜单移除一个目录项及其子菜单时,也会将它从“活动概览”中的应用程序视图里移除,从而防止用户在“概览”中搜索该项。

过程 12.1. 示例:从附件子菜单中移除计算器菜单项

  1. 查阅 /usr/share/applications/ 目录的内容,并确定您想要移除的菜单项所对应的 .desktop 文件:
    $ grep -r "Name=Calculator" /usr/share/applications/
    /usr/share/applications/gcalctool.desktop:Name=Calculator
    如上所示,“计算器”菜单项对应 /usr/share/applications/gcalctool.desktop 文件。
  2. 创建一个 ~/.config/menus/gnome-applications.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>
      <MergeFile type="parent">/etc/xdg/menus/gnome-applications.menu</MergeFile>
    
    <!-- Removes the Calculator from the Accessories submenu -->
      <Menu>
        <Name>Accessories</Name>
        <Exclude>
          <Filename>gcalctool.desktop</Filename>
        </Exclude>
      </Menu>
    <!-- END of Calculator removal content -->
    
    </Menu>
    如上所示,文件中包括一个规定子菜单名字(Accessories)的 <Menu> 部分、.desktop 文件的名字(gcalctool.desktop)、以及 <Exclude> 元素。

12.1.2. 为所有用户移除某个菜单项

面向所有用户的“应用程序”菜单定制默认存储于 /etc/xdg/menus/applications.menu 定义文件中。该文件的位置可以通过设置 $XDG_CONFIG_DIRS 环境变量被覆盖。
如需覆盖“应用程序”菜单的默认属性,您需要编辑那个 .menu 文件。要注意,从“应用程序”菜单移除一个目录项及其子菜单时,也会将它从“活动概览”中的应用程序视图里移除,从而防止用户在“概览”中搜索该项。

过程 12.2. 示例:从附件子菜单中移除计算器菜单项

  1. 查阅 /usr/share/applications/ 目录的内容,并确定您想要移除的菜单项所对应的 .desktop 文件:
    $ grep -r "Name=Calculator" /usr/share/applications/
    /usr/share/applications/gcalctool.desktop:Name=Calculator
    如上所示,“计算器(Calculator)”菜单项对应 /usr/share/applications/gcalctool.desktop 文件。
  2. 编辑 /etc/xdg/menus/applications.menu 文件,并通过如下所示的 <Exclude> 元素在那个 .menu 文件末尾处最后的 </Menu> 标签前添加一个新的 <Menu> 部分。
    <!-- Removes the Calculator from the Accessories submenu -->
    
      <Menu>
        <Name>Accessories</Name>
        <Exclude>
          <Filename>gcalctool.desktop</Filename>
        </Exclude>
      </Menu>
    
    <!-- END of Calculator removal content -->
    
    </Menu> <!-- End Applications -->

12.1.3. 为个别用户移除某个子菜单

针对某个指定用户的“应用程序”菜单定制默认存储于 ~/.config/menus/gnome-applications.menu 定义文件中。该文件的位置可以通过设置 $XDG_DATA_HOME 环境变量被覆盖。
如需覆盖“应用程序”菜单的默认属性,首先需要创建一个 gnome-applications.menu 文件。要注意,从“应用程序”菜单中移除一个子菜单时,也会将它所包括的所有菜单项从“活动概览”中的应用程序视图里移除,从而防止用户在“概览”中搜索这些项目。

例 12.1. 从应用程序菜单中移除系统工具子菜单

创建一个 ~/.config/menus/gnome-applications.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>
  <MergeFile type="parent">/etc/xdg/menus/gnome-applications.menu</MergeFile>

<!-- Removes the System Tools submenu from the Applications menu-->

  <Menu>
    <Name>System Tools</Name>
    <Deleted/>
  </Menu>

<!-- END of System Tools removal content -->

</Menu>
如上所示,文件中包括一个规定子菜单名字(System Tools)的 <Menu> 部分,还包括 <Deleted/> 标签。

12.1.4. 为所有用户移除某个子菜单

面向所有用户的“应用程序”菜单定制默认存储于 /etc/xdg/menus/applications.menu 定义文件中。该文件的位置可以通过设置 $XDG_CONFIG_DIRS 环境变量被覆盖。
如需覆盖“应用程序”菜单的默认属性,您需要修改那个 .menu 文件。要注意,从“应用程序”菜单中移除一个子菜单时,也会将它所包括的所有菜单项从“活动概览”中的应用程序视图里移除,从而防止用户在“概览”中搜索这些项目。

例 12.2. 从应用程序菜单中移除系统工具子菜单

编辑 /etc/xdg/menus/applications.menu 文件,并通过如下所示的 <Deleted/> 元素在那个 .menu 文件末尾处最后的 </Menu> 标签前添加一个新的 <Menu> 部分。
<!-- Removes the System Tools submenu from the Applications menu-->

  <Menu>
    <Name>System Tools</Name>
    <Deleted/>
  </Menu>

<!-- END of System Tools removal content -->

</Menu>