wmii

最近横に長いディスプレイを使うことが多くて、横幅がもったいないなーと思ってたのでwmiiを使ってみることにした。
簡単に説明しとくと、ウィンドウを横に並べたり縦に並べたりがキーボードだけでできるというウィンドウマネージャ。


WMについて考えるのなんか久しぶりだなー。もうちょっと使ってみてから乗り換えるかどうか考える。


wmiiの面白いところとして、ファイルシステムもどきの仕組みを使って設定ファイルを純粋なシェルスクリプトにしてるという点が挙げられると思う。(純粋なシェルスクリプトて何?awkシェルスクリプトの一部に含まれますか問題)
まず、基本として、wmiirというツールがありますと。これがファイルシステムもどきを実現してる。

$ wmiir ls / # wmiiファイルシステムのルートディレクトリを列挙
client/
colrules
ctl
event
keys
lbar/
rbar/
tag/
tagrules
$ wmiir read /ctl # 現在の設定とかが見れる
view 0
focuscolors #ffffff #153F1F #2A7F3F
normcolors #222222 #5FBF77 #2A7F3F
font -shinonome-*-*-r-*-*-14-*-*-*-*-*-*-*
grabmod Mod1-
border 1

んで、/keys にキーの名前を書き込んでおくと、キーが登録される。

$ wmiir read /keys
Mod1-Control-Return
Mod1-Control-a
Mod1-Control-d
(...)

/event を read すれば押されたキーイベントが見れる。

$ wmiir read /event
Key Mod1-Control-l   (Alt Control lを押した)
Key Mod1-Control-h   (Alt Control hを押した)

んで、適当に制御とかを組み合わせて色々できる

$ wmiir xwrite /ctl view aho- # 表示するデスクトップを"aho-"デスクトップに変更
$ wmiir xwrite "/lbar/..."    # よくわからん

ここらへんが、設定ファイルのために作られた仕組み。設定ファイルのためのファイルフォーマット等は存在していない。
ふつーにインストールすると、/usr/local/etc/wmii-3.5/wmiirc とかに設定ファイルがあってそれがシェルスクリプト。(rc.wmiiとかが多分Plan9のrcのなんか)

wmiir read /event |
while read event; do
	set -- $event
	event=$1; shift
	Event_$event $@ 2>/dev/null
done

というループがあって、それがなんかぐちゃぐちゃ(説明しろよ)。これより上の部分はこのループを回すための準備みたいな感じで。