认识
在桌面环境中,当安装应用程序时,会自动创建菜单条目,并保存到某些分类中。但是:
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
菜单系统实现的详细信息