メモ
- XCBで書く
- 今度はタイトルバーつける
ウィンドウのタイトル(WM_NAME, _NET_WM_NAME)が分からないのはよくない
- タイトル文字列を常に表示するには、タスクバーの類かタイトルバーを用意するしかない
- WMでタスクバーを用意してしまうと、外部のタスクバー/パネルを使いたくなったときに衝突する
- 自前のバーに依存した操作体系を作ってしまうとまずい
- タスクバーは画面上に固定されてウィンドウに追従しないので、視認性が悪い
- WMでタスクバーを用意してしまうと、外部のタスクバー/パネルを使いたくなったときに衝突する
- Reparentingを実装する必要
- タイトル文字列の描画にはcairoを使う
- フォントのアンチエイリアスとマルチバイト文字列の描画を同時に解決するにはこれしかないか(XftはXCB向けのインターフェースが無いらしい)
- 依存ライブラリが増えるが、今日freetypeとかcairoが使えない環境なんてそうそうないだろう
- メニューつける
- メニュー項目は子ウィンドウとして実装するのか、メニューウィンドウ内に頑張って描画するのか
子ウィンドウ: クリック判定が楽(各項目ウィンドウでButtonPress拾うだけ)。ウィンドウ数が増えるので使用リソース増大
頑張って描画: クリック判定が少し面倒(メニューウィンドウでButtonPress拾って座標から計算)。使用リソース少ない
- メニュー項目は子ウィンドウとして実装するのか、メニューウィンドウ内に頑張って描画するのか
- 設計しなおす
- これまでに作ったWMは特にフォーカスの扱いが適当過ぎて変な挙動が多い。多分仕様レベルで問題がある
- ModelとView/Controllerの結合を疎にする。究極的には完全に分離してUnixドメインソケットなりで通信する
- 分離できれば、いくつかのWMが実装しているように外部のコマンドからWMを操作することも考えられる
- V/Cの分離は無駄か?(操作方法はどういうGUI要素を用意するかで大きく変わるので)
- ドキュメンテーション