コンポジティングマネージャ、またはコンポジターとは、アプリケーションに各ウィンドウ用のオフスクリーンバッファを提供し、これらのウィンドウバッファを合成して画面を表す画像を作成し、その結果をディスプレイメモリに書き込むソフトウェアです。コンポジティングウィンドウマネージャとは、ウィンドウマネージャであると同時にコンポジティングマネージャでもあるものです。[ 1 ] [ 2 ]
コンポジティングマネージャは、バッファリングされたウィンドウに対して追加の処理を実行し、ブレンド、フェード、スケーリング、回転、複製、曲げと変形、シャッフル、ぼかし、アプリケーションのリダイレクト、ウィンドウを複数のディスプレイや仮想デスクトップのいずれかに変換するなどの 2Dおよび3D アニメーション効果を適用できます。コンピュータグラフィックス技術により、ドロップシャドウ、ライブプレビュー、複雑なアニメーションなどの視覚効果をリアルタイムでレンダリングできます。 [ 3 ] [ 4 ] 画面はダブルバッファリングされているため、更新中にちらつきません。
最も一般的に使用されている合成マネージャーおよび合成ウィンドウマネージャーには、以下のものがあります。
ウィンドウマネージャは、必要に応じて各ウィンドウに再描画のメッセージを送信します。ウィンドウは重なり合うことがあります。前面のウィンドウが移動すると、それまで隠されていた背面のウィンドウの領域が表示されることがあります。ウィンドウマネージャは、新しく表示された領域をユーザーに表示させるための戦略によって大きく分類されます。「スタッキング」戦略では、ウィンドウマネージャは背面のウィンドウに再描画を指示します。「コンポジティング」戦略では、ウィンドウマネージャは背面のウィンドウを含む各ウィンドウの完全な外観を格納するオフスクリーンメモリバッファを保持します。
スタッキングマネージャの場合、動作が遅い、応答しない、またはバグのあるプログラムがメッセージにタイムリーに応答しないと、再描画プロセスが破損する可能性があります。[ 5 ] [ 6 ]悪意のあるプログラムは、ウィンドウの再描画を怠るだけで、システムを不安定に見せる可能性があります。その結果、次の1つ以上の状態が発生する可能性があります。
コンポジットマネージャを使用している場合、ウィンドウマネージャからの要求に応じてウィンドウが再描画されなくなると、最後に描画された状態がそのまま表示され、ウィンドウが暗くなることがあります。多くの場合、タイトルが変更され、ウィンドウが応答しない状態であることが示されます。プログラムによっては、ウィンドウの移動やマッピング解除を阻止する場合がありますが、通常は再描画の問題は発生しません。
1985年に発売されたコモドール・アミーガは、合成ウィンドウシステムを搭載した最初のシステムの1つでした。アプリケーションはまず、現在の表示領域外のメモリ領域をビットマップとして使用するように要求できます。アミーガのウィンドウシステムは、システムのハードウェアブリッターを使用して一連のビットブリットを実行し、これらのアプリケーションのビットマップとボタンやスライダーをディスプレイメモリに合成します。これにより、アプリケーションはビットマップを再描画する必要がなくなります。[ 9 ]

2001年3月24日、AppleのMac OS X 10.0(Cheetah)は、Quartzコンポーネントによって提供されるソフトウェアベースの3D合成とエフェクトを搭載した最初の主流オペレーティングシステムとなった。Mac OS X 10.2(Jaguar)とQuartz Extremeのリリースにより、合成処理は専用のグラフィックスハードウェアに移行できるようになった。[ 2 ] [ 10 ]
2003年、サン・マイクロシステムズは、Swingツールキットの上に構築する野心的な3Dグラフィックスシステム「Project Looking Glass」を発表しました。これは2003年のLinuxWorld Expoで初めて公開されました。Appleは知的財産権侵害でサンを訴えると脅迫しましたが、他のウィンドウマネージャはLooking Glassの機能の一部を実装しました。2006年までに、サンは開発を中止しました。サンの主要事業は、グラフィカル指向のUnixワークステーションからエンタープライズメインフレームの販売へと移行することでした。[ 11 ]
マイクロソフトは、2003年のWindowsハードウェアエンジニアリングカンファレンスでProject Longhornのデスクトップウィンドウマネージャを初めて発表し、ウィンドウが揺れる様子を実演した。[ 12 ] Longhornの開発プロセスに深刻な遅延が生じたため、マイクロソフトは2006年11月のWindows Vistaのリリースまで3D合成ウィンドウマネージャを発表できなかった。[ 13 ]
X Window Systemでコンポジットを実装するには、段階的に行われた再設計が必要でした。[ 14 ] Metacity 2.8.4 は 2004 年 8 月にリリースされました。[ 15 ]しかし、 X用の最初に広く宣伝されたコンポジット ウィンドウ マネージャは、2005 年 1 月にリリースされたXfwmでした。 [ 16 ] 2005 年 1 月 26 日にCompiz がリリースされ、Linux プラットフォームに完全に高速化された 3D コンポジットが導入されました。[ 17 ] KDEのKWinもコンポジットをサポートしています。
コンポジット処理では、ウィンドウに3D効果を適用することで、3Dデスクトップ効果を実現できます。最新のコンポジットウィンドウマネージャは、3Dハードウェアアクセラレーションを使用します。コンポジットウィンドウマネージャソフトウェアは、OpenGLやDirect3Dなどのプログラミングインターフェースを介してグラフィックスハードウェアと通信します。
この技術を用いた初期の広く普及した実装は、Mac OS X 10.2でMac向けに、またLuminocityプロトタイプでLinux向けにリリースされました。現在、OpenGLを使用するウィンドウマネージャには、Compiz、KWin、Quartz Compositorなどがあり、Desktop Window Managerは現在DirectX 9を使用しています。OpenGLはまだハードウェアで完全にサポートされているわけではないため、ハードウェアの性能向上に伴い、OpenGLベースの合成処理のパフォーマンスも向上していくと考えられます。
X Window System (X11)上で動作するスタック型ウィンドウマネージャには、クロマキー合成またはグリーンスクリーン拡張機能が必要でした。合成機能は、コンポジット拡張機能によって導入されました。合成マネージャは、利用可能な場合はこの拡張機能を介してハードウェアアクセラレーションを利用します。

X11では、完全な3Dアクセラレーション合成を実現するには、ハードウェアアクセラレーションを利用するためにウィンドウシステムプロトコルに根本的な変更を加える必要がありました。当初、OpenGLをベースにしたX11の改良版がXglを含め多数登場しました。AIGLXの導入により、 Xglを使用する必要がなくなり、ウィンドウマネージャは標準のXサーバー上で3Dアクセラレーション合成を実行できるようになり、同時に直接レンダリングも可能になりました。現在、NVIDIA、Intel、およびATIのグラフィックカードがAIGLXをサポートしています。
Compiz はキューブ効果を導入し、ユーザーは一度に最大 6 つの仮想デスクトップを表示できます。各デスクトップはキューブの表面テクスチャに変換され、自由に回転させることができます。Compiz は幅広い 2D および 3D 効果を表示し、ハードウェア要件は比較的低くなっています。[ 18 ] 2012 年に Compiz はUbuntu Linuxに組み込まれ、サポートされているハードウェアとドライバが利用可能で、ユーザーが 2D モードを選択していない場合は自動的に有効になりました。[ 19 ]
Mutter(Metacity + Clutter )は、 GNOMEのデフォルトのウィンドウマネージャとしてMetacityに取って代わりました。GNOME 3.0のGNOME Shellコンポーネントに搭載されています。ディスプレイエンジンにはClutterを使用しており、これは主要なオペレーティングシステム、ネットブック、スマートフォンすべてに移植されています。
バージョン4以降、KDEのウィンドウマネージャーであるKWinは合成機能を備えています。KWinはCompizにも搭載されている多くの機能を備えています。
With the Wayland protocol, a compositing window manager is also a display server; there is no display server separate from the window manager. The combined window manager/display server is called a Wayland compositor. Weston is a reference implementation of a Wayland compositor; KWin and Mutter are also Wayland compositors as well as being X11 compositing window managers.
Project Looking Glass was a window manager combining 3D rendering and the cross-platform Java programming language. It is now inactive and released under the GNU General Public License. The Granular Linuxlive CD distribution includes Looking Glass as an optional window manager.
In the aftermath of it being discontinued, some of its features, such as cover switching and thumbnail live previews, have found their way onto other window managers. Its more original features included window tilting, two-sided window frames and parallax scrolling backgrounds.
While they are able to run on 3D-capable hardware, AmigaOS 4 and MorphOS are designed to run on old legacy Amiga computers, starting with the Amiga 1200. As such, their window managers have mostly planar rendering capabilities that include composite layering, alpha blending, gradients, high resolution and multiple desktops ("screens") that can partially clip one another.
While the window manager in Windows 2000 does perform compositing, it does not perform transformations such as a per-pixel alpha. Few commercial applications took advantage of alpha blending; freeware programs were among the first to experiment with it, albeit through optional settings.[20][21] Compositing was introduced with Desktop Window Manager in Windows Vista.[1]
Windows Vista and Windows 7 allow the user to disable Desktop Window Manager by selecting the Windows Basic appearance settings. In addition, it is automatically disabled by Windows in order to perform hardware overlay through the Overlay Mixer Filter.
The compositing approach makes it easier to implement a number of features that make the user interface more accessible, simpler to use or with eye candy elements.

TrueTypeフォントや3Dアクセラレーション要素などのベクターグラフィックスは、劣化(通常はエイリアシングによるもの)を起こすことなく拡大できます。スクリーン拡大鏡は画面の一部を拡大し、テキストの一部を読みやすくします。これは、目の疲れを防ぐため、視覚障害者のため、あるいは単に遠くからでも読みやすくするためなど、様々な目的で使用されます。魚眼レンズ拡大鏡やズームデスクトップ効果などのズーム効果は、このような機能を提供します。
ユーザーがタスクバー上の対応するボタンにカーソルを合わせると、ウィンドウのプレビューがポップアップサムネイルとして表示されます。これにより、ユーザーは複数の同時実行プログラムを識別し、管理することができます。

名前やアイコンが似ているウィンドウは、特にタイトルバーが重なっている場合、混乱を招きやすくなります。タスクバー上のこうしたウィンドウの位置をすべて覚えておく必要があるのです。このように多くのウィンドウが開いている場合、ユーザーはタスクバーのボタンを一つずつクリックして試行錯誤を繰り返すしかありません。ウィンドウ切り替え機能を使えば、装飾的な背景に合わせてウィンドウを一時的に並べ替えることで、複数のウィンドウを一度に素早くプレビューできます。選択が完了すると、ウィンドウは元の配置に戻ります。
選択は、ユーザーがホットキーの組み合わせを入力するか、マウスカーソルを画面上のホットスポットに移動するか、または場合によってはマウスのスクロールホイールを使用することで開始されます。項目はキーボードまたはマウスを使用して移動します。項目の選択は、ホットキーを離すか、Enterキーを押すか、マウスでクリックすることで行います。

フリップスイッチャーは、Alt+Tabキーによるウィンドウ切り替え機能を拡張したものです。実行中のウィンドウは、1950年代のジュークボックスやローロデックスのフリップ式セレクターのように、スタック状に配置されます。システムによっては、Alt+Shift+Tabキーを押して前のウィンドウに戻ることもできます。切り替え中は、各項目に視覚的な遷移効果が適用されます。
フリップ切り替えの一般的な実装例としては、WindowsのFlip 3DやCompizのShift Switcherなどが挙げられる。

カバー切り替えは、フリップ切り替えと似ていますが、主に視覚的な違いがいくつかあります。選択項目が一番上に表示される1つのスタックではなく、現在の選択項目が前面中央に表示される2つの対称的なスタックが表示されます(Looking Glassのウィンドウ傾斜機能に似ています)。
Cover FlowはmacOSにおけるカバー切り替え機能の実装です。より新しいバージョンでは、選択されていないアイテムをぼかすことで目立たなくしています。Cover FlowはiTunesなど、Appleが公開している他のソフトウェアにも実装されています。
これは「パラパラ漫画表示」とも呼ばれます。

リングスイッチングはフリップスイッチングに似ていますが、ウィンドウが円を描くように移動し、現在選択されているウィンドウが前面(通常は下部)に表示されます。ほとんどのコンポジットウィンドウマネージャーにはこの機能が標準搭載されており、3d-desktopなどのサードパーティ製アプリケーションでも利用可能です。
ユーザーはウィンドウをグループ化することができ、各グループでは一度に1つのウィンドウのみが表示されます。Compizでは、グループ内のアクティブなウィンドウが変更されると、ウィンドウフレームが反転して表示されます。
macOSは、画面上のすべてのウィンドウをタイル状に並べてプレビュー表示します。同様の機能を持つ他のシステム(Microsoft Windows、Compiz、KWin、サードパーティ製アプリケーションなど)は、Exposéクローンと呼ばれます。Exposéを起動するホットキーはAlt+Tabではなく、F3です。
Mac OS X 10.7では、 Appleが開発したExposé、 Dashboard、Spacesなどの複数の合成機能が統合され、Mission Controlと呼ばれるより大きなプログラムになりました。
macOSでは、時計、メモ帳、電卓などの「ウィジェット」(単機能のアプレット)をホットキーを押すことで表示できます。ウィジェットエンジンは、よく使うウィジェットを邪魔にならないように表示することで、作業効率を向上させます。これらはmacOSのDashboardプログラムによって管理されています。
Compizは空のウィジェットレイヤーから始まり、ユーザーはアプリケーションをクリックして追加できます。スクリーンレット、gDesklets、SuperKarambaなど、さまざまなウィジェットがサポートされています。[ 22 ]
Windows Vistaでは、ユーザーがWindowsサイドバー(サイドバーガジェット)、Windows Liveスタートページ(Webガジェット)、またはユーザーの携帯電話などの外部ディスプレイ(SideShowガジェット)に配置できるガジェットが提供されていました。WindowsサイドバーはWindows Vistaでは目に見えるパーティションでしたが、Windows 7で廃止され、サイドバーガジェットもデスクトップガジェットに変更されました。
合成ウィンドウマネージャが開発される前は、ウィンドウが瞬時に画面に出入りしていたため、インターフェースのメタファー(および物理的なオフィス環境)と矛盾していました。Classic Mac OSのような一部のシステムでは、 ZoomRectsを使用してこの問題を回避し、ウィンドウのアウトラインを最終位置に向かって「ズーム」するようにアニメーション化していました。[ 23 ]しかし、ほとんどのシステムでは、 GUI要素の突然の出現と消失は、経験の浅いユーザーにとって混乱を招いたり、混沌としているように見えるかもしれません。視覚的な遷移はコンテキストを提供し、GUI 要素の因果関係を区別するのに役立ちます。単に消えるのではなく、ウィンドウがフェードアウトしたり、タスクバーに目に見える形で縮小したりすることができます。クリックされたプルダウン メニューは、メニュー バーからスムーズに放射状に広がり、その起源と目的を判断しやすくなります。
段階的で自然な画面遷移は、高齢者や視覚障害のあるユーザーにとって特に役立ちます。これらのユーザーは、画面の変化に気づくのが遅く、認識も鈍いためです。例えば、操作に慣れていないユーザーは、誤って起動したメニューを衝動的にクリックしてしまい、作業内容を失ってしまう可能性があります。画面遷移を表示するために必要な短い遅延時間は、ユーザーが意識的に判断するのに十分な時間を与え、このようなミスを防ぐのに役立ちます。
Metisseは、直接操作技術を使用して、既存のグラフィカルインターフェースを簡単に適応、再構成、および再結合できるシステムであるユーザーインターフェースファサードを実装しています。[ 24 ]