Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 12 章 集成应用程序

当将应用程序与 GNOME 桌面集成时,系统管理员通常会执行与自定义 Applications 菜单结构和 MIME 类型相关的任务,例如:

12.1. 定制菜单

GNOME 菜单系统基于 freedesktop.org 桌面菜单规范,由三组主要的配置和数据文件组成:
桌面条目文件(.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 文件包含 Applications 菜单布局的定义。
目录条目文件(.directory)
.directory 文件提供有关每个菜单的数据,如其名称,并位于 /usr/share/desktop-directories/ 中。

获取更多信息

有关桌面条目文件的更多信息,请参阅位于 freedesktop.org 网站的 桌面条目规范
有关描述 GNOME 菜单系统的实现的详细信息,请参阅位于 freedesktop.org 网站的 桌面菜单规范

12.1.1. 为单个用户删除菜单项

给定用户的 Applications 菜单自定义默认存储在 ~/.config/menus/gnome-applications.menu 定义文件中。可以通过设置 $XDG_DATA_HOME 环境变量来覆盖该文件的位置。
要覆盖 Applications 菜单的默认值,您首先需要创建一个 gnome-applications.menu 文件。请注意,从 Applications 菜单中删除项目,其子菜单也会将其从 活动概览 中的 Applications 视图中删除,从而防止用户在 活动概览 中搜索该项目。

过程 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>
    如上所示,该文件包含一个 <Menu> 部分,用于指定子菜单的名称(附件)、.desktop 文件的名称(gcalctool.desktop),并包含 <Exclude> 元素。

12.1.2. 删除所有用户的菜单项

默认情况下,所有用户的 Applications 菜单自定义都存储在 /etc/xdg/menus/applications.menu 定义文件中。可以通过设置 $XDG_CONFIG_DIRS 环境变量来覆盖该文件的位置。
要覆盖 Applications 菜单的默认值,您需要编辑 .menu 文件。请注意,从 Applications 菜单中删除项目,其子菜单也会将其从 活动概览 中的 Applications 视图中删除,从而防止用户在 活动概览 中搜索该项目。

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

  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. 编辑 /etc/xdg/menus/applications.menu 文件,并使用 <Menu> 元素在该 .menu 文件末尾最后一个 </Menu> 标签前添加一个新的 <Exclude> 部分,如下所示:
    <!-- 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. 删除单个用户的子菜单

给定用户的 Applications 菜单自定义默认存储在 ~/.config/menus/gnome-applications.menu 定义文件中。可以通过设置 $XDG_DATA_HOME 环境变量来覆盖该文件的位置。
要覆盖 Applications 菜单的默认值,您首先需要创建一个 gnome-applications.menu 文件。请注意,从 Applications 菜单中删除子菜单也会从 活动概览 中的 Applications 视图中删除该子菜单中包含的所有菜单项,从而防止用户在 活动概览 中搜索这些项目。

例 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>
如上所示,该文件包含一个指定子菜单名称(系统工具)的<Menu> 部分,并包含 <Deleted/> 标签。

12.1.4. 删除所有用户的子菜单

默认情况下,所有用户的 Applications 菜单自定义都存储在 /etc/xdg/menus/applications.menu 定义文件中。可以通过设置 $XDG_CONFIG_DIRS 环境变量来覆盖该文件的位置。
要覆盖 Applications 菜单的默认值,您需要编辑 .menu 文件。请注意,从 Applications 菜单中删除子菜单也会从 活动概览 中的 Applications 视图中删除该子菜单中包含的所有菜单项,从而防止用户在 活动概览 中搜索这些项目。

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

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

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

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

</Menu>