
X では、ウィンドウ マネージャーとディスプレイ サーバーは2 つの異なるプログラムですが、Wayland では、両方の機能が Wayland コンポジターによって処理されます。
.svg/500px-Window_(windowing_system).svg.png)

ウィンドウマネージャは、グラフィカルユーザーインターフェイスのウィンドウシステム内のウィンドウの配置と外観を制御するシステムソフトウェアです。[1]ほとんどのウィンドウマネージャは、デスクトップ環境を提供するために設計されています。ウィンドウマネージャは、必要な機能(グラフィックスハードウェア、ポインティングデバイス、キーボードのサポート)を提供する基礎となるグラフィカルシステムと連携して動作し、ウィジェットツールキットを使用して作成および作成されることがよくあります。
ウィンドウ マネージャーの多くは、ウィンドウ システムとウィンドウ マネージャーを明確に区別して設計されています。ウィンドウのメタファーに基づくすべてのグラフィカル ユーザー インターフェイスには、何らかのウィンドウ管理機能があります。実際には、この機能の要素は大きく異なります。[2] 通常、ウィンドウ マネージャーに関連付けられている要素により、ユーザーは実行中のウィンドウを開く、閉じる、最小化、最大化、移動、サイズ変更、および追跡を行うことができます。これには、ウィンドウ デコレーターも含まれます。多くのウィンドウ マネージャーには、タスク バー、プログラム ランチャー、画面上でウィンドウを半分または 4 分の 1 に分割するためのドック、ウィンドウをグループ化するためのワークスペース、デスクトップ アイコン、壁紙、選択したウィンドウをフォアグラウンドに保持する機能、ウィンドウを「ロールアップ」してタイトル バーのみを表示する機能、ウィンドウをカスケード表示する機能、ウィンドウをグリッドに積み重ねる機能、スペースを節約するために同じプログラムのウィンドウをタスク バーにグループ化する機能、オプションの複数行タスク バーなど、さまざまなユーティリティと機能も付属しています。[3] [4] [5] [6]
歴史
1973年、Xerox Altoは、実際に機能するWIMP GUIを搭載した最初のコンピュータとなった。このコンピュータは、ウィンドウを重ね合わせることができるスタッキングウィンドウマネージャを使用していた。[7]しかし、これは時代をはるかに先取りしていたため、その設計パラダイムが広く採用されるようになったのは10年以上後のことだった。Microsoft WindowsにAppleの古典的なMac OSからコピーされた設計が含まれているかどうかは不明だが、どちらもスタッキングウィンドウを使用したGUIを最初に作成したわけではないことは明らかである。1980年代初頭、 Altoの後継機であるXerox Starは、ほとんどのメインアプリケーションウィンドウでタイリングを使用し、ダイアログボックスでのみ重ね合わせを使用したため、スタッキングの必要性がほとんどなくなった。[8]
クラシックなMac OSは、QuickDrawによる一種のスタッキングウィンドウ管理を使用したGUIの最も初期の商業的に成功した例の1つでした。その後継であるmacOSは、 Mac OS X 10.0以降で合成をサポートしているやや高度なウィンドウマネージャを使用しており、Mac OS X 10.2ではQuartz Compositorによるハードウェアアクセラレーションによる合成をサポートするように更新されました。[9]
Digital ResearchのGEM 1.1 は、すべてのウィンドウを重ねることができるスタッキングウィンドウマネージャーを含むオペレーティングシステムでした。1980年代初頭にリリースされました。 [10] GEM は、 Atari TOS を実行するAtari STで使用されるメイン GUI として含まれていたことで有名であり、 Microsoft Windows が広く使用されるようになる前はMS-DOSの GUI としても人気がありました。Apple による訴訟の結果、Digital Research は GEM 2.0 のスタッキング機能を削除せざるを得なくなり、ウィンドウマネージャーはタイリングウィンドウマネージャーになりました。[11]
1980 年代半ば、Amiga OS には、 Intuition (Amiga システムROMに存在した AmigaOS の低レベル ライブラリの 1 つ)と呼ばれる合成ウィンドウ マネージャーの初期の例が含まれていました。これは、どのウィンドウまたはその一部が覆われているか、どのウィンドウがフォアグラウンドにあり完全に表示されているかを認識し、更新が必要な画面の部分のみを描画することができました。さらに、Intuition は合成をサポートしていました。アプリケーションは、まず、現在の表示領域外のメモリ領域をビットマップとして使用するために要求できます。次に、Amiga ウィンドウ システムは、システムのハードウェアブリッターを使用して一連のビット ブリットを実行し、これらのアプリケーションのビットマップ、ボタン、スライダーの合成をディスプレイ メモリ内に構築します。これらのアプリケーションはビットマップを再描画する必要はありません。
1988年、プレゼンテーションマネージャは、最初のバージョンではコマンドラインインターフェイス(CLI)のみを使用していたOS/2のデフォルトシェルになりました。IBMとMicrosoftは、OS/2をDOSの後継として、またDOS用のWindowsとして設計しました。しかし、Windows 3.10の成功後、MicrosoftはWindowsを支持してプロジェクトを放棄しました。その後、将来のOS/2バージョン3のためのMicrosoftプロジェクトはWindows NTとなり、IBMはOS/2のシェルを完全に再設計し、OS/2 1.xのプレゼンテーションマネージャを、 OS/2 2.0でデビューしたオブジェクト指向のワークプレイスシェルに置き換えました。 [12]
例
X ウィンドウ マネージャー
X ウィンドウ システムを使用するシステムでは、ウィンドウ マネージャーとウィンドウ システムは明確に区別されています。厳密に言えば、X ウィンドウ マネージャーはビデオ ハードウェア、マウス、またはキーボードと直接対話しません。これはディスプレイ サーバーの役割です。
X Window System のユーザーは、GNOME 2で使用されるMetacityや、KDE Plasma Workspacesで使用されるKWinなど、さまざまなウィンドウ マネージャーを簡単に使用できます。多くのウィンドウ マネージャーはモジュール式であるため、[あいまい]ユーザーは、ウィンドウ マネージャーの代わりにCompiz (3D合成ウィンドウ マネージャー)などの他のウィンドウ マネージャーを使用できます。 [あいまい]一方、Sawfishとawesome は、厳密なウィンドウ制御を提供する拡張可能なウィンドウ マネージャーです。異なるウィンドウ マネージャーのコンポーネントを混在させたり組み合わせたりすることもできます。たとえば、KWinのウィンドウ装飾は、 GNOME のデスクトップおよびドックコンポーネントで使用できます。
X ウィンドウ マネージャーには、アプリケーションの親を再設定する機能もあります。つまり、最初はすべてのアプリケーションがルート ウィンドウ(基本的には画面全体) に採用されますが、ルート ウィンドウ内で起動されたアプリケーションは、別のウィンドウに採用される (つまり、別のウィンドウ内に置かれる) 可能性があります。X ウィンドウ システムのウィンドウ マネージャーは、ルート ウィンドウからアプリケーションを採用し、親を再設定してウィンドウの装飾 (タイトル バーの追加など) を適用します。親の再設定は、あるウィンドウの内容を別のウィンドウに追加するためにも使用できます。たとえば、Flash Playerアプリケーションをブラウザー ウィンドウに親として再設定すると、ユーザーにはそのプログラムの一部であるかのように見せることができます。親の再設定ウィンドウ マネージャーは、1 つ以上のプログラムを同じウィンドウ内に配置でき、タイリングとスタックをさまざまな方法で簡単に組み合わせることができます。
マイクロソフトウィンドウズ
Microsoft Windows はWindows 2.0以降、統合されたスタッキング ウィンドウ マネージャーを提供してきました。Windows Vistaでは、ハードウェア アクセラレーションによるオプションの代替手段として、合成デスクトップ ウィンドウ マネージャー(dwm.exe) が導入されました。Windows では、 GDI がカーネルの一部であるため[13]、ウィンドウ マネージャーの役割はカーネルのグラフィカル サブシステムと密接に結合しており、ほとんど置き換えることはできませんが、サードパーティのユーティリティを使用して、そのようなシステム上でタイリング ウィンドウ マネージャーをシミュレートすることはできます。Windows 8以降、Direct3Dベースのデスクトップ ウィンドウ マネージャーは無効にできなくなりました[14] 。再起動するには、Ctrl + Shift + Win + B のホットキーの組み合わせを使用する必要があります。[15]
Windows エクスプローラー(explorer.exe) は、タスクバーやファイル マネージャー、およびウィンドウ マネージャーの多くの機能を提供するために、最新の Windows システムのシェルとしてデフォルトで使用されます。Windows の側面は、提供されている構成ユーティリティ、 Windows レジストリの変更、またはWindowBlindsやResource Hackerなどのサード パーティ製ツールによって変更できます。
完全な X Windows サーバーは、Unixoid の世界から移植されたウィンドウ マネージャーの使用を許可し、マルチウィンドウモードでもCygwin/X を介して Microsoft Windows に提供できます(他の X Window System 実装によっても)。これにより、たとえば、X Window System クライアント プログラムを同じマシン上の同じ Cygwin 環境で実行したり、ネットワーク経由で Linux、BSD Unix などのシステムで実行したりすることが簡単に可能になり、Microsoft Windows 環境上で GUI のみを表示して使用できるようになります。
MicrosoftとX Window Systemは、似たような概念を説明するのに異なる用語を使用していることに注意してください。たとえば、ウィンドウマネージャという用語は、統合されており、置き換えることができず、シェルとは異なるため、Microsoftではほとんど言及されていません。 [説明が必要] [ 16] Windowsシェルは、他のグラフィカルユーザーインターフェイスシステムの デスクトップ環境の概念に類似しています。
Chrome OS について
2021年以降、ChromeOSにはAshと呼ばれる独自のウィンドウマネージャーが搭載されています。[17] Chromiumとashは共通のコードベースを共有しています。[17]以前は、google-chrome --open-ash互換性のあるシステムであればどれでも使用して実行できました。
種類
ウィンドウ マネージャーは、ウィンドウの描画方法と更新方法を記述する 3 つ以上のクラスに分割されることがよくあります。
合成ウィンドウマネージャ
合成ウィンドウ マネージャーを使用すると、すべてのウィンドウを個別に作成して描画し、それらをまとめてさまざまな 2D および 3D 環境で表示できます。最も高度な合成ウィンドウ マネージャーでは、インターフェイスの外観と操作感に非常に多様性を持たせることができ、高度な 2D および 3D 視覚効果を実現できます。
スタックウィンドウマネージャー
重なり合うウィンドウを持ち、合成ウィンドウ マネージャーではないすべてのウィンドウ マネージャーは、スタッキングウィンドウ マネージャーです。ただし、すべてが同じ方法を使用するとは限りません。スタッキング ウィンドウ マネージャーでは、最初に背景ウィンドウを描画することによってウィンドウの重なりを可能にします。これは、ペインター アルゴリズムと呼ばれます。変更により、すべてのウィンドウを再度スタックまたは再描画する必要がある場合があります。これには通常、すべてのウィンドウの再描画が含まれます。ただし、背景ウィンドウを前面に移動するには、通常、1 つのウィンドウを再描画するだけで済みます。これは、背景ウィンドウに他のウィンドウの一部が重ねて描画されている場合があり、カバーされている領域が実質的に消去されるためです。
タイルウィンドウマネージャ
タイリング ウィンドウ マネージャーは、すべてのウィンドウを横に並べたり上下に配置して画面上に描画するため、ウィンドウが他のウィンドウを覆うことはありません。Microsoft Windows 1.0 ではタイリングが使用されており、i3、awesome、dwmなど、X用のさまざまなタイリング ウィンドウ マネージャーが利用可能です。
ダイナミックウィンドウマネージャー
ダイナミックウィンドウマネージャーは、タイリング ウィンドウ レイアウトとフローティング ウィンドウ レイアウトを動的に切り替えることができます。X にはさまざまなダイナミック ウィンドウ マネージャーが用意されています。
ウィンドウマネージャの機能と特徴
- 国境
- 境界線は、一部のウィンドウ マネージャーによって提供されるウィンドウ装飾コンポーネントで、アクティブ ウィンドウの周囲に表示されます。一部のウィンドウ マネージャーでは、背景ウィンドウの周囲に境界線が表示されることもあります。
- コンテキストメニュー
- 一部のウィンドウ マネージャーでは、デスクトップ コンポーネントに代替クリック イベントが適用されたときに表示されるコンテキスト メニューが提供されます。

- フォーカススティーリング
- フォーカス スティーリングは、一部のウィンドウ マネージャーが提供する機能です。この機能により、フォーカスされていないアプリケーションが突然フォーカスを取得し、以前フォーカスされていたアプリケーションに対するユーザー入力を盗むことができます。
- アイコン化
- アイコン化機能を使用すると、実行中のアプリケーションをデスクトップアイコンまたはタスクパネル アイコンに最小化できます。
- 結合されたウィンドウ
- 一部のウィンドウ マネージャーでは、ユーザーがアプリケーション ウィンドウ フレームを結合できる結合ウィンドウ機能が提供されています。
- キーボードショートカット
- 一部のウィンドウ マネージャーでは、キーボードでマウスの機能を再現できるキーボード同等機能を提供しています。
- メニューパネル
- メニュー パネルは、メニューを使用してプログラムを起動する機能を提供する、一部のウィンドウ マネージャーのコンポーネントです。メニュー パネルはメニューバーに似ていますが、水平または垂直のバーではなく、フローティングパネルとして表示されます。
- メニュー パネルには、スタート ボタン、タスク パネル、システム トレイなどの追加機能が含まれる場合があります。
- マウスフォーカス
- マウスフォーカスモデルは、ポインティング デバイスがウィンドウ マネージャー内の入力フォーカスにどのように影響するかを決定します。フォーカス モデルは、ポインターが画面上で移動されるときに、入力を受け取るために現在選択されているグラフィカル ユーザー インターフェイスのコンポーネントを決定します。
- マウスワーピング
- マウスワープは、現在のアプリケーションがアクティブになったときにポインターをそのアプリケーションの中央に配置する機能です。
- 複数のデスクトップ
- ウィンドウ マネージャーは、複数のデスクトップ機能を提供する場合があります。これにより、複数のルート ウィンドウデスクトップを切り替えることができます。これにより、アプリケーションを異なるデスクトップで実行できるため、ルート ウィンドウが乱雑になるのを防ぐことができます。
- ページャ
- 一部のウィンドウ マネージャーには、複数のデスクトップを切り替える機能を提供するページャーツールが用意されています。ページャーは、画面上のウィンドウとして、またはタスクバーやタスクパネル内のガジェットとして表示されます。
- プラグイン
- 一部のウィンドウ マネージャーはモジュール構造になっており、プラグインモジュールによって必要に応じて機能を提供できます。
- ロールアップ
- ロールアップ機能を使用すると、ウィンドウをデスクトップ上のタイトルバーとして表示できます。
- ルートメニュー
- 一部のウィンドウ マネージャーでは、ルート ウィンドウまたはデスクトップの背景をタッチしたときに表示されるルート メニューが提供されます。
- タブ付きウィンドウ
- 一部のウィンドウ マネージャーは、共通のフレームにアプリケーションをグループ化するタブ付きウィンドウ機能を提供します。
- タスクの切り替え
- ウィンドウ マネージャーは、ユーザーが現在フォーカスされているアプリケーションを変更できるようにする、次のようなさまざまなタスク切り替え機能を提供します。
- ポインティングデバイスを使用してマウスのフォーカスを変更する
- キーボードタスク切り替え機能(例えば、Alt + Tab キーを押す)
- タスクバーまたはタスクパネルのタスクをクリックする
- タスクバー
- 一部のウィンドウ マネージャーには、実行中のアプリケーションを表示するタスクバーが用意されています。タスク バーには、最小化されているアプリケーションも含め、実行中のすべてのアプリケーションが表示され、それらの間でフォーカスを切り替える機能が提供される場合があります。一部のウィンドウ マネージャーでは、タスク バーがメニュー バーに組み込まれている場合があります。
- タスクパネル
- タスク パネルはタスク バーに似ていますが、水平または垂直のバーではなく、フローティングパネルとして表示されます。
- スタートボタン
- スタート ボタンは、起動できるプログラムのメニューを提供するデスクトップ ウィジェットです。スタート ボタンは通常、画面下部のメニュー バーに配置されます。
- 通知エリア
- 通知領域は、デスクトップ ウィンドウを持たないシステムおよびプログラム機能のアイコンを表示するために使用されます。主に、新しいメール メッセージの到着などのステータス情報や通知を示すアイコンが含まれます。一部のシステムでは、通知領域に時計も表示されます。
- タイトルバー
- タイトルバーは、一部のウィンドウ マネージャーが各ウィンドウの上部に提供するウィンドウ装飾コンポーネントです。タイトルバーは通常、アプリケーションの名前や開いているドキュメントの名前を表示するために使用され、アプリケーション ウィンドウを最小化、最大化、閉じる、またはロールアップするためのタイトル バー ボタンが提供されることもあります。
- タイトルバーボタン
- タイトル バー ボタンは、一部のウィンドウ マネージャーのタイトル バーに含まれており、アプリケーション ウィンドウを最小化、最大化、ロールアップ、または閉じる機能を提供します。一部のウィンドウ マネージャーでは、タイトル バーボタンがタイトル バーではなく、タスク バーまたはタスク パネルに表示される場合があります。
- 仮想デスクトップ
- 仮想デスクトップ(スクロールデスクトップとも呼ばれる)は、一部のウィンドウマネージャが提供する機能で、デスクトップを実際の画面よりも大きく表示することができます。
Windowsナビゲーション
アクティブ ウィンドウとは、現在のウィンドウ マネージャーで現在フォーカスされているウィンドウのことです。ウィンドウ マネージャーによって、現在アクティブなウィンドウの表示方法や、ユーザーがウィンドウを切り替える方法が異なります。たとえば、Microsoft Windows では、メモ帳とMicrosoft ペイントの両方が開いている場合、メモ帳のウィンドウをクリックすると、そのウィンドウがアクティブになります。Windows では、アクティブ ウィンドウは、異なる色のタイトル バーで示されます。ただし、クリックがアクティブ ウィンドウを選択する唯一の方法ではありません。一部のウィンドウ マネージャー ( FVWMなど) では、マウス ポインターの下のウィンドウがアクティブになります。つまり、マウスを動かすだけでウィンドウを切り替えることができ、クリックは必要ありません。
ウィンドウ マネージャーは、マウスの代わりにキーボードを使用してアクティブ ウィンドウを選択する方法を提供することがよくあります。一般的なキーの組み合わせの 1 つは、Windows とKDEで使用されるAlt+Tab (デフォルトですが、ユーザーが構成できます) です。もう 1 つは、Macintosh で使用されるapple キー- チルダです。適切なキーの組み合わせを押すと、通常は表示されているすべてのウィンドウが何らかの順序で切り替わりますが、他のアクションも可能です。
すべてではありませんが、多くのウィンドウ マネージャーは、画面上の各ウィンドウに対して、なんらかの視覚的なコントロール (多くの場合、ボタン) を含む画面領域を提供します。各ボタンには通常、ウィンドウのタイトルが含まれ、アイコンが含まれる場合もあります。画面のこの領域では、通常、どのウィンドウがアクティブであるかを視覚的に示します。たとえば、アクティブ ウィンドウのボタンは「押し込まれた」状態で表示されます。また、通常は、適切なボタンをクリックしてアクティブ ウィンドウを切り替えることもできます。Microsoft Windows では、画面のこの領域はタスクバーと呼ばれ、 Apple Macintosh システムでは、画面のこの領域はドックと呼ばれます。
アクティブ ウィンドウは、画面上の他のすべてのウィンドウよりも常に前面にあるとは限りません。アクティブ ウィンドウとは、単にキーボードで入力されたキーが送信されるウィンドウのことで、他のウィンドウによって視覚的に隠されている場合があります。これは、アクティブ ウィンドウを変更するためにクリックを必要としないウィンドウ マネージャーで特に当てはまります。たとえば、 FVWM は、マウス カーソルの下のウィンドウをアクティブにしますが、そのZ オーダー(背景から前面に向かって測定されたウィンドウの表示順序) は変更しません。代わりに、ウィンドウを前面に移動するには、ウィンドウの境界をクリックする必要があります。Microsoft Windows などのクリックしてフォーカスするウィンドウ マネージャーでは、アクティブ ウィンドウが隠される場合もありますが、これはあまり一般的ではありません。
参照
参考文献
- ^ 「ウィンドウマネージャー」。Dictionary.com。2016年3月11日時点のオリジナルよりアーカイブ。
- ^ 「PC Magazine 百科事典からのウィンドウ マネージャーの定義」www.pcmag.com。
- ^ Shultz, Greg (2006 年 5 月 24 日). 「Windows XP のタスクバーのグループ化機能の切り替え」. TechRepublic . 2022 年1 月 7 日閲覧。
- ^ Kaufman, Lori (2012-02-10). 「Linux Mint 12 でウィンドウをタイトルバーにロールアップする方法」How-To Geek . 2022 年1 月 7 日閲覧。
- ^ カーク、デビッド(2003年10月12日)。「XPとVista:ウィンドウを並べて表示、重ねて表示、または最小化」。テックレシピ:技術チュートリアル満載のクックブック。 2022年1月7日閲覧。
- ^ Newell, Gary (2020-07-24). 「Windows 10 で Linux スタイルの仮想ワークスペースを使用する方法」. Lifewire . 2022 年1 月 7 日閲覧。
- ^ ラインバック、ネイサン。「ゼロックス アルト」。toastytech.com。
- ^ ラインバック、ネイサン。「ゼロックススター」。toastytech.com。
- ^ ジョン・シラクーサ (2005 年 4 月 28 日)。 「Mac OS X 10.4: Quartz」。アルステクニカ。
- ^ Lineback, Nathan. 「GEM 1.1 スクリーンショット」。Toastytech.com。2019年12月25日時点のオリジナルよりアーカイブ。2016年8月1日閲覧。
- ^ Lineback, Nathan. 「GEM 2.0 スクリーンショット」。Toastytech.com。2019年8月22日時点のオリジナルよりアーカイブ。2016年8月1日閲覧。
- ^ 「OS/2 History」。1998年2月13日時点のオリジナルよりアーカイブ。
- ^ Pleas, Keith (1996 年 4 月). 「Windows NT 4.0」. Windows IT Pro . 2007 年 3 月 10 日時点のオリジナルよりアーカイブ。 2019 年5 月 17 日閲覧。
- ^ 「デスクトップ ウィンドウ マネージャーは常にオン - Win32 アプリ」。docs.microsoft.com。
- ^ Windows 10 の黒い画面または空白画面のトラブルシューティング
- ^ 「はい、新しいデスクトップ ウィンドウ マネージャーがあります。しかし、いいえ、私はあなたと同じくらいそれについて知りません」。The Old New Thing。2009年 10 月 26 日。2021年 10 月 6 日閲覧。
- ^ ab "ash - chromium/src - Git at Google". chromium.googlesource.com . 2021年10月6日閲覧。
