contribディレクトリをのぞいてみる

ratpoisonのパッケージにはcontribディレクトリがあってそこには付属的なプログラムが格納されている。

シェルスクリプトPerlスクリプトは、「ratpoison -c コマンド」を組み合わせれば複雑なこともできるというサンプル。

allwindows.sh

:windowsを全グループ(Infoの「(ratpoison) Groups」を見てね)に拡張したもの。:windowsは現在のグループのウィンドウタイトルしか表示しないが、allwindows.shを使えばすべてのグループのウィンドウタイトルを表示する。

$ ./allwindows.sh
(ウィンドウタイトルが画面隅に表示される)

genrpbindings

ソース中のactions.cを解析し、あらゆる言語のratpoison bindingを吐き出すコードジェネレータ。PerlelispRubyCommon LispPythonを吐く。ratpoison bindingっつーてもたんに「system "ratpoison -c ほにゃらら"」を実行する関数を並べてるだけ。スクリプト言語大好きならとりあえず実行しとけ。

$ ./genrpbindings
109 bindings.
Created ./Ratpoison.pm
Created ./ratpoison-cmd.el
Created ./ratpoison.rb
Created ./ratpoison.lisp
Created ./ratpoison.py

ratpoison.el

Emacsでratpoisonrc編集を支援するメジャーモード。.ratpoisonrc編集中にC-c C-eでその行を実行する。コマンドに色がつく。

もちろん俺は常用している。

rpshowall.sh

散らかってる全てのウィンドウをタイルのように並べて目的のウィンドウを選択するプログラム。Mac OS XのExposeもどき。

$ sh rpshowall.sh 0
(Exposeもどき)
$ sh rpshowall.sh 1
(1秒だけウィンドウを並べて、その後元の分割状態に復元する)
$ sh rpshowall.sh
(ウィンドウを並べる。Enterを押したら元の分割状態に復元する)

rpws

ratpoisonワークスペースを実現するPerlスクリプト。複数の分割状態を保存して切り換えることができる。

以下を.ratpoisonrcに書くと6つのワークスペースが使用可能になる。それぞれrpws1〜rpws6と名前がつけられている。

exec /path/to/rpws init 6 -k

ワークスペース切り替えはM-F1〜M-F6に割り当てられている。

たとえば、rpws1が3分割された状態、rpws2がフルスクリーンな状態とする。

(rpws1)
+----------------------------+
|                  |         |
|                  |         |
|                  |         |
|                  +---------|
|                  |         |
|                  |         |
|                  |         |
|                  |         |
|                  |         |
|                  |         |
+----------------------------+

(rpws2)
+----------------------------+
|                            |
|                            |
|                            |
|                            |
|                            |
|                            |
|                            |
|                            |
|                            |
|                            |
+----------------------------+

今rpws1の状態にいるとしてM-F2を押すとrpws2の状態になる。で、rpws2の状態でM-F1を押すとrpws1の分割状態が復元される。いちいち手で分割するのって面倒だよね。

ちなみに俺は数年ほど使い続けていたが、2つしか分割状態(うち1つはフルスクリーン)を使わないので今は使うのはやめている。

sloppy.c

ratpoisonでsloppy focusを実現する常駐プログラム。sloppy focusとは、マウスカーソルがウィンドウの上を通過したときにそのウィンドウにフォーカスが移るフォーカス方式のこと。なお、ウィンドウからはみ出しても別のウィンドウに接していない場合はフォーカスは変わらない。

$ gcc -g -Wall -O2  -I/usr/X11R6/include -o sloppy sloppy.c -L/usr/X11R6/lib -lX11
$ ./sloppy &

ratpoison好きだけど、マウスも好きというユーザにおすすめ。rat*1を心底憎んでいる作者Shawn Bettsはsloppyを作っただけで自分は使ってはいないのは言うまでもない。

下で紹介するunratもそうだけど、おそらく、Xの小物ツールの見本のために作ったのであろう。

unrat.c

キーを押した瞬間にマウスカーソルを左下隅へ追い遣ってしまう常駐プログラム。ほんとにShawn Bettsらしいプログラムだ。

$ gcc -g -Wall -O2  -I/usr/X11R6/include -o unrat unrat.c -L /usr/X11R6/lib -lX11
$ ./unrat &

俺も正直マウスカーソルが邪魔だと感じることがあるけれど、そこまで極端ではない。邪魔だと感じたときは:banishで追い遣ることができる。Flashを使ったサイトを閲覧しているときどうしてもマウスを使わざるをえないケースが出てきてしまうので正直使えないプログラムだと俺は思う。

clickframe.pl

xbindkeysと併用してwindozeのようにマウスクリックでウィンドウを選択できるようにするプログラム。ratpoison的には邪道である。未検証(笑)

添付のパッチをxbindkeysに当てないといけないので面倒で使っていない。当然作者Shawn Bettsが使うわけがない。

split.sh

画面を16分割するサンプルプログラム。

*1:ratpoison界隈ではマウスのこと。