そもそもWMとはなんだ
dwm 5.9のソースコードの冒頭のコメントにはこんなことが書いてある。
dynamic window manager is designed like any other X client as well. It is driven through handling X events. In contrast to other X clients, a window manager selects for SubstructureRedirectMask on the root window, to receive events about window (dis-)appearance. Only one X connection at a time is allowed to select for this event mask.
ウィンドウマネージャも他のXクライアントと同じく、イベントドリブンで動作する。他のXクライアントと違うのは、ウィンドウマネージャだけがルートウィンドウのSubstructureRedirectを処理する、という点のみ。これは他のウィンドウが生成したり消滅する時にやってくるもののようだ。さらに、このイベントを監視できるのは一つのXクライアントに限られる。(ウィンドウマネージャは複数起動できない)
つまり、以下のようにするだけで必要条件は満たせる。
- 特に何もしないXクライアントを書く
これにSubstructureRedirectを受け取るよう書き加える
当然ながらこれはまったく十分ではなく、表面的には無いのと何も変わらない。最低限、次のような機能はあってほしい。
- ウィンドウを閉じる
- ウィンドウを移動する
- ウィンドウをリサイズする
はじめは以上の3つの機能を実現することを目指そうと思う。