Xlib
つまり、実際の見た目に関するデータはサーバ側にある。クライアントは識別子を使ってそれらのオブジェクトを操作する。クライアントはオブジェクトを直接操作できず、サーバにオブジェクトの識別子を指定して操作を要求する。
Windows、Pixmap、Font、Colormapなどの型はすべて識別子であり、実際には32ビットの整数である。クライアントはサーバに対してウィンドウの生成を要求することでウィンドウを生成する。これは、ウィンドウの識別子(つまり番号)を返すXlib関数を呼び出すことで行われる。その後、その識別子を使ってクライアントがサーバに対してそのウィンドウへの各種操作を要求する。
識別子はサーバ内で一意である。その多くは別々のアプリケーションであっても同じオブジェクトを指すのに使われる。例えば、1つのサーバと接続した2つのアプリケーションがあるとき、1つの識別子でどちらも同じウィンドウを参照することができる。それぞれのアプリケーションは使用しているチャンネルが異なるため、それぞれ別々のDisplay構造体を持っている。しかし、同じ識別子についての操作を要求すれば、同じオブジェクトに対して操作が行われる。
Xlibでの主要なデータ型はDisplay構造体と各種識別子型である。
ディスプレイとは、いわばグラフィカルな操作が行われる物理的あるいは仮想的な機器である。XlibにおけるDisplay構造体には、ディスプレイに関する情報が格納されているが、より重要な情報としてクライアントとサーバ間のチャンネルに関する情報も格納している。例えば、Unix系OSではDisplay構造体には、そのチャンネルのソケットのファイルハンドルが含まれるConnectionNumberマクロで取り出し可能)。Xlibの関数の多くはDisplay構造体を引数としている。これは、Xlib の関数の多くがチャンネルに対して操作したり、特定のチャンネルに関する操作をするためである。特にサーバとやり取りするXlibの関数は、チャンネルにアクセスするのにこの構造体を必要とする。ローカルな処理しかしない関数でも、特定のチャンネルに関連したデータを操作するためにこの構造体を必要とする。例えば、イベントキューの操作はチャンネルごとのイベントキューを操作する。
ウィンドウ、カラーマップなどはサーバが管理する。