Awesomeでfreedesktopを利用したメニューをつくる
上に示したのがタイル型ウィンドウマネージャAwesomeのデフォルトのメニューである. 設定ファイルにメニューのエントリとして記述したコマンドを実行できる.
そのため,アプリケーションをインストールしても設定ファイルを 書き換えなければ,そのインストールしたアプリケーションはメニューから選択できるようにはならない.
例えば上のgnomeのメニューはインストールしたアプリケーションが 自動で追加される.
Awesomeでは,awesome-freedesktopというAwesomeライブラリを用いることで, 他のデスクトップ環境のようなアプリケーションが自動で登録されるメニューが作れる.
インストール
git clone https://github.com/terceiro/awesome-freedesktop cd awesome-freedesktop cp -R freedesktop ~/.config/awesome/
rc.luaのmenuの設定を書き換える
- awesome-freedesktopの読み込み
まずfreedesktopを読み込んでおく. local freedesktop = require('freedesktop')
- menu設定の書き換え
デフォルトの設定ではmenuの設定は以下のようになっている.
-- {{{ Menu -- Create a laucher widget and a main menu myawesomemenu = { { "manual", terminal .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awesome.conffile }, { "restart", awesome.restart }, { "quit", awesome.quit } } mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, { "open terminal", terminal } } }) mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) -- Menubar configuration menubar.utils.terminal = terminal -- Set the terminal for applications that require it -- }}}
メニュー中のアプリケーションやアイコンを直接記述している. この部分を以下のように書き換えることでfreedesktopで管理されている アプリケーションが自動的にメニューに表示される. アイコンもfreedesktopで設定されているものに変わる.
-- {{{ Menu freedesktop.utils.terminal = terminal menu_items = freedesktop.menu.new() myawesomemenu = { { "manual", terminal .. " -e man awesome", freedesktop.utils.lookup_icon({ icon = 'help' }) }, { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua", freedesktop.utils.lookup_icon({ icon = 'package_settings' }) }, { "restart", awesome.restart, freedesktop.utils.lookup_icon({ icon = 'gtk-refresh' }) }, { "quit", "oblogout", freedesktop.utils.lookup_icon({ icon = 'gtk-quit' }) } } table.insert(menu_items, { "awesome", myawesomemenu, beautiful.awesome_icon }) table.insert(menu_items, { "open terminal", terminal, freedesktop.utils.lookup_icon({icon = 'terminal'}) }) mymainmenu = awful.menu({ items = menu_items, theme = { width = 150 } }) mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) -- }}}