Dbus を利用した Compiz Fusion プラグイン ランチャーの作成

Compiz Fusion には様々なプラグインがあるけれど、キーショートカットがまったく覚えられない・・・。

そこでマウスで Compiz の機能を使えるボタンのようなものはないかと探したところ、

Screenlets というウィジェット・プログラム向けの CompizButtons というものを発見。

隣のビューポートに移動したり、ウィジェット・レイヤを表示させたり等、各種プラグインの機能をボタンをクリックするだけで呼び出すことが可能。

うーん、しかし、デスクトップがごちゃごちゃするのが嫌でアイコンは消しているので、ボタン類を常時画面上に並べるのは個人的に避けたいところ。

結局このウィジェットが行っているのは Compiz Fusion の Dbus プラグインを利用したコマンドの実行。

Dbus プラグインおよび Dbus コマンドによって Compiz を制御する方法については Compiz Fusion の公式 Wiki で説明されている。

Dbus プラグインを有効にした上で、例えば

dbus-send --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/widget/allscreens/toggle_key org.freedesktop.compiz.activate string:'root' int32:`xwininfo -root | grep id: | awk '{ print $4 }'`

* 5月11日 HTML の code タグを付け忘れてコマンドが誤った記載になっていたのを修正。)

というコマンドを端末から実行すれば、Compiz のウィジェット・レイヤを表示させることができる。

従って、コマンドを書いたスクリプトファイルを作成してそのファイルを実行するランチャーを作成すれば、ランチャーのアイコンをクリックして Compiz の機能を実行することができることにもなる。

Gnome アイコンや AWN、Cairo Dock などのドックアプリのアイコンからウィジェットレイヤ・プラグインが利用できて結構便利。個人的には、自動で隠すモードにしている Cairo Dock にランチャーとして収めるができて Screenlets の CompizButtons よりもスッキリ感。

(ウィジェットレイヤ・プラグインの「クリックでウィジェット・モード終了」オプションをオフにしておくと、アイコンがまさにレイヤ表示の切り替えボタンになってなお良し。)

しかし、各プラグインや各機能ごとにいちいちファイルを作成するのは面倒かもなぁ・・・。

と思っていたところ、Compiz の公式フォーラムで crdlb さんが便利なスクリプトを公開してくれてました。 😀

引数としてプラグイン名やオプション名を渡してこのスクリプトを実行してやればいいだけなので、ランチャーの指定先のスクリプトファイルが1つで済むとともに簡単!

上のウィジェットレイヤでいえば、例えばこのスクリプトを home ディレクトリ下に置いたとすると、以下のようにランチャーで指定すればオーケー。

~/compiz-dbus-send.py widget toggle_key

/home/ログイン名/compiz-dbus-send.py widget toggle_key

/usr/local/bin にスクリプトファイルを置けば

compiz-dbus-send.py widget toggle_key

だけで済む。

(Compiz のバージョンが 5系や6系の場合、オプション名は toggle_key ではなく、toggle のみとなるので注意。任意のプラグインのオプション名などが知りたい場合は、上記の Wiki のDbus プラグインの解説を参考に。Gconf をサポートする Compiz のコンポーネントが導入されている場合は、Gconf エディタ上でプラグイン名やオプション名を手軽に知ることができる。)

compiz-dbus-send.py rotate initiate_button

としてランチャーをクリックすると、キューブの回転がズームアウトした状態でホールドされ、マウスでグリグリできるのでおもしろい!

(とりあえず Enter や Esc キーを押すとホールド状態から復帰できる。)

ちなみに Dbus プラグインには、システムトレイに常駐するメッセンジャープログラムのアイコン上に Compiz の水効果を適用して着信を知らせるなど色々応用例があるようだ。

コメントを残す