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

MMA
1と2のリビジョン間の差分
2013-02-06 17:01:37時点のリビジョン1
サイズ: 4501
編集者: clear
コメント:
2013-02-06 17:03:08時点のリビジョン2
サイズ: 4499
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 54: 行 54:
多言語テキストライブラリ。GNOMEの一部。 多言語テキストライブラリ。GTKの一部。

WMを実装する際に用いるライブラリ

(Cで書く場合の話。他言語でもC向けライブラリのバインディングを使うことになるはず)

X11ライブラリ

GTKやQt、あるいはXtのようなツールキットを使って実装することもできるが、それらだけでは実現できない低レベルの操作を行うためには、XlibかXCBを使う必要がある(自前でXプロトコルをしゃべることができれば要らないが…)

Xlib

古くからある方。いい加減古いので今は推奨されていないが、これを使って書かれている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公式ではない)

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

XCB(X C Bindings)

http://xcb.freedesktop.org/

Xlibを置き換えることを目的として作られた比較的新しめのライブラリ。

  • Xlibよりダイレクトにプロトコルを扱う感じ。XMLで書かれた仕様からライブラリのソースが自動生成されている
  • 適切に使えばXlibよりかなりパフォーマンスが良い
  • Xlibは設計上マルチスレッド下での使用に問題がある(使えない訳ではない)が、XCBはマルチスレッドでも使える

とにかく資料が少ない(チュートリアルと、ソースからdoxygenで生成されたドキュメントを除くとほとんど皆無)。しかしコンセプトさえ理解すればあとはパターンなので、Xプログラミングの知識さえあればさほど困らない(Xプログラミングの知識についてはXlibに関する資料が参考になる)。そもそもXCBはXlibを代替することを目的として生まれたので、両者を対比して調べていけばだいたいなんとかなる。

数少ない資料。

XCBについてはXCBを用いた既存のアプリケーションを読むのが手っ取り早い。awesomeとかi3とか。

その他

Xft

アンチエイリアスフォントを描画するためのライブラリ。Xlibと連携して使える。

  • XCBにはバインディングがないので、cairoやpangoを使う

Cairo

デバイス非依存のベクタグラフィクスライブラリ。XlibやXCBにもグラフィクス機能が備わっているが、それらがXサーバに描画リクエストを送るものであるのに対し、Cairoはクライアントサイドで描画を行う。

  • バックエンドを抽象化している。もちろんXlib、XCBと連携可能
  • アンチエイリアス付きの文字(列)描画が可能。ただし機能は限定されており(公式に"toy"と言われている)、本格的なアプリケーションにはpangoを使うことが推奨されている
  • GTKはバージョン3から描画にCairoを使うようになった

Pango

多言語テキストライブラリ。GTKの一部。

  • テキストを配置したり、効果をつけたりフォントを補完したり…といった機能を備える
  • Cairoと連携可能

clear/wm_devel/library (最終更新日時 2013-02-06 17:03:08 更新者 clear)