第 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
[Desktop Entry] Type=Application Name=My Application 1 Icon=myapplication1 Exec=myapplication1 Categories=Network;WebBrowser; MimeType=application/x-newtypeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上面的文件指定了应用的名称(My Application 1)、应用的图标(myapplication1),以及运行应用程序的命令(myapplication1)。它还将应用程序放在指定类别(Network;WebBrowser;)中,并将应用程序与application/x-newtypeMIME 类型相关联。- 菜单定义文件(
.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/
$ grep -r "Name=Calculator" /usr/share/applications/ /usr/share/applications/gcalctool.desktop:Name=CalculatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如上所示,计算器 菜单项对应于/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><!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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如上所示,该文件包含一个<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/
$ grep -r "Name=Calculator" /usr/share/applications/ /usr/share/applications/gcalctool.desktop:Name=CalculatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如上所示,计算器 菜单项对应于/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 --><!-- 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 -->Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>
<!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>
<!-- Removes the System Tools submenu from the Applications menu-->
<Menu>
<Name>System Tools</Name>
<Deleted/>
</Menu>
<!-- END of System Tools removal content -->
</Menu>