Xdg-menu
xdg-menu は以下のウィンドウマネージャ用の XDG デスクトップメニュー を生成するツールです:
KDE, GNOME, Xfce, Enlightenment は最初から XDG に対応しています。
目次
インストール
archlinux-xdg-menu パッケージをインストールしてください。
メニューの階層
- アプリケーション
- アクセシビリティ
- アクセサリ
- 開発
- 教育
- ゲーム
- グラフィック
- インターネット
- マルチメディア
- オフィス
- その他
- 科学
- システム
設定
Xdg_menu は3つの情報源に基づいてメニューを生成します: ルートメニューあるいはコマンドラインで指定した XML メニューテンプレート、最後に実行されたときにキャッシュされた情報、そして一連の設定ファイルです。
- XML メニューテンプレートは
/etc/xdg/menusに存在します。 - 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 のファイルから WM のメニューを更新し、設定で自動的に更新することもできます。
/etc/update-menus.conf を利用する xdg_menu のスクリプトラッパーです。
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 ステートメントを追加
- 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 する。
以下のように行を追加してください:
[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 に手動で追加してください。例えば、menu.xml に xdg-menu.xml を配置して root-menu に以下を追加:
<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-menus.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 プリプロセッサを使用する vtwm や ctwm などの twm の亜種を使用する場合は、以下を *twmrc に追加することでメニューを読み込めます:
sinclude(`/PATH/TO/my-twm-menu')
/etc/update-menus.conf内の twm をアンコメント/etc/X11/twm/system.twmrcファイルにアプリケーションメニューを追加 (以下の行を defops メニューに追記):
"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
WindowMaker のメニューファイルに以下を追加:
#include "my-wm-menu"
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)