8

私は今Xlibプログラミングについて少し混乱しています。数週間前にdwm(軽量ウィンドウマネージャー)を使い始めました。Xlibプログラミングの本やオンラインリソースを入手して、dwmをカスタマイズしたいと思います。

しかし、ウェブをグーグルで検索した後、Xlibについて話している新しい記事はあまり見当たりませんか?AmazonのXウィンドウシステムの最新のプログラミングガイドは1994年にあります!?古い本で十分であるため、または私が知らないいくつかの新しい技術があるため、Xlibの新しい記事はありませんか?または、Webで検索するための適切なキーワードがなかった可能性があります。その場合、誰かが私に正しい場所を教えてもらえますか?

4

1 に答える 1

16

私が知っている最新の本はありません。実際には、一連の仕様とソース コードを読む必要があります。幸いなことに、それほど複雑ではありません。

ソースを gtk+/gdk/x11 (GTK の X バックエンド) に読み込んで、ソースをお気に入りの 2 つの WM に読み込めば、大いに役立つと思います。ICCCM と EMWH の仕様は不可欠です。

古いガイド以降の X プログラミングの大きな変化は、描画、フォント、印刷などのためにサーバー側の機能の多くを使用することを好まないということです。したがって、XDrawFoo 関数、フォント、XPrint、GC、カラーマップに関するすべて、多かれ少なかれ時代遅れです。描画は通常、Cairo や Skia などのライブラリを使用してクライアント側で行われます。

ウィンドウとピックスマップに関すること、およびそれらの古い本での X の動作の基本的な方法は、依然として正確です。

WM をいじっている場合の一般的な X のアドバイス:

  • 状態を取得するのではなく、イベントに応答する必要があります。たとえば、サイズは、ConfigureNotify を取得した最後のサイズであると常に考えてください。サイズを取得するために XGetGeometry などを呼び出さないでください。状態の取得には 2 つの問題があります。パフォーマンスが低下する (ラウンド トリップのブロック = パフォーマンスが低下する) ことと、競合状態が発生することです。

  • WM では、他のアプリのウィンドウを扱っており、それらはいつでも破棄される可能性があるため、そのウィンドウに触れているとエラーが発生します。そのため、ウィンドウで呼び出す関数は失敗する可能性があります。

  • CurrentTime は絶対に使用しないでください。常に実際のタイムスタンプを使用してください。そうしないと、おかしな競合状態のバグが発生して気が狂ってしまいます

他にもたくさんのヒントがあると思いますが、よくある間違いを避けるための 3 つのヒントを紹介します ;-)

于 2010-07-23T02:03:32.343 に答える