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

认识

在桌面环境中,当安装应用程序时,会自动创建菜单条目,并保存到某些分类中。但是:
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/

常用菜单编辑工具

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

Alacarte(推荐)

官网:
文档:
仓库:https://github.com/GNOME/alacarte | https://gitlab.gnome.org/GNOME/alacarte

菜单编辑工具,安装:

apt-get install alacarte

MenuLibre

主页:https://www.bluesabre.org/projects/menulibre/
文档:
仓库:https://github.com/bluesabre/menulibre

安装并运行:

# 当前的版本:menulibre 2.0.7
apt-get insatll menulibre

/usr/bin/menulibre

# https://flathub.org/apps/org.bluesabre.MenuLibre

flatpak install flathub org.bluesabre.MenuLibre
flatpak run org.bluesabre.MenuLibre

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

Meow

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

常见问题处理

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

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

参考文献

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