WMを実装する際に用いるライブラリ (Cで書く場合の話。他言語でもC向けライブラリのバインディングを使うことになるはず) = X11ライブラリ = GTKやQt、あるいはXtのようなツールキットを使って実装することもできるが、それらだけでは実現できない低レベルの操作を行うためには、XlibかXCBを使う必要がある(自前でXプロトコルをしゃべることができれば要らないが…) == Xlib == 古くからある方。いい加減古いので今は推奨されていないが、これを使って書かれているWMはそれなりに存在する。 とりあえず、カテゴリ別の詳しい仕様は以下の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公式ではない) その他、検索すればそれなりに出てくる。 * http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html * http://xjman.dsl.gr.jp/X11R6/X11/ == XCB(X C Bindings) == http://xcb.freedesktop.org/ Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。 * Xlibよりダイレクトにプロトコルを扱う感じ。XMLで書かれた仕様からライブラリのソースが自動生成されている * 適切に使えばXlibよりかなりパフォーマンスが良い * Xlibは設計上マルチスレッド下での使用に問題がある(使えない訳ではない)が、XCBはマルチスレッドでも使える とにかく資料が少ない(チュートリアルと、ソースからdoxygenで生成されたドキュメントを除くとほとんど皆無)。しかしコンセプトさえ理解すればあとはパターンなので、Xプログラミングの知識さえあればさほど困らない(Xプログラミングの知識についてはXlibに関する資料が参考になる)。そもそもXCBはXlibを代替することを目的として生まれたので、両者を対比して調べていけばだいたいなんとかなる。 数少ない資料。 * [[http://xcb.freedesktop.org/tutorial/|チュートリアル]] * [[http://xcb.freedesktop.org/manual/index.html|doxygenで生成されたドキュメント]] * [[http://xcb.freedesktop.org/Publications/|各種文書]] XCBについてはXCBを用いた既存のアプリケーションを読むのが手っ取り早い。awesomeとかi3とか。 = その他 = == Xft == アンチエイリアスフォントを描画するためのライブラリ。Xlibと連携して使える。 * XCBにはバインディングがないので、cairoやpangoを使う == Cairo == デバイス非依存のベクタグラフィクスライブラリ。XlibやXCBにもグラフィクス機能が備わっているが、それらがXサーバに描画リクエストを送るものであるのに対し、Cairoはクライアントサイドで描画を行う。 * バックエンドを抽象化している。もちろんXlib、XCBと連携可能 * アンチエイリアス付きの文字(列)描画が可能。ただし機能は限定されており(公式に"toy"と言われている)、本格的なアプリケーションにはpangoを使うことが推奨されている * GTKはバージョン3から描画にCairoを使うようになった == Pango == 多言語テキストライブラリ。GTKの一部。 * テキストを配置したり、効果をつけたりフォントを補完したり…といった機能を備える * Cairoと連携可能