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)