
コンピューティングにおいて、ウィンドウシステム(またはウィンドウシステム)とは、ディスプレイ画面のさまざまな部分を個別に管理するソフトウェアスイートのことです。[ 1 ]これは、ユーザーインターフェイスのWIMP(ウィンドウ、アイコン、メニュー、ポインタ)パラダイムを実装するグラフィカルユーザーインターフェイス(GUI)の一種です。
現在実行中の各アプリケーションには、通常サイズ変更可能で長方形のディスプレイ領域が割り当てられ、その領域にGUIが表示されます。これらのウィンドウは、タイル状のインターフェースとは異なり、互いに重なり合うことができます。通常、各ウィンドウの周囲にはウィンドウ装飾が描画されます。ウィンドウ装飾と、スライダーやボタンなど、ユーザーが直接操作できるグラフィカル要素であるウィンドウ内のウィジェットのプログラミングは、ウィジェットツールキットを使用することで容易かつ簡素化されます。
ウィンドウシステムの主要コンポーネントは通常ディスプレイサーバーと呼ばれますが、ウィンドウサーバーなどの別の用語も使用されます。ウィンドウ内で実行され、GUIを表示するアプリケーションはすべて、ディスプレイサーバーのクライアントです。ディスプレイサーバーとそのクライアントは、アプリケーションプログラミングインターフェイス(API)または通信プロトコル(通常はディスプレイサーバープロトコルと呼ばれます)を介して相互に通信し、ディスプレイサーバーはクライアントとユーザー間の仲介役となります。ディスプレイサーバーは、カーネルからすべての入力を受け取ります。カーネルは、キーボード、ポインティングデバイス、タッチスクリーンなどの接続されているすべての入力デバイスから入力を受け取り、それを適切なクライアントに送信します。ディスプレイサーバーは、クライアントからコンピューターモニターへの出力も担当します。サウンドの出力は通常ディスプレイサーバーによって管理されませんが、サウンドボリュームは通常GUIアプレットによって処理され、どのアプリケーションを最前面に表示するかを決定するのはディスプレイサーバーです。ウィンドウシステムにより、コンピューターユーザーは複数のプログラムを同時に操作できます。各プログラムは、通常画面の長方形領域である独自のウィンドウにGUIを表示します。
プログラマの視点から見ると、ウィンドウシステムはグラフィックプリミティブを実装します。例えば、フォントのレンダリングや画面への線の描画などです。ウィンドウマネージャーなどのグラフィカルインターフェースの上位要素が利用できるよう、グラフィックハードウェアの抽象化を提供します。
ディスプレイサーバープロトコルは、ネットワーク対応であったり、ネットワーク透過的であったりする可能性があり、シンクライアントの実装を容易にする。

ディスプレイサーバーまたはウィンドウサーバーとは、クライアントの入出力と、オペレーティングシステム、ハードウェア、およびクライアント同士の入出力を調整することを主な役割とするプログラムです。ディスプレイサーバーは、ディスプレイサーバープロトコル(DSP)と呼ばれる通信プロトコルを介してクライアントと通信します。DSPは、ネットワーク透過型の場合もあれば、単にネットワーク接続可能な場合もあります。
ディスプレイサーバーは、あらゆるグラフィカルユーザーインターフェース、特にウィンドウシステムにおいて重要な構成要素である。
スタンドアロンディスプレイサーバーのサーバー/クライアント関係は、やや直感に反する。というのも、「サーバー」は通常、大型の遠隔マシンをイメージするのに対し、スタンドアロンの「ディスプレイサーバー」は小型のローカルシステムであり、ほとんどのクライアントはより大型の中央マシン上で実行されるからである。その理由は、ディスプレイサーバーがディスプレイと入力デバイスのサービスを提供するからである。

X Window System は1984 年に初めてリリースされ、歴史的にUnixおよびUnix ライクなオペレーティングシステムの主要なウィンドウ システムとなっています。コア プロトコルは 1987 年以来バージョン 11 のままであり、そのため一般的に「X11」として知られています。X11 プロトコルの現在のリファレンス実装はX.Org Serverであり、ディスプレイ サーバーといくつかの補助コンポーネントを提供します。X Window System はルックアンド フィールを定義していません。代わりに、ユーザーはウィンドウ マネージャ(スタンドアロンまたはより広範なデスクトップ環境の一部) とウィジェット ツールキットを使用して設計されたアプリケーションを実行します。X.Orgリポジトリには、リファレンス ウィンドウ マネージャtwm、ウィジェット ツールキットのリファレンス実装X Athena Widgets、電卓や時計などの基本的なアプリケーションが含まれています。[ 2 ]
X11ディスプレイサーバープロトコルを実装したディスプレイサーバーのその他の注目すべき例としては、XFree86(現在のX.Org Serverのフォーク元)、XQuartz(macOS用)、Cygwin/X ( Microsoft Windows用)などがある。

Waylandプロトコルを実装するディスプレイサーバーはWaylandコンポジターと呼ばれ、 Waylandプロトコルを介してクライアントと通信します。WaylandはX11の後継として開発され、X11の設計とは大きく異なります。Waylandコンポジターは、ディスプレイサーバー、ウィンドウマネージャ、コンポジティングマネージャの機能を1つのコンポーネントに統合していますが、X11ではこれらは別々のソフトウェアです。[ 3 ]
Waylandプロトコルの範囲はX11のコアプロトコルよりもはるかに狭く、クライアントが「サーフェス」と呼ばれるバッファにデータを書き込む方法のみを定義しており、ネットワークプロトコルとしては機能しません。その他のすべての機能は、拡張プロトコル(wayland-protocolsリポジトリで上流で開発)、LinuxカーネルのDirect Rendering Managerおよびevdevコンポーネント、Mesa 3Dグラフィックスライブラリ、ウィジェットツールキット( GTK、Qt、EFLなど)、XDGデスクトップポータルシステム、およびlibinputやPipeWireなどのさまざまなソフトウェアパッケージに委ねられています。
Wayland は、X11 から移植されたGNOME [ 4 ]やKDE Plasma [ 5 ]などのオープンソースのデスクトップ環境や、Wayland ネイティブ環境としてゼロから作成されたCOSMICなどの環境で採用されています。Weston 、Sway、Hyprland、Wayfire、niri、labwcなどのスタンドアロンのコンポジタもいくつか利用可能です。Wayland は、Tizen [ 6 ] 、 Sailfish OS [ 7 ]、WebOS [ 8 ]などの組み込みシステムやモバイル向けシステムでも採用されています。
Waylandのリファレンス実装はMITライセンスの下で提供されており、libwayland-clientライブラリとlibwayland-serverライブラリで構成されています。
Mirディスプレイサーバーは、X11やWaylandとは異なる独自のMirディスプレイサーバープロトコルを備えています。MirはX11プロトコルもサポートしています。Canonical社によって開発され、 Ubuntuの標準ディスプレイサーバーとして採用されることを目指していました。しかし、2017年以降、Ubuntuのデスクトップ版ではWaylandディスプレイサーバーに置き換えられています。
Mirディスプレイサーバーの実装であるlibmir-serverおよびlibmir-clientライブラリは、GPLv3ライセンスの下で利用可能です。
GoogleはAndroid向けにSurfaceFlinger [ 10 ]と呼ばれるディスプレイサーバーを開発しました。
Android のすべては「サーフェス」にレンダリングされます。「サーフェス」はアプリケーションによって生成され、SurfaceFlinger によって管理されるキューに配置されます。[ 11 ] [ 12 ]
Android固有のソリューションとして「Gralloc」があります。Grallocはデバイスメモリを管理し、割り当て、調停、Android/Linuxフェンスファイルディスクリプタを介した同期処理を行います。Grallocは、Mesaの汎用バッファ管理(GBM)やNvidiaのEGLStreamsなどの他のソリューションと競合します。Grallocのハードウェア抽象化レイヤー(HAL)は、「サーフェス」の基盤となるバッファを割り当てるために使用されます。
Androidでの合成処理では、サーフェスはSurfaceFlingerに送信され、SurfaceFlingerはOpenGL ESを使用して合成処理を行います。
ハードウェアコンポーザーHAL(HWC)はAndroid 3.0で導入され、長年にわたって着実に進化を遂げてきました。その主な目的は、利用可能なハードウェアを用いてバッファを合成する最も効率的な方法を決定することです。HALであるため、その実装はデバイス固有であり、通常はディスプレイハードウェアのOEMによって行われます。
AppleのmacOSファミリーのオペレーティングシステムにおいて、Quartz Compositorはディスプレイサーバーとウィンドウシステムにおけるウィンドウマネージャーの役割を果たします。
Microsoft Windowsでは、Windows Vista以降、デスクトップ ウィンドウ マネージャー (DWM)によってハードウェア アクセラレーションを使用してグラフィカル ユーザー インターフェイスをレンダリングできます。これは元々、透明度、3D ウィンドウ切り替えなどの効果を可能にする新しい「Windows Aero」ユーザー エクスペリエンスの一部を実現するために作成されました。Windows Server 2008 にも含まれていますが、「デスクトップ エクスペリエンス」機能と互換性のあるグラフィック ドライバーがインストールされている必要があります。Windows 8 以降では、DWM を無効にすることはできず、適切なグラフィック カードがインストールされていない場合はソフトウェア レンダリングされます。
Microsoft Windows(XP、9x以前)、従来のMac OS(バージョン9以前)、Palm OSなどの一部のシステムには、OSに統合されたウィンドウシステムが含まれています。