Login
Immutable PageDiscussionInfoAttachments
Diff for "clear/wm_devel"

MMA
Differences between revisions 14 and 15
Revision 14 as of 2012-11-10 21:29:48
Size: 1923
Editor: clear
Comment:
Revision 15 as of 2012-12-07 01:19:51
Size: 4564
Editor: clear
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
= 要件 =
 * 何でもいいから最低限動くものを作ってみる
= 資料 =
== Xlib ==
古くから用いられているXクライアント作成用のCのライブラリ。各種言語へのバインディングもある。いい加減古いライブラリなので今は推奨されていない(が、これで書かれているWMはそれなりに存在する)
Line 6: Line 7:
= 資料 =
== X Window プログラミング ==
とりあえず、カテゴリ別の詳しい仕様は以下のPDFが基本。
Line 9: Line 9:
  * Xlibの仕様
 * 「プログラミング X Window」
書籍もある。
 * 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については検索すればそれなりに出てくる。
Line 13: Line 20:
 * 「X Window ハンドブック」
== 規格 ==

== XCB(X C Bindings) ==
Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。Xlibよりダイレクトにプロトコルを扱う感じらしい(Xlibはリクエストやイベントをバッファリングしたり裏で色々やってるが、XCBはそういうことをしない)。Xlibよりかなりパフォーマンスが良い模様
 * http://xcb.freedesktop.org/
xcbはとにかく資料が少なくて辛い。そもそもlibxcbの実装自体がXMLで記述された仕様から自動生成されているらしい
 * http://xcb.freedesktop.org/tutorial/
  * チュートリアル
 * awesomeの実装
  * 有名どころでxcbを使っているのはこれか

== 各種規格 ==
UIについてX自体では規定されていないため、クライアント間通信は規格とは別に定められた約束事(コンベンション)に則ったものになり、それがICCCMやEWMH。例えば、全く別々のWMとタスクバーが協調動作しうるのは双方が同じ約束に従っているため。
Line 18: Line 35:
  * ICCCM。現在では古く適さないものもあるとのこと   * ICCCM。EWMHで上書きされている部分もあることに注意
Xは拡張が多い上に、現在の利用シーンではそれが当たり前となっているようなものが多いので個別に追う必要がある。
Line 20: Line 38:
  * XRandRの仕様
== 参考とする実装 ==
  * XRandR(動的に画面解像度を設定できるようにするための拡張。同種の拡張で先行するのがXinerama)
 * http://keithp.com/~keithp/render/Xft.tutorial
  * Xft(スケーラブルフォントを扱うための拡張)のチュートリアル

== 既存のWMに関するメモ ==
Line 23: Line 44:
  * タイル型
  *
ソースが1つしかないのでとっつきやすいが、細かく追おうとすると読みづらい
  * ソースコードを2000行程度に維持するという原則のためか、
コメントも少なめ
  * タイル型。2000行程度ソースが1つしかないのでとっつきやすいが、細かく追おうとすると読みづらいコメントも少なめ
Line 28: Line 47:
  * evilというだがコードはすごく親切で読みやすい   * 名前の割にコードはすごく親切で読みやすい
Line 31: Line 50:
  * 設定はコマンドラインオプションで
Line 33: Line 51:
  * dwmよりさらにコードが短いタイル型
  * コーディングスタイルはdwmに似ているが、よりシンプルな作りでコメントも豊富なので読みやすい
  * dwmよりさらにコードが短いタイル型。スタイルはdwmに似ているが、よりシンプルな作りでコメントも豊富なので読みやすい
 * openbox
  * DEの一部になっているWMの中ではおそらく小さい方
  * 本体が3万行ほど、さらに周辺のライブラリやツールを加えれば5万行くらいあるか
 * twm
  * 古き良き堅牢なWM。ルートウィンドウへの枠の描画あたりは参考になるか
Line 36: Line 58:
  * 最小のWM。最低限何をすればいいかが分かる

= 廃墟 =
 * プロトタイプ1: tinywmのデッドコピー
 * プロトタイプ2: 全画面型
 * プロトタイプ3: 少しまともに
  * 最小。最低限何をすればいいかが分かる

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

資料

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よりかなりパフォーマンスが良い模様

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

各種規格

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

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

既存のWMに関するメモ

  • dwm
    • タイル型。2000行程度ソースが1つしかないのでとっつきやすいが、細かく追おうとすると読みづらい。コメントも少なめ
    • C99使ってる
  • evilwm
    • 名前の割にコードはすごく親切で読みやすい
    • EWMH対応が参考になる。ソースファイルが分割されていて(ewmh.c)、対応状況もテキストファイルにまとまっている
    • ウィンドウの装飾はないがちゃんとre-parentしている
  • monsterwm
    • dwmよりさらにコードが短いタイル型。スタイルはdwmに似ているが、よりシンプルな作りでコメントも豊富なので読みやすい
  • openbox
    • DEの一部になっているWMの中ではおそらく小さい方
    • 本体が3万行ほど、さらに周辺のライブラリやツールを加えれば5万行くらいあるか
  • twm
    • 古き良き堅牢なWM。ルートウィンドウへの枠の描画あたりは参考になるか
  • tinywm
    • 最小。最低限何をすればいいかが分かる

日記

clear/wm_devel (last edited 2013-06-24 01:16:30 by clear)