xdg-menu
xdg-menu 是一个为以下窗口管理器生成 XDG 桌面菜单的工具
KDE、GNOME、Xfce 和 Enlightenment 已经兼容 XDG。
安装
安装 archlinux-xdg-menu 软件包。
菜单层级
- 应用程序
- 辅助功能
- 附件
- 开发
- 教育
- 游戏
- 图形
- 互联网
- 多媒体
- 办公
- 其他
- 科学
- 系统
配置
xdg_menu 依赖三组信息生成菜单:根菜单,或者说通常在命令行中传递的 XML 菜单模板;上次运行时缓存的信息;以及一系列配置文件。
- 您可以在
/etc/xdg/menus
中找到一些 XML 菜单模板。 - 如果修改 xdg_menu 中的代码以更改布局,请确保删除
~/.xdg_menu_cache
中的所有内容,否则您将花费数小时试图弄清楚为什么您对 perl 脚本的更改没有生效。 - 您可以在
/usr/share/applications
中找到单个应用程序配置。
其他配置文件目录可以在 /usr/share
下找到。在大多数情况下,您不需要修改这些文件。但是,如果您想更改菜单的布局,您可以修改菜单模板进行小幅更改。大幅更改需要调整实际的 xdg_menu perl 脚本。如果您发现应用程序未出现或名称奇怪,则需要查看 /usr/share/applications
中的 .desktop 文件。查看 桌面条目规范。
从其他目录添加桌面条目
默认情况下,Xdg-menu 将会填充安装到 /usr/share/applications
的桌面条目的应用程序。要将桌面条目安装到用户文件夹(例如 ~/.local/share/applications
)的应用程序添加到菜单中,请编辑 /etc/xdg/menus/arch-applications.menu
文件,并为相关目录添加一个 <AppDir>
标签,请参见下文
/etc/xdg/menus/arch-applications.menu
<Menu> <Name>Applications</Name> <Directory>Arch-Applications.directory</Directory> <DefaultAppDirs/> <AppDir>/home/username/.local/share/applications</AppDir> <DefaultDirectoryDirs/> <DefaultMergeDirs/> ...
用法
xdg_menu [--format <format>] [--desktop <desktop>] [--charset <charset>] [--language <language>] [--root-menu <root-menu>] [--die-on-error] [--fullmenu] [--help] format - output format possible formats: twm, WindowMaker, fvwm2, icewm, ion3 blackbox, fluxbox, openbox, xfce4, openbox3, openbox3-pipe, awesome readable default: WindowMaker fullmenu - output a full menu and not only a submenu desktop - desktop name for NotShowIn and OnlyShowIn default: the same as format charset - output charset default: <locale> language - output language default: <locale> root-menu - location of root menu file default: /opt/gnome/etc/xdg/menus/applications.menu die-on-error - abort execution on any error, default: try to continue verbose - print debugging information help - print this text
update-menus 从 XDG 数据更新窗口管理器的菜单,并且可以配置为自动执行。
这是一个 xdg_menu 的脚本封装,依赖于 /etc/update-menus.conf
要使用它,您需要安装 archlinux-xdg-menu 软件包 (xdg_menu)
在 /etc/update-menus.conf
中,您必须从窗口管理器列表中选择要为其生成菜单的窗口管理器。允许使用 # 进行注释。
所有生成的菜单都放在 /var/cache/xdg-menu/
中。请参阅本页的窗口管理器特定 #示例 部分以获取更多信息。
示例
Awesome
$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu > ~/.config/awesome/archmenu.lua
然后,如下所示编辑您的 rc.lua
。
- 为您的新
menu.lua
文件添加一个 require 语句。 - 为您的
awful.menu
对象添加一个条目,用于调用 xdg-menu 的新菜单。
... xdg_menu = require("archmenu") ... ... mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, { "Applications", xdgmenu }, { "open terminal", terminal } } }) ...
IceWM
$ xdg_menu --format icewm --fullmenu --root-menu /etc/xdg/menus/arch-applications.menu >> ~/.icewm/programs
- 取消注释
/etc/update-menus.conf
中的 icewm。 - 以 root 身份运行
update-menus
。 - 在
~/.icewm/programs
中创建指向/var/cache/xdg-menu/icewm/programs
的符号链接。
FluxBox
$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu > ~/.fluxbox/my-menu
更改您的菜单文件以包含生成的菜单。
例如,添加这行
[include] (my-menu)
- 取消注释
/etc/update-menus.conf
中的 fluxbox。 - 以 root 身份运行
update-menus
。 - 更改您的菜单文件以包含生成的菜单。
例如,添加这行
[include] (/var/cache/xdg-menu/fluxbox/boxrc)
OpenBox
使用以下命令生成菜单
$ xdg_menu --format openbox3 --root-menu /etc/xdg/menus/arch-applications.menu > xdg-menu.xml
并手动将其添加到您的 menu.xml
中。例如,将 xdg-menu.xml
放入 menu.xml
并添加
<menu id="Applications" />
到 root-menu
中。
使用 xdg_open 作为管道菜单,您可以额外获得一个好处,即在安装新应用程序时菜单会自动更新。
将以下内容添加到 menu.xml
中 root menu 标签之间的某个位置
<menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />
一个非常基础的示例
<?xml version="1.0" encoding="UTF-8"?> <openbox_menu xmlns="http://openbox.org/3.4/menu"> <menu id="root-menu" label="Openbox 3"> <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" /> <separator /> <item label="Log Out"> <action name="Exit"> <prompt>yes</prompt> </action> </item> </menu> </openbox_menu>
- 取消注释
/etc/update-menus.conf
中的 openbox。 - 以 root 身份运行
update-menus
。 - 更改您的
menu.xml
文件以包含生成的菜单。
例如,将以下内容添加到 root-menu
<menu id="xdg-menu" label="XDG Menu" execute="cat /var/cache/xdg-menu/openbox/menu.xml"/>
Twm
使用
$ xdg_menu --format twm --root-menu /etc/xdg/menus/arch-applications.menu >my-twm-menu
并手动将其添加到 twmrc 中。对于使用 m4 预处理的 twm 衍生版本,例如 vtwm 或 ctwm,可以通过添加以下内容来包含它
sinclude(`/PATH/TO/my-twm-menu')
到 *twmrc
中。
- 取消注释
/etc/update-menus.conf
中的 twm。 - 在
/etc/X11/twm/system.twmrc
中添加一个文件应用程序菜单(将其添加到defops menu
中)
"apps" f.menu "Applications"
- 以 root 身份运行
update-menus
。 - 运行
twm -f /var/cache/xdg-menu/twm/twmrc
。
/etc/X11/twm/system.twmrc
。WindowMaker
使用
$ xdg_menu --format WindowMaker --root-menu /etc/xdg/menus/arch-applications.menu >my-wm-menu
并添加到
#include "my-wm-menu"
您的 WindowMaker 菜单文件中。
您还可以使用 WPrefs “Application Menu Definitions”,并在“Generated Submenu”对象中将 xdg 命令添加为参数。
- 取消注释
/etc/update-menus.conf
中的 WindowMaker。 - 以 root 身份运行
update-menus
。 - 添加
#include "/var/cache/xdg-menu/WindowMaker/wmrc"
到您的菜单文件中。
Fvwm2
生成菜单
$ xdg_menu --format fvwm2 --root-menu /etc/xdg/menus/arch-applications.menu >fvwm2-menu
并将其添加到根菜单中
read fvwm2-menu AddToMenu MenuFvwmRoot "Root Menu" Title + "&0. XDG Menu" Popup xdg_menu
- 取消注释
/etc/update-menus.conf
中的 fvwm2。 - 以 root 身份运行
update-menus
。 - 更改您的
.fvwm2rc
文件以包含生成的菜单。例如
AddToMenu MenuFvwmRoot "Root Menu" Title + "&0. XDG Menu" Popup xdg_menu
read /var/cache/xdg-menu/fvwm2/fvwm2rc
BlackBox
$ xdg_menu --format blackbox --root-menu /etc/xdg/menus/arch-applications.menu >my-menu
更改您的菜单文件以包含生成的菜单。
例如,添加这行
[include] (my-menu)
- 取消注释
/etc/update-menus.conf
中的 blackbox。 - 以 root 身份运行
update-menus
。 - 更改您的菜单文件以包含生成的菜单。
例如,添加这行
[include] (/var/cache/xdg-menu/blackbox/boxrc)