xdg-menu

出自 Arch 维基

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

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

$ 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

$ xdg_menu --format icewm --fullmenu --root-menu /etc/xdg/menus/arch-applications.menu >> ~/.icewm/programs

使用 update-menus

  • 取消注释 /etc/update-menus.conf 中的 icewm
  • 以 root 身份运行 update-menus
  • ~/.icewm/programs 中创建指向 /var/cache/xdg-menu/icewm/programs 的符号链接。

FluxBox

使用 xdg_menu

$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu > ~/.fluxbox/my-menu

更改您的菜单文件以包含生成的菜单。

例如,添加这行

[include] (my-menu)

使用 update-menus

  • 取消注释 /etc/update-menus.conf 中的 fluxbox
  • 以 root 身份运行 update-menus
  • 更改您的菜单文件以包含生成的菜单。

例如,添加这行

[include] (/var/cache/xdg-menu/fluxbox/boxrc)

OpenBox

使用 xdg_menu

使用以下命令生成菜单

$ 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>

使用 update-menus

  • 取消注释 /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

使用

$ 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 中。

使用 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 --root-menu /etc/xdg/menus/arch-applications.menu >my-wm-menu

并添加到

#include "my-wm-menu"

您的 WindowMaker 菜单文件中。

您还可以使用 WPrefs “Application Menu Definitions”,并在“Generated Submenu”对象中将 xdg 命令添加为参数。

使用 update-menus

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

到您的菜单文件中。

Fvwm2

使用 xdg_menu

生成菜单

$ 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

使用 update-menus

  • 取消注释 /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

$ xdg_menu --format blackbox  --root-menu /etc/xdg/menus/arch-applications.menu >my-menu

更改您的菜单文件以包含生成的菜单。

例如,添加这行

[include] (my-menu)

使用 update-menus

  • 取消注释 /etc/update-menus.conf 中的 blackbox
  • 以 root 身份运行 update-menus
  • 更改您的菜单文件以包含生成的菜单。

例如,添加这行

[include] (/var/cache/xdg-menu/blackbox/boxrc)

另请参阅