跳转至内容

xdg-menu

来自 ArchWiki

xdg-menu 是一个生成 XDG 桌面菜单的工具,适用于以下 窗口管理器

KDEGNOMEXfceEnlightenment 已支持 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

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: /etc/xdg/menus/arch-applications.menu
			 
	die-on-error - abort execution on any error, 
		 default: try to continue

	verbose - print debugging information
		 
	help - print this text

update-menus

update-menus 可以从 XDG 数据更新 WM 的菜单,并且可以配置为自动进行。

这是一个围绕 xdg_menu 的脚本包装器,它依赖于 /etc/update-menus.conf

要使用它,您需要安装 archlinux-xdg-menu 包(xdg_menu)。

/etc/update-menus.conf 中,您必须从窗口管理器列表中选择要为其生成菜单的窗口管理器。允许使用 # 的注释。

所有生成的菜单都放在 /var/cache/xdg-menu/。有关更多信息,请参阅本页的 WM 特定 #示例 部分。

示例

Awesome

使用 xdg_menu

生成菜单

$ xdg_menu --format awesome > ~/.config/awesome/xdg_menu.lua

然后,像下面那样编辑文件 ~/.config/awesome/rc.lua

  • 为您的新 menu.lua 文件添加一个 require 语句。
  • 为您的 awful.menu 对象添加一个调用 xdg-menu 的新菜单条目。
...
xdg_menu = require("xdg_menu")
...

...
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                    { "Applications", xdgmenu },
                                    { "open terminal", terminal }
                                  }
                        })
...

Blackbox

使用 xdg_menu

生成菜单

$ xdg_menu --format blackbox > ~/.blackbox/xdg_menu

修改文件 ~/blackbox/menu 以包含生成的菜单。例如,添加此行

[include] (xdg_menu)

使用 update-menus

  • /etc/update-menus.conf 中取消注释 blackbox
  • 以 root 身份运行 update-menus
  • 修改文件 ~/blackbox/menu 以包含生成的菜单
[include] (/var/cache/xdg-menu/blackbox/boxrc)

Fluxbox

使用 xdg_menu

生成菜单

$ xdg_menu --format fluxbox > ~/.fluxbox/xdg_menu

修改文件 ~/fluxbox/menu 以包含生成的菜单。例如,添加此行

[include] (xdg_menu)

使用 update-menus

  • /etc/update-menus.conf 中取消注释 fluxbox
  • 以 root 身份运行 update-menus
  • 修改文件 ~/fluxbox/menu 以包含生成的菜单
[include] (/var/cache/xdg-menu/fluxbox/boxrc)

Fvwm

使用 xdg_menu

生成菜单

$ xdg_menu --format fvwm2 > ~/.fvwm/xdg_menu

修改文件 ~/.fvwm/config 以读取生成的菜单并将其添加到根菜单中

read xdg_menu
...
AddToMenu MenuFvwmRoot  "Fvwm" Title
...
+                       "&0. Applications" Popup xdg_menu
...

使用 update-menus

  • /etc/update-menus.conf 中取消注释 fvwm2
  • 以 root 身份运行 update-menus
  • 修改文件 .fvwm 以读取生成的菜单并将其添加到根菜单中
read /var/cache/xdg-menu/fvwm2/fvwm2rc
...
AddToMenu MenuFvwmRoot  "Fvwm" Title
...
+                       "&0. Applications" Popup xdg_menu
...

IceWM

使用 xdg_menu

将以下行添加到 ~/.icewm/menu

includeprog xdg_menu --format icewm

或者只需运行以下命令以添加到 Programs 菜单下方

$ xdg_menu --format icewm >> ~/.icewm/programs

使用 update-menus

  • /etc/update-menus.conf 中取消注释 icewm
  • 以 root 身份运行 update-menus
  • 将以下行添加到 ~/.icewm/menu
include "/var/cache/xdg-menu/icewm/programs"

或者只需在 ~/.icewm/programs 中创建指向 /var/cache/xdg-menu/icewm/programs 的符号链接,以添加到 Programs 菜单下方。

JWM

使用 xdg_menu

将以下行添加到 ~/.jwmrc<RootMenu> 元素下方

<Include>exec: xdg_menu --format jwm --fullmenu</Include>

使用 update-menus

  • /etc/update-menus.conf 中取消注释 jwm
  • 以 root 身份运行 update-menus
  • 将以下行添加到 ~/.jwmrc<RootMenu> 元素下方
<Include>/var/cache/xdg-menu/jwm/menu.xml</Include>

Openbox

将 xdg_open 用作管道菜单,它提供了自动更新菜单的额外好处,当您安装新应用程序时。

将以下行添加到 ~/.config/openbox/menu.xml<menu id="root-menu"> 元素下方

<menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe" />

一个非常基本的示例

<?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" />
  <separator />
  <item label="Log Out">
    <action name="Exit">
      <prompt>yes</prompt>
    </action>
  </item>
</menu>

</openbox_menu>

使用 update-menus

  • /etc/update-menus.conf 中取消注释 openbox
  • 以 root 身份运行 update-menus
  • 将以下行添加到 ~/.config/openbox/menu.xml<menu id="root-menu"> 元素下方
<menu id="applications" label="Applications" execute="cat /var/cache/xdg-menu/openbox/menu.xml"/>

twm

使用 xdg_menu

使用

$ xdg_menu --format twm > my-twm-menu

并手动将其添加到 ~/.twmrc。对于带有 m4 预处理的 twm 派生版本,如 vtwm 或 ctwm,可以通过添加以下内容包含:

sinclude(`/PATH/TO/my-twm-menu')

*twmrc

使用 update-menus

  • /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

使用

$ xdg_menu --format WindowMaker > my-wm-menu

并添加

#include "my-wm-menu"

到您的 WindowMaker 菜单文件中。

您还可以使用 WPrefs 的“应用程序菜单定义”,并将 xdg 命令作为参数添加到“生成的子菜单”对象中。

使用 update-menus

  • /etc/update-menus.conf 中取消注释 WindowMaker
  • 以 root 身份运行 update-menus
#include "/var/cache/xdg-menu/WindowMaker/wmrc"

到您的菜单文件中。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.