私が知っている最新の本はありません。実際には、一連の仕様とソース コードを読む必要があります。幸いなことに、それほど複雑ではありません。
ソースを gtk+/gdk/x11 (GTK の X バックエンド) に読み込んで、ソースをお気に入りの 2 つの WM に読み込めば、大いに役立つと思います。ICCCM と EMWH の仕様は不可欠です。
古いガイド以降の X プログラミングの大きな変化は、描画、フォント、印刷などのためにサーバー側の機能の多くを使用することを好まないということです。したがって、XDrawFoo 関数、フォント、XPrint、GC、カラーマップに関するすべて、多かれ少なかれ時代遅れです。描画は通常、Cairo や Skia などのライブラリを使用してクライアント側で行われます。
ウィンドウとピックスマップに関すること、およびそれらの古い本での X の動作の基本的な方法は、依然として正確です。
WM をいじっている場合の一般的な X のアドバイス:
状態を取得するのではなく、イベントに応答する必要があります。たとえば、サイズは、ConfigureNotify を取得した最後のサイズであると常に考えてください。サイズを取得するために XGetGeometry などを呼び出さないでください。状態の取得には 2 つの問題があります。パフォーマンスが低下する (ラウンド トリップのブロック = パフォーマンスが低下する) ことと、競合状態が発生することです。
WM では、他のアプリのウィンドウを扱っており、それらはいつでも破棄される可能性があるため、そのウィンドウに触れているとエラーが発生します。そのため、ウィンドウで呼び出す関数は失敗する可能性があります。
CurrentTime は絶対に使用しないでください。常に実際のタイムスタンプを使用してください。そうしないと、おかしな競合状態のバグが発生して気が狂ってしまいます
他にもたくさんのヒントがあると思いますが、よくある間違いを避けるための 3 つのヒントを紹介します ;-)