Openboxのメニューにアプリケーションの一覧を
OpenboxでGnomeのようなアプリケーションの起動メニューを使いたいと思う人は多いだろう。というよりは、デフォルトで対応してないために、使うのを諦めてしまう人が多いと思う。
自分はOpenbox Menu Generatorというプログラムを使っていて、使い勝手は非常に良く満足している。OpenBox Menu Generator in Launchpad
しかしUbuntuのレポジトリに入っていないので、自力インストールが必要で、幾分か敷居が高いことは事実だろう。
より簡単なやり方について調べたのでメモしておく。
まず、Openbox-xdgmenuをapt-getなりSynapticなりソフトウェアセンターからインストールする。
まずは、コマンドをそのまま叩いてみよう。
shin@shin-laptop:~$ openbox-xdgmenu
Creates an OpenBox menu from an Xdg menu structure.Usage:
openbox-xdgmenu [options]Options:
-a: Show the amount of items in each category next to its name.
-p: Do not use categories.For example:
openbox-xdgmenu "/etc/xdg/menus/applications.menu"
exampleの通りにコマンドをうってみると、
のように、xmlのソースがずらずらと端末の画面に表示される。このxmlのタグ、
話が脱線した。このパイプメニューをどうやってroot-menu(デスクトップで右クリックしたときに表示されるメニュー)に組み込むかだ。
Openboxのメニューを編集できる、GUIのソフトとして、obmenuというのが用意されている。もし入ってないなら、
sudo apt-get install obmenu
をやってから進もう。できた?では'obmenu'とターミナルで叩いて起動する。
とまあ、こんな感じで表示されるはず。(はじめてOpenboxを使うならもっと殺風景だろうけど)
さて、さっきのパイプメニューを組み込んでみよう。
Add>Pipemenu
を選ぶ。上下の位置は、動かしたい項目を選んで矢印を押せばいい。
さて、できたNewpipeを選んでもらうと、Label,id,Action(今回これは入力できない),commandが編集できるようになるだろう。
それぞれの項目の説明を一応しておくと、Labelが表示される名前、idはそれぞれのPipemenuを区別するidだ。なんでこんなもんが必要かという事についてはあとで触れる。actionは項目を選択したときの動作の種類(Executeが基本と思っていい)。commandは実行するコマンド。簡単だよね。
Label、idは何でもいい。好きな名前にしてもらって構わないけど、labelは"アプリケーション、idは"applications"とかにしとけばわかりやすいだろう。commandの欄は、さきほどxmlを吐いてきたコマンド、つまり
openbox-xdgmenu /etc/xdg/menus/applications.menu
としよう。これで、File -> 保存を選択する。
これで、アプリケーションの一覧にアクセスするメニューが出来ていると思う。
ではidの使い方について。
確かにこれで、アプリケーションを起動するときにいちいちターミナルで打ち込まなくてもよくなった。しかし、右クリック、「アプリケーション」を選択、「アプリの分類」目的のアプリと、一階層だけ無駄に階層が深くなってしまった気がする。一発でアプリケーションの選択ができるようにな工夫があってもいいはずだ。
もちろん極度のめんどくさがり屋であるハッカー達が用意してないわけがない。キーボードショートカットにパイプメニューを直に表示する方法がある。
そのまえに、~/.config/openbox/にrc.xmlというファイルはあるだろうか?なければ、とりあえず、デフォルトの設定をもらってこよう。
このrc.xmlというのは、キーボードショートカットやマウスの挙動、ウィンドウ装飾のテーマなんかの設定ファイルだ。今回はキーボードに登録しておこう。他ボタンマウスを持っていれば、マウスに割り当てるのもいいだろう。
本当は、この辺の登録もGUIでやりたいのだが、公式設定ツールのobconfにまだ機能がないので、直接編集することにする。ただのxmlだし。
まずはルートメニュー。
をrc.xmlの
これで、Windowsキーとスペースキーでルートメニューが表示されるようになった。
さて、さっき作ったPipemenuを登録しよう。とりあえずWindowsキー+aとかにしておく。
となる。これで、アプリケーションを起動するときに、余計な階層を一つたどる必要がなくなった。
今のところ、不満なのは、root-menuから、pipemenuを削除すると、このキーボードショートカットも使えなくなること。既にルートに記述されている必要がないので、消したくなることもたまにあるだろう。回避方法はありそうな気はするんだけど・・・。
これを応用すれば、結構いろいろ作れる。例えばシステムの情報を動的に生成させてメニューを開けばみれるようにしておくとか、ファイルの一覧を取得して開くようなpipemenuを使えば、ファイルマネージャを使うまでもない時なんかは便利だ。
自分はこれでaudaciousという音楽プレイヤーの制御をしている。いちいちAlt-tabでウィンドウを切り替える必要がないので重宝している。
追記:アプリケーションメニューだけを表示する。
回避方法が見つかった。
Openboxはメニューファイルを複数設定できることを利用する。
前述のrc.xmlにメニューファイルを指定する箇所がある。
の部分。ここで、通常の~/.config/openbox/menu.xmlの他に、/var/lib/openbox/Debian-menu.xmlを指定する。これはデフォルトで存在かどうかはスマンが知らない。
で、このファイルの内容を見てみると、
とあるので、「Windows+a」に割り振ったrc.xml設定の
を
に変更する。多分これが一番簡単。
他のやり方としては、例えば、menu2.xmlとかを作ってそこにPipe−menuを記述しといて、pipemenuをキーボードショートカットで呼び出すとかかな?
ま、いずれにせよ、これでroot-menuを肥大化させずに、さまざまなメニューを利用することが可能であることがわかった。