「GNOME 3」- 菜单分类与菜单条目

  CREATED BY JENKINSBOT

问题描述

在桌面环境中,当安装应用程序时,会自动创建菜单条目,并保存到某些分类中。但是:
1)这些菜单分类不符合我们的习惯,我们需要按照自己的需求进行分类;
2)还有部分菜单条目是我们自定义的,也需要在特定菜单分类中显示;

该笔记将记录:在 GNOME 3 中,如何添加自定义菜单条目自定义菜单分类,以及相关的配置方法。

解决方案

菜单文件(.menu)

https://developer.gnome.org/menu-spec/
https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html

作用:
1)指定 菜单、菜单条目 的顺序、层次结构、合并关系。.menu 文件为 XML 配置文件,
2)文件 /etc/xdg/menus/applications.menu 包含主应用程序菜单布局的定义。

所在目录:
1)系统级配置:/etc/xdg/menus/
2)用户级配置:$HOME/.config/menus/

目录文件(.directory)

作用:
1).directory文件提供有关菜单某个条目的信息,例如:该条目名称、工具提示、图标

所在目录
1)系统级配置:/usr/share/desktop-directories/
2)用户级配置:$HOME/.local/share/desktop-directories/

桌面文件(.desktop)

Desktop Entry Specification

作用:
1)文件 .desktop 提供有关菜单中某个项的数据,如其名称、要运行的命令、图标。.desktop文件还包含了用于确定其在菜单中位置的关键字。
2)文件 ~/.local/share/applications/mimeinfo.cache 包含 MIME 类型信息,这些类型信息将$HOME/.local/share/applications/*.desktop应用程序.desktop文件中指定的文件类型相关联。

所在目录:
1)系统级配置:/usr/share/applications
2)用户级配置:$HOME/.local/share/applications,并且可以将应用程序添加到右键单击文件时出现的“Open With >”的子菜单中。

常用菜单编辑工具

这些工具或多或少都有缺陷;对于复杂配置,推荐学习菜单系统,然后直接编辑配置文件。

Alacarte(推荐)

菜单编辑工具,安装:

apt-get install alacarte

Meow

菜单编辑工具。
安装参考:http://pnmougel.github.io/meow/
Github:https://github.com/pnmougel/meow

MenuLibre

menulibre

安装并运行:

# Kali GNU/Linux Rolling
# 当前的版本:menulibre 2.0.7
apt-get insatll menulibre

/usr/bin/menulibre

对于 MenuLibre cannot be run as root 提示:
如果不能以 root 运行,修改 /usr/lib/python3/dist-packages/menulibre/MenulibreApplication.py 文件,然后搜索 MenuLibre cannot be run as root 注释掉和弹窗有关的代码即可(路径视具体情况而定)

常见问题处理

Q:在 Open with … 中,菜单项未出现,导致无法选择其作为打开文件的默认工具
A:在 .desktop 的 Exec= 中,需要 %F 暗示该程序支持打开文件;

Q:为什么某些菜单项已经创建,但是无法搜索到或无法显示?
A:Exec= 所指定的程序文件必须存在,否则无法显示。我们通过前缀 env 命令来解决该问题;

参考文献

Arch/GNOME
Desktop files: putting your application in the desktop menus
菜单系统实现的详细信息