2011年7月21日木曜日

"Startup Applications" で立ち上げた xclock を "Always on Top" かつ "Always on Visible Workspace" にしたい。 -> devilspie を導入した

やりたかったこと
デスクトップに時計が常駐していると便利なので、多くのデスクトップ環境では端に時計表示があることが多い。
しかしながら私は「あなろぐ時計」が欲しいので、xclock 愛用している。
今までは Gnome の Startup Applications として xclock を起動していたが、
「全てのワークスペースで」「(firefoxなど他のアプリケーションのウィンドウに隠れず)いつも最前面に」xclockが常駐して欲しいと考え、devilspie で実現することに成功した。

wmctrl

まず、「gnome startup application commandline always on top」などで検索してみたのだが、なかなか望みの答えにたどり着けない。command line は gnome の startup applications はコマンドを書くようになっているからである。
検索の結果 wmctrl がまず候補に上がって、実際にインストールしてみた。(# portupgrade -N x11/wmctrl)
wmctrl は「ウインドウマネージャーにコマンドラインからちょっかいを出す道具」である。
wmctrl 本家 http://tomas.styblo.name/wmctrl/
コマンドラインからXのウインドウを操作する(kwt hrtk さんのブログ、trial and error の記事)  http://techno-st.net/2008/12/18/-x-wmctrl.html

「いつも最前面に」は wmctrl 実現できたが、「全てのワークスペースで」が実現できなかった。
ちなみに、いつも最前面には
$ wmctrl -r xclock -b toggle,above
とすればよい。

Devil's Pie
さらに検索した結果 Devil's Pie (x11-wm/devilspie)の存在を知った。
Gnomeでウィンドウを操作する(Matsue Trisen さんのページ)  http://headoffice.matsue-torisen.co.jp/~naruse/Estab/Tips/devilspie.html
Devil's pie でGnomeのウィンドウを操作 http://sites.google.com/site/fesnote/GNU_Linux/setup-debian-lenny/devilspie

devilspie では
以下のスクリプトを ~/.devilspie/xclock.ds として保存し、
$ devilspie &
と実行すればよい。
スクリプトの中身 ↓
(begin
  (if
   (is (application_name) "xclock")
   (begin
     (pin)
     (above)
    )))
スクリプトの中身終わり

まとめ
「全てのワークペースで」「いつも最前面に」ある xclock を gnome の起動時に立ち上げるには

1.上記内容のファイル ~/.devilspie/xclock.ds を用意する

2.gnome の toolbar の System -> Preference -> Startup Applications -> add
で以下の二つを書く
(1).
Name: devilspie
Command: devilspie
Comment: (空欄でよい)
(2).
Name: xclock
Command: xclock -geometry -0+0
Comment: (空欄でよい)

これで時計が常駐できた。やったね。

環境
FreeBSD 8.2
gnome 2.32.1
wmctrl 1.07
devilspie 0.22

余談
私は Scheme を愛してやまないのだが、devilspie は lisp っぽい設定ファイルで素敵だ。