Xdg-menu
xdg-menu是一個為以下窗口管理器生成xdg桌面菜單的工具:
KDE, Gnome, Xfce, Enlightenment已經與XDG兼容。
安裝[編輯 | 編輯原始碼]
菜單層次結構[編輯 | 編輯原始碼]
- 應用
- 輔助功能
- 配飾
- 開發
- 教育
- 遊戲
- 圖形
- 網際網路
- 多媒體
- 辦公
- 其他
- 科學
- 系統
配置[編輯 | 編輯原始碼]
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菜單將填充那些將桌面條目安裝到/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/
中。有關更多信息,請參閱本頁的「wm特定示例」部分。
示例[編輯 | 編輯原始碼]
Awesome[編輯 | 編輯原始碼]
[編輯 | 編輯原始碼]
$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu >~/.config/awesome/archmenu.lua
然後編輯 rc.lua ,如下所示
- 為新的 menu.lua 文件添加一個要求的聲明
- 為調用 xdgmenu 的新菜單的 awful.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
Ion3[編輯 | 編輯原始碼]
[編輯 | 編輯原始碼]
$ xdg_menu --format ion3 --root-menu /etc/xdg/menus/arch-applications.menu >~/.ion3/default-session--0/_xdg-menu.lua
之後,將 cfg_menus.lua 更改為包含 _xdg-menu.lua 文件,並將菜單添加到主菜單中。例如:
... dopath("_xdg-menu") -- Main menu defmenu("mainmenu", { submenu("XDG Menu", "<NAME-OF-FIRST-MENU-IN-_xdg-menu.lua-FILE>"), submenu("Programs", "appmenu"), menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"), menuentry("Help", "mod_query.query_man(_)"), menuentry("About Ion", "mod_query.show_about_ion(_)"), submenu("Styles", "stylemenu"), submenu("Session", "sessionmenu"), }) ...
[編輯 | 編輯原始碼]
- 在 /etc/update-menus.conf 取消對ion3的注釋
- 使用root用戶運行 update-menus 命令
- 將 cfg_menus.lua 更改為包含 xdg-menu.lua 文件,並將菜單添加到主菜單中
例如:
... dopath("/var/cache/xdg-menu/ion3/xdg-menu.lua") -- Main menu defmenu("mainmenu", { submenu("XDG Menu", "<NAME-OF-FIRST-MENU-IN-xdg-menu.lua-FILE>"), submenu("Programs", "appmenu"), menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"), menuentry("Help", "mod_query.query_man(_)"), menuentry("About Ion", "mod_query.show_about_ion(_)"), submenu("Styles", "stylemenu"), submenu("Session", "sessionmenu"), }) ...
FluxBox[編輯 | 編輯原始碼]
[編輯 | 編輯原始碼]
$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/arch-applications.menu >~/.fluxbox/my-menu
將菜單文件更改為包含生成的菜單。
例如添加行:
[include] (my-menu)
[編輯 | 編輯原始碼]
- 在 /etc/update-menu.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" />
進入根菜單。
作為管道菜單[編輯 | 編輯原始碼]
使用 xdg_open 作為管道菜單,您可以獲得額外的好處,即在安裝新應用程式時,菜單會自動更新。
在 menu.xml 中的根菜單標記之間添加以下內容:
<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-menu.conf 中取消對openbox的注釋
- 以root用戶運行 update-menus
- 將 menu.xml 文件更改為包含生成的菜單
例如,在根菜單中添加以下內容:
<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-menu.conf 中取消對twm的注釋
- 添加到 /etc/X11/twm/system.twmrc 文件應用程式菜單中 (添加以下這行:
"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「應用程式菜單定義」,並將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)