第 12 章 集成应用程序
当将应用程序与 GNOME 桌面集成时,系统管理员通常会执行与自定义 Applications 菜单结构和 MIME 类型相关的任务,例如:
- 为应用程序添加或修改菜单项,或通过创建或修改子菜单来自定义 Applications 菜单结构。有关菜单自定义的更多信息,请参阅 第 12.1 节 “定制菜单”。
- 自定义
活动概览
中 GNOME Shell dash 上看到的默认喜欢的应用程序。有关如何进行此操作的更多信息,请参阅 第 12.2 节 “自定义默认喜欢的应用程序”。 - 为应用程序添加或修改 MIME 类型,并将应用程序与特定的 MIME 类型关联。有关配置 MIME 类型的更多信息,请参阅 第 12.3 节 “配置文件关联”。
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. 示例:从附件子菜单中删除计算器菜单项
- 查询
/usr/share/applications/
目录的内容,并确定与您要删除的菜单项对应的.desktop
文件:$
grep -r "Name=Calculator" /usr/share/applications/
/usr/share/applications/gcalctool.desktop:Name=Calculator如上所示,计算器 菜单项对应于/usr/share/applications/gcalctool.desktop
文件。 - 创建一个
~/.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. 示例:从附件子菜单中删除计算器菜单项
- 查询
/usr/share/applications/
目录的内容,并确定与您要删除的菜单项对应的.desktop
文件:$
grep -r "Name=Calculator" /usr/share/applications/
/usr/share/applications/gcalctool.desktop:Name=Calculator如上所示,计算器 菜单项对应于/usr/share/applications/gcalctool.desktop
文件。 - 编辑
/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>