Xlib
サーバに要求を送るXlib関数は即座に要求を送るのではなく、output bufferというバッファに一旦格納する。この場合のoutputはクライアントからサーバに向けての出力である。output bufferはサーバへのあらゆる種類の要求を格納でき、それは必ずしも画面に見える効果だけではない。output bufferは、関数XSyncやXFlushを呼び出したとき、あるいはサーバからの戻り値がある関数を呼び出したとき(応答があるまでそれら関数はブロックする)、あるいはその他の条件でフラッシュ(バッファ上のすべての要求がサーバに送られ、バッファを空にする)される。
Xlibは受け取ったイベントをキューに格納する。クライアント・アプリケーションは、そのキューを調べて、イベントを取り出す。Xサーバがイベントを非同期に送るのに対して、Xlibを使うアプリケーションはキュー上のイベントにアクセスするのにXlib関数を明示的に呼び出さなければならない。そのような関数の中にはブロックするものもあり、その時点でもoutput bufferがフラッシュされる。
エラーは非同期に受け取られ、扱われる。アプリケーションは、エラー発生時にエラーメッセージをサーバから受け取るエラーハンドラを登録しておく。
ウィンドウの一部が見えない状態のとき、ウィンドウの内容が保持されているとは限らない。その場合、隠れていたウィンドウが見える状態になるとExposeイベントがアプリケーションに送られる。アプリケーションは、そのイベントを受けてウィンドウの内容を再描画しなければならない。
XlibはX Window Systemのクライアント用ライブラリであり、C言語で書かれている。Xサーバとのやり取りを行うサブルーチン群を含む。それらのサブルーチンを使うことで、Xプロトコルの詳細を知らなくともプログラムを書くことが可能になっている。Xlibを直接使っているアプリケーションは少なく、通常はXlibの上位にウィジェット・ツールキットを提供する次のようなライブラリを配置して使う。
Intrinsics (Xt)
Athena widget set (Xaw)
Motif
GTK
Qt(X11 版)
Tk
Xlibが登場したのは1985年ごろであり、Unix系オペレーティングシステム (OS) のGUIに使われている。XCBはXlibの後継となるべく開発されている。