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

MMA
15と41のリビジョン間の差分 (その間の編集: 26回)
2012-12-07 01:19:51時点のリビジョン15
サイズ: 4564
編集者: clear
コメント:
2013-06-24 01:16:30時点のリビジョン41
サイズ: 1725
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
ウィンドウマネージャ開発メモ X Window Systemにおけるウィンドウマネージャに関するページ
行 3: 行 3:
= 資料 =
== Xlib ==
古くから用いられているXクライアント作成用のCのライブラリ。各種言語へのバインディングもある。いい加減古いライブラリなので今は推奨されていない(が、これで書かれているWMはそれなりに存在する)
{{{#!wiki caution
更新が止まっています。内容をまとめ直してどこかに移転しようかと思案しているところ
}}}
行 7: 行 7:
とりあえず、カテゴリ別の詳しい仕様は以下のPDFが基本。
 * http://www.x.org/docs/X11/xlib.pdf (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については検索すればそれなりに出てくる。
 * http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html
 * http://xjman.dsl.gr.jp/X11R6/X11/
 * [[/wmnote|既存のWMに関するメモ]]
 * [[/library|WM開発に用いるライブラリ]]
 * [[/doc|各種資料へのリンク]]
行 21: 行 11:
== XCB(X C Bindings) ==
Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。Xlibよりダイレクトにプロトコルを扱う感じらしい(Xlibはリクエストやイベントをバッファリングしたり裏で色々やってるが、XCBはそういうことをしない)。Xlibよりかなりパフォーマンスが良い模様
 * http://xcb.freedesktop.org/
xcbはとにかく資料が少なくて辛い。そもそもlibxcbの実装自体がXMLで記述された仕様から自動生成されているらしい
 * http://xcb.freedesktop.org/tutorial/
  * チュートリアル
 * awesomeの実装
  * 有名どころでxcbを使っているのはこれか
つくった
 * [[/wm]]
行 30: 行 14:
== 各種規格 ==
UIについてX自体では規定されていないため、クライアント間通信は規格とは別に定められた約束事(コンベンション)に則ったものになり、それがICCCMやEWMH。例えば、全く別々のWMとタスクバーが協調動作しうるのは双方が同じ約束に従っているため。
 * http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
  * EWMH
 * http://www.x.org/docs/ICCCM/icccm.pdf (pdf)
  * ICCCM。EWMHで上書きされている部分もあることに注意
Xは拡張が多い上に、現在の利用シーンではそれが当たり前となっているようなものが多いので個別に追う必要がある。
 * http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt
  * XRandR(動的に画面解像度を設定できるようにするための拡張。同種の拡張で先行するのがXinerama)
 * http://keithp.com/~keithp/render/Xft.tutorial
  * Xft(スケーラブルフォントを扱うための拡張)のチュートリアル
つくってる
 * [[/mn]]
行 42: 行 17:
== 既存のWMに関するメモ ==
 * dwm
  * タイル型。2000行程度ソースが1つしかないのでとっつきやすいが、細かく追おうとすると読みづらい。コメントも少なめ
  * C99使ってる
 * evilwm
  * 名前の割にコードはすごく親切で読みやすい
  * EWMH対応が参考になる。ソースファイルが分割されていて(ewmh.c)、対応状況もテキストファイルにまとまっている
  * ウィンドウの装飾はないがちゃんとre-parentしている
 * monsterwm
  * dwmよりさらにコードが短いタイル型。スタイルはdwmに似ているが、よりシンプルな作りでコメントも豊富なので読みやすい
 * openbox
  * DEの一部になっているWMの中ではおそらく小さい方
  * 本体が3万行ほど、さらに周辺のライブラリやツールを加えれば5万行くらいあるか
 * twm
  * 古き良き堅牢なWM。ルートウィンドウへの枠の描画あたりは参考になるか
 * tinywm
  * 最小。最低限何をすればいいかが分かる

= 日記 =
<<PageList(regex:clear/wm_devel/[0-9]{4}-[0-9]{2}-[0-9]{2})>>
資料を読んでまとめたり思いつきを書く開発メモ
 * [[/2011-08-13|WMとは]]
 * [[/2011-08-16|何もしないXクライアント]]
 * [[/2011-08-23|テキストの描画]]
 * [[/2012-01-06|タイル型配置いろいろ]]
 * [[/2012-04-25|全画面型WM]]
 * [[/2012-04-27|メモ(2012-04-27)]]
 * [[/2012-04-30|メモ(2012-04-30)]]
 * [[/2012-08-18|ウィンドウタイトルの取得]]
 * [[/2012-09-05|画面サイズの取得]]
 * [[/2012-10-26|ウィンドウの列挙]]
 * [[/2012-11-12|シグナル処理]]
 * [[/2012-12-11|WM-クライアント間通信]]
 * [[/2012-12-14|XCBの基本]]
 * [[/2012-12-23|XCBのリクエスト処理]]
 * [[/2013-01-11|メモ(2013-01-11)]]
 * [[/2013-01-14|仮想デスクトップ]]
 * [[/2013-01-26|reparentingとsaveset]]
 * [[/2013-02-09|入力フォーカス]]
 * [[/2013-02-10|サイズヒント]]
 * [[/2013-02-11|ConfigureRequest]]
 * [[/2013-02-18|座標系、タイトルバーの必要性]]
 * [[/2013-02-19|マウスイベントの処理]]
 * [[/2013-02-28|枠だけドラッグ]]
 * [[/2013-03-02|イベントループの改良]]
 * [[/2013-03-06|WMのデバッグに役立つツール]]
 * [[/2013-03-08|タスクバーとの連携]]
 * [[/2013-03-12|ウィンドウ配置に関する色々]]

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