それはすべて非常にモジュール化されており、柔軟性があります。ただし、これは複雑さをもたらします。
「X サーバー」は、ディスプレイ デバイスを駆動します。グラフィックサービスをクライアントに提供します。これらのサービスは非常に単純です-次のように:
"Give me a window frame to draw in"
"Put this bitmap here"
"Draw a horizontal black line 100px wide"
"Render the text 'hello' at (100,100)"
"Tell me if any mouse clicks or key presses have been aimed at my window frame"
X によって提供される Xlib と呼ばれるライブラリがあり、これらすべての単純なサービスに対する標準インターフェースを備えています。X サーバーのディスプレイを使用したいプログラムは、最終的にこのクライアント ライブラリを使用し、X クライアントと呼ばれます。Xlib は、これらのサービスを呼び出すために、任意の X サーバーに接続する方法を知っています。
別の X クライアント プログラムであるウィンドウ マネージャーは、デスクトップの「ルック アンド フィール」 (ウィンドウの移動方法や配置方法など) を担当します。 WindowsXP、Mac、または NeXTSTEP のように見えます。
X の哲学の一部は、「ポリシーではなくメカニズム」を定義することでした。つまり、それらはそれを行うためのツールを提供しますが、それらのツールの使用方法については説明しません。そのようなツールの 1 つがウィンドウ マネージャーで、自由に置き換えることができます。
最新の X アプリケーションの多くは、Gnome や KDE などのデスクトップ環境を使用するように作成されています。これにより、これらのプログラムは描画するための一貫したボタンとコントロールのセットを提供し、従来 X に含まれていなかったものの、デスクトップの一部と見なされることが多いいくつかのもの (ドラッグ アンド ドロップへの応答方法や表示方法など) に対する一貫したインターフェイスを提供します。標準のファイル選択ダイアログ ボックス。
通常、デスクトップ環境は、すべての単純な X クライアント要求を作成し、プログラムがより重要なことを処理できるようにするオブジェクト モデルまたはプログラム インターフェイスを提供します。これらの低レベルの呼び出しを削除すると、プラットフォームの独立性という別の重要な利点が得られます。
多くのデスクトップ環境にはウィンドウ マネージャーが含まれているため、ウィンドウ コントロールとボタンのルック アンド フィールは一貫しており、環境によって提供されるデスクトップ メタファと連携します。ただし、通常はまだ切り替えることができます。
X サーバー (ディスプレイを実行) と X クライアント (ディスプレイを使用したい) の分離には、いくつかの意味があります。
グラフィックス システムは GUI プログラムから分離されており、Web ブラウザーや Web サーバーと同じくらい完全に分離されています。
そのため、Web ブラウザがローカル マシン上の Web サーバーを指す必要がないのと同じように、GUI プログラムはローカル マシンに表示されない可能性があります。
マシンはクライアントだけを実行し、X サーバーは別の場所で実行できます。
ディスプレイを備えたマシンでクライアントを実行する必要はありません。X サーバーだけを実行でき、すべてのクライアントを専用マシンで実行できます。これがオリジナルのシン クライアントです。大規模な中央サーバー上で実行される大規模なプログラムです。グラフィカルなユーザー インタラクションは、ユーザーの前にあるデスク上の専用ハードウェアによって処理されます。
GUI プログラムに GUI を表示する場所を指示できるように、X サーバーのネットワーク アドレスを知る必要があります。(これは通常、DISPLAY 環境変数を設定することによって行われます)
多くの異なるマシンからの多くのプログラムを、すべて同じデスクトップに同時に表示できます。カットアンドペーストを含め、すべてシームレスに処理されます。