ログイン
編集不可のページディスカッション情報添付ファイル
"clear/wm_devel"の差分

MMA
16と18のリビジョン間の差分 (その間の編集: 2回)
2012-12-07 01:36:40時点のリビジョン16
サイズ: 4582
編集者: clear
コメント:
2012-12-11 22:00:12時点のリビジョン18
サイズ: 5378
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 22: 行 22:
Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。Xlibよりダイレクトにプロトコルを扱う感じらしい(Xlibはリクエストやイベントをバッファリングしたり裏で色々やってるが、XCBはそういうことをしない)。Xlibよりかなりパフォーマンスが良い模様 Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。Xlibよりダイレクトにプロトコルを扱う感じらしい(Xlibはリクエストやイベントをバッファリングしたり裏で色々やってるが、XCBはそういうことをしない)。(適切に使えば)Xlibよりかなりパフォーマンスが良い模様。また、Xlibは設計上シングルスレッドでしか使えないが、XCBはマルチスレッド下でも使える。
行 31: 行 31:
UIについてX自体では規定されていないため、クライアント間通信は規格とは別に定められた約束事(コンベンション)に則ったものになり、それがICCCMやEWMH。例えば、全く別々のWMとタスクバーが協調動作しうるのは双方が同じ約束に従っているため。 UIについてX自体では規定されていないため、クライアント間通信は規格とは別にICCCMやEWMHで定められた約束事(コンベンション)に則ったものにな。例えば、全く別々のWMとタスクバーが協調動作しうるのは双方が同じ約束に従っているため。
行 33: 行 33:
  * EWMH   * Extended Window Manager Hints(EWMH)。歴史的経緯によりNetWMとも呼ばれ、使用するアトム名などにその名残りが見られる
行 35: 行 35:
  * ICCCM。EWMHで上書きされている部分もあることに注意   * Inter-Client Communication Conventions Manual(ICCCM)。EWMHで上書きされている部分もあることに注意
行 46: 行 46:
  * ICCCM/EWMH対応は最低限を抑えているといった感じ
行 52: 行 53:
  * dwmから色々取っ払って部分的に機能を増した印象。ちゃんと読んでない
行 56: 行 58:
  * 古き良き堅牢なWM。ルートウィンドウへの枠の描画あたりは参考になるか   * 古き良き堅牢なWM。設計というかポリシーが古いのは否めない。ルートウィンドウへの枠の描画あたりは参考になるか
  * X標準のWMなので、「twmがこうしてるから」という強力な言い訳に使える
行 59: 行 62:
 * winman
  * Xlib Programming Manual Volume Oneに載ってるサンプルコード。twmから色々な機能を除いた感じ?

ウィンドウマネージャ開発メモ

資料

Xlib

古くから用いられているXクライアント作成用のCのライブラリ。各種言語へのバインディングもある。いい加減古いライブラリなので今は推奨されていない(が、これで書かれているWMはそれなりに存在する)

とりあえず、カテゴリ別の詳しい仕様は以下のPDFが基本。

書籍もある。

  • Xlib Programming Manual Volume One
    • O'Reillyが動物本シリーズを出し始める前に手がけたものらしい。邦訳なし
    • 残念ながらX11R5対応の版(1994年)が最新なので、R6以降は要補完。また、各種の拡張についても触れられていない

      • 大学図書館の洋書架にX11R4対応版がある。あとJEDにもあった気がする(確か禁帯出)

    • Xlibを用いたプログラミングについて系統的に書かれている本はこれが唯一と言って良い。WMについても一章が割かれており、サンプルコードもある
    • Volume Twoは単なるXlibのリファレンスなので、上記のPDFで事足りる
    • どうやら何かのOSの/usr/docなりに入ってたか何かしたようで、それがそのままWeb上で公開されてたりもする(O'Reilly公式ではない)

その他、Xlibについては検索すればそれなりに出てくる。

XCB(X C Bindings)

Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。Xlibよりダイレクトにプロトコルを扱う感じらしい(Xlibはリクエストやイベントをバッファリングしたり裏で色々やってるが、XCBはそういうことをしない)。(適切に使えば)Xlibよりかなりパフォーマンスが良い模様。また、Xlibは設計上シングルスレッドでしか使えないが、XCBはマルチスレッド下でも使える。

xcbはとにかく資料が少なくて辛い。そもそもlibxcbの実装自体がXMLで記述された仕様から自動生成されているらしい

各種規格

UIについてX自体では規定されていないため、クライアント間通信は規格とは別にICCCMやEWMHで定められた約束事(コンベンション)に則ったものになる。例えば、全く別々のWMとタスクバーが協調動作しうるのは双方が同じ約束に従っているため。

Xは拡張が多い上に、現在の利用シーンではそれが当たり前となっているようなものが多いので個別に追う必要がある。

既存のWMに関するメモ

  • dwm
    • タイル型。2000行程度ソースが1つしかないのでとっつきやすいが、細かく追おうとすると読みづらい。コメントも少なめ
    • C99使ってる
    • ICCCM/EWMH対応は最低限を抑えているといった感じ
  • evilwm
    • 名前の割にコードはすごく親切で読みやすい
    • EWMH対応が参考になる。ソースファイルが分割されていて(ewmh.c)、対応状況もテキストファイルにまとまっている
    • ウィンドウの装飾はないがちゃんとre-parentしている
  • monsterwm
    • dwmよりさらにコードが短いタイル型。スタイルはdwmに似ているが、よりシンプルな作りでコメントも豊富なので読みやすい
    • dwmから色々取っ払って部分的に機能を増した印象。ちゃんと読んでない
  • openbox
    • DEの一部になっているWMの中ではおそらく小さい方
    • 本体が3万行ほど、さらに周辺のライブラリやツールを加えれば5万行くらいあるか
  • twm
    • 古き良き堅牢なWM。設計というかポリシーが古いのは否めない。ルートウィンドウへの枠の描画あたりは参考になるか
    • X標準のWMなので、「twmがこうしてるから」という強力な言い訳に使える
  • tinywm
    • 最小。最低限何をすればいいかが分かる
  • winman
    • Xlib Programming Manual Volume Oneに載ってるサンプルコード。twmから色々な機能を除いた感じ?

日記

clear/wm_devel (最終更新日時 2013-06-24 01:16:30 更新者 clear)