ウィンドウマネージャー

グラフィカルユーザーインターフェースのレイヤー:Xでは、ウィンドウマネージャーディスプレイサーバーは2つの異なるプログラムですが、Waylandでは、両方の機能はWaylandコンポジターによって処理されます
ウィンドウの典型的な要素。ウィンドウの装飾はウィンドウマネージャまたはクライアントによって描画されます。コンテンツの描画はクライアントが行います。
X11 では、ウィンドウ マネージャーが実行されていない場合、ほとんどのウィンドウでウィンドウ装飾が表示されません。

ウィンドウマネージャは、グラフィカルユーザーインターフェース(GUI)ウィンドウシステム内でウィンドウの配置と外観を制御するシステムソフトウェアです。[ 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の、商業的に成功した初期の例の一つでした。その後継である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 OS の低レベルライブラリの 1 つで、Amiga システムROMに存在)と呼ばれる合成ウィンドウマネージャの初期の例が含まれていました。Intuition は、どのウィンドウまたはその一部が覆われているか、どのウィンドウがフォアグラウンドにあり完全に表示されているかを認識し、リフレッシュが必要な画面部分のみを描画することができました。さらに、Intuition は合成をサポートしていました。アプリケーションは最初に、現在の表示領域外のメモリ領域をビットマップとして使用するために要求できます。次に、Amiga のウィンドウシステムは、システムのハードウェアブリッタを使用して一連のビットブリットを実行し、これらのアプリケーションのビットマップをボタンやスライダとともにディスプレイメモリに合成します。これらのアプリケーションでビットマップを再描画する必要はありません。

1988年、プレゼンテーションマネージャはOS/2のデフォルトシェルとなった。OS/2の最初のバージョンでは、コマンドラインインターフェース(CLI)のみを使用していた。IBMとMicrosoftOS/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で初めて導入されたオブジェクト指向のWorkplace Shellに置き換えた。 [ 12 ]

Xウィンドウマネージャー

Xウィンドウシステムを使用するシステムでは、ウィンドウマネージャーとウィンドウシステムは明確に区別されています。厳密に言えば、Xウィンドウマネージャーはビデオハードウェア、マウス、またはキーボードと直接やり取りしません。 それはディスプレイサーバーの役割です

デスクトップ環境は通常、デフォルトのウィンドウマネージャを統合しています。例えば、GNOME 2はMetacityを使用し、KDE ​​Plasma WorkspacesはKWinを使用します。しかし、X Window Systemのモジュール設計により、ユーザーは異なるウィンドウマネージャに切り替えることができます。例えば、 3D効果が必要な場合はCompiz(3D合成マネージャ)を使用できますが、Sawfishawesomeは厳密なウィンドウ制御を提供します。異なるウィンドウマネージャの一部のコンポーネントは、組み合わせて使用​​することもできます。例えば、KWinウィンドウデコレーションは、 GNOMEのデスクトップおよびドックコンポーネントと併用できます。

X ウィンドウ マネージャーにはアプリケーションの親の再設定機能もあります。つまり、最初はすべてのアプリケーションがルート ウィンドウ(基本的には画面全体) に採用されますが、ルート ウィンドウ内で起動されたアプリケーションを別のウィンドウに採用 (つまり、他のウィンドウ内に配置) することができます。X ウィンドウ システムのウィンドウ マネージャーは、ルート ウィンドウからアプリケーションを採用し、それらの親を再設定してウィンドウの装飾 (タイトル バーの追加など) を適用します。親の再設定は、あるウィンドウの内容を別のウィンドウに追加するためにも使用できます。たとえば、Flash Playerアプリケーションをブラウザー ウィンドウに親として再設定すると、ユーザーにはそのプログラムの一部であるように見せることができます。したがって、親の再設定を行うウィンドウ マネージャーを使用すると、1 つ以上のプログラムを同じウィンドウ内に配置したり、タイリングスタックをさまざまな方法で簡単に組み合わせたりすることができます。

Microsoft Windows

Microsoft WindowsはWindows 2.0以降、統合スタッキングウィンドウマネージャーを提供してきました。Windows Vistaでは、ハードウェアアクセラレーションによるオプションの代替として、コンポジティングデスクトップウィンドウマネージャー(dwm.exe)が導入されました。Windowsでは、 GDIがカーネルの一部であるため、[ 13 ]ウィンドウマネージャーの役​​割はカーネルのグラフィカルサブシステムと密接に結合されており、大部分は代替不可能ですが、サードパーティ製のユーティリティを使用して、そのようなシステム上でタイリングウィンドウマネージャーをシミュレートすることができます。Windowsのウィンドウ管理は、WindowBlindsResource HackerSmartWindowsなどのサードパーティ製ツールで強化することもできます。Windows 8以降、Direct3Dベースのデスクトップウィンドウマネージャーは無効にできなくなりました。[ 14 ] Ctrl+Shift+Win+Bのホットキーの組み合わせでのみ再起動できます。[ 15 ]

Windows エクスプローラー(explorer.exe) は、タスクバーやファイル マネージャー、およびウィンドウ マネージャーの多くの機能を提供するために、最新の Windows システムのシェルとしてデフォルトで使用されます。Windows の側面は、提供されている構成ユーティリティ、 Windows レジストリの変更、またはWindowBlindsResource Hackerなどのサードパーティ ツールによって変更できます。

Unix系から移植されたウィンドウマネージャを利用できる完全なX Windows Serverは、Cygwin/X (マルチウィンドウモードを含む)を介してMicrosoft Windowsにも提供できます(他のX Window System実装でも利用可能です)。これにより、例えば、X Window Systemクライアントプログラムを同一マシン上の同一Cygwin環境、あるいはネットワーク経由でLinux、BSD Unixなどのシステム上で実行し、Microsoft Windows環境上でGUIのみを表示・使用することが可能になります。

MicrosoftとX Window Systemは、類似の概念を説明する際に異なる用語を使用していることに注意してください。例えば、 Microsoftはウィンドウマネージャという用語をほとんど使用していません。これは、ウィンドウマネージャが統合されており、置き換え不可能であり、シェルとは異なるためです。 [ 16 ] Windowsシェルは、他のグラフィカルユーザーインターフェースシステムにおける デスクトップ環境の概念に類似しています。

ChromeOS

2021年以降、ChromeOSにはAshと呼ばれる独自のウィンドウマネージャーが搭載されています。[ 17 ] ChromiumとAshは共通のコードベースを共有しています。[ 17 ]以前は、google-chrome --open-ash互換性のあるシステムであればどれでも 実行できました

種類

ウィンドウマネージャーは、ウィンドウの描画と更新方法を表す3つ以上のクラスに分けられることがよくあります

合成ウィンドウマネージャ

合成ウィンドウマネージャを使用すると、すべてのウィンドウを個別に作成および描画し、それらをまとめてさまざまな2Dおよび3D環境に表示できます。最も高度な合成ウィンドウマネージャは、インターフェースのルックアンドフィールに非常に多様な外観と、高度な2Dおよび3D視覚効果を実現します

スタッキングウィンドウマネージャー

重なり合うウィンドウを持ち、合成ウィンドウマネージャーではないすべてのウィンドウマネージャーはスタッキングウィンドウマネージャーですが、すべてが同じ方法を使用しているとは限りません。スタッキングウィンドウマネージャーは、最初に背景ウィンドウを描画することでウィンドウの重なりを可能にします。これはペインターアルゴリズムと呼ばれます。変更には、すべてのウィンドウの再スタックまたは再描画が必要になる場合があり、通常はすべてのウィンドウの再描画が含まれます。ただし、背景ウィンドウを最前面に移動するには、通常、1つのウィンドウを再描画するだけで済みます。これは、背景ウィンドウに他のウィンドウの一部が重ねて描画されている場合があり、覆われている領域が実質的に消去されるためです

タイリングウィンドウマネージャー

タイリング ウィンドウ マネージャーは、すべてのウィンドウを横並びまたは上下に配置して画面上に描画するため、どのウィンドウも他のウィンドウを覆い隠すことはありません。Microsoft Windows 1.0 ではタイリングが使用されており、i3awesomedwmなど、X用のさまざまなタイリング ウィンドウ マネージャーが利用可能です。

ダイナミックウィンドウマネージャー

ダイナミックウィンドウマネージャーは、ウィンドウのレイアウトをタイル表示とフローティング表示に動的に切り替えることができます。Xにはさまざまなダイナミックウィンドウマネージャーが利用可能です

ウィンドウマネージャーの機能と設備

自動非表示
自動非表示機能により、ポインターを画面の端から離すとメニューバーが消えます
境界線
境界線は、一部のウィンドウマネージャーが提供するウィンドウ装飾コンポーネントで、アクティブウィンドウの周囲に表示されます。一部のウィンドウマネージャーは、背景ウィンドウの周囲に境界線を表示することもあります
コンテキストメニュー
一部のウィンドウマネージャーは、デスクトップコンポーネントに代替クリックイベントが適用されたときに表示されるコンテキストメニューを提供します
コンテキストメニューの例
コンテキストメニューの例
デスクトップの壁紙
一部のウィンドウマネージャーは、ルートウィンドウに背景画像を表示するデスクトップの壁紙機能を提供しています
フォーカススティーリング
フォーカスの奪取は、一部のウィンドウマネージャが提供する機能です。フォーカスされていないアプリケーションが突然フォーカスを取得し、以前フォーカスされていたアプリケーションへのユーザー入力を奪取することができます
アイコン化
アイコン化機能により、実行中のアプリケーションをデスクトップアイコンまたはタスクパネルアイコンに最小化できます
結合ウィンドウ
一部のウィンドウマネージャーは、ユーザーがアプリケーションのウィンドウフレームを結合できる結合ウィンドウ機能を提供しています
キーボードショートカット
一部のウィンドウマネージャーは、キーボードでマウスの機能を再現できるキーボードショートカットを提供しています
メニューバー
メニューバーは、メニューからプログラムを起動する機能を提供し、スタートボタンタスクバーシステムトレイなどの追加機能が含まれる場合があります
メニューパネル
メニューパネルは、一部のウィンドウマネージャーのコンポーネントで、メニューを使用してプログラムを起動する機能を提供します。メニューパネルはメニューバーに似ていますが、水平または垂直のバーではなく、フローティングパネルとして表示されます
メニューパネルには、スタート ボタンタスク パネルシステム トレイなどの追加機能が含まれる場合があります。
マウスフォーカス
マウスフォーカスモデルは、ポインティングデバイスがウィンドウマネージャ内の入力フォーカスにどのように影響するかを決定します。フォーカスモデルは、ポインタが画面上で移動されたときに、グラフィカルユーザーインターフェースのどのコンポーネントが現在入力を受け付けるために選択されているかを決定します。
マウスワープ
マウスワープは、アクティブになったアプリケーションにポインターを中央に配置する機能です
複数のデスクトップ
ウィンドウマネージャーは複数のデスクトップ機能を提供する場合があります。これにより、複数のルートウィンドウデスクトップを切り替えることができます。アプリケーションが異なるデスクトップで実行できるため、ルートウィンドウが乱雑になるのを防ぎます
ページャー
一部のウィンドウマネージャーは、複数のデスクトップを切り替える機能を提供するページャーツールを提供しています。ページャーは、画面上のウィンドウとして、またはタスクバータスクパネル内のガジェットとして表示されます
プラグイン
一部のウィンドウマネージャーはモジュール構造になっており、プラグインモジュールが必要に応じて機能を提供できます
ロールアップ
ロールアップ機能により、ウィンドウをデスクトップ上のタイトルバーとして表示できます
ルートメニュー
一部のウィンドウマネージャーは、ルートウィンドウまたはデスクトップの背景をタッチしたときに表示されるルートメニューを提供しています
ショートカット
一部のウィンドウマネージャーは、特定のプログラムや機能にアクセスするアイコンをルートウィンドウに配置できるショートカット機能を提供しています
タブ付きウィンドウ
一部のウィンドウマネージャーは、アプリケーションを共通のフレームにグループ化するタブ付きウィンドウ機能を提供しています
タスク切り替え
ウィンドウマネージャーは、ユーザーが現在フォーカスされているアプリケーションを変更できるように、次のようなさまざまなタスク切り替え機能を提供します
タスクバー
一部のウィンドウマネージャーは、実行中のアプリケーションを表示するタスクバーを提供しています。タスクバーには、最小化されているものも含め、実行中のすべてのアプリケーションが表示され、それらの間でフォーカスを切り替える機能も提供される場合があります。一部のウィンドウマネージャーでは、タスクバーがメニューバーに組み込まれている場合があります
タスクパネル
タスクパネルはタスク バーに似ていますが、水平または垂直のバーではなく、フローティングパネルとして表示されます。
スタートボタン
スタートボタンは、起動可能なプログラムのメニューを提供するデスクトップウィジェットです。スタートボタンは通常、画面下部のメニューバーに配置されます
通知領域
通知領域は、デスクトップウィンドウを持たないシステムやプログラム機能のアイコンを表示するために使用されます。主に、ステータス情報や新着メールの到着などの通知を示すアイコンが含まれます。システムによっては、通知領域に時計が表示される場合もあります
タイトルバー
タイトルバーは、一部のウィンドウマネージャーが各ウィンドウの上部に提供するウィンドウ装飾コンポーネントです。タイトルバーは通常、アプリケーション名や開いているドキュメント名を表示するために使用され、アプリケーションウィンドウを最小化、最大化、閉じる、またはロールアップするためのタイトルバーボタンが提供される場合があります
タイトルバーボタン
タイトルバーボタンは一部のウィンドウマネージャーのタイトルバーに含まれており、アプリケーションウィンドウを最小化、最大化、ロールアップ、または閉じる機能を提供します。一部のウィンドウマネージャーでは、タイトルバーではなく、タスクバーまたはタスクパネルにタイトルバーボタンが表示される場合があります
仮想デスクトップ
仮想デスクトップ(スクロールデスクトップとも呼ばれます)は、一部のウィンドウマネージャーが提供する機能で、デスクトップを実際の画面よりも大きく表示できます

ウィンドウナビゲーション

アクティブウィンドウとは、現在のウィンドウマネージャーで現在フォーカスされているウィンドウです。ウィンドウマネージャーによって、現在アクティブなウィンドウの表示方法が異なり、ユーザーがウィンドウを切り替える方法も異なります。たとえば、Microsoft Windowsでは、メモ帳Microsoftペイントの両方が開いている場合、メモ帳ウィンドウをクリックすると、そのウィンドウがアクティブになります。Windowsでは、アクティブウィンドウはタイトルバーの色が異なることで示されます。ただし、クリックがアクティブウィンドウを選択する唯一の方法ではありません。一部のウィンドウマネージャー(FVWMなど)では、マウスポインターの下のウィンドウがアクティブになります。つまり、マウスを動かすだけでウィンドウを切り替えることができ、クリックは必要ありません

ウィンドウマネージャは、マウスの代わりにキーボードを使ってアクティブウィンドウを選択する方法を提供することがよくあります。代表的なキーの組み合わせとしては、WindowsとKDEで使用されるAlt+Tab(デフォルトですが、ユーザーによる設定が可能です)があります。また、Macintoshで使用されるAppleキーとチルダの組み合わせもあります。適切なキーの組み合わせを押すと、通常は表示されているすべてのウィンドウが一定の順序で切り替わりますが、他の操作も可能です。

すべてではありませんが、多くのウィンドウマネージャは、画面上の各ウィンドウに対して、何らかの視覚的なコントロール(多くの場合ボタン)を含む画面領域を提供します。各ボタンには通常、ウィンドウのタイトルが表示され、アイコンが表示される場合もあります。画面のこの領域は通常、アクティブなウィンドウを視覚的に示します。例えば、アクティブなウィンドウのボタンは「押し込まれた」状態になります。また、通常は該当するボタンをクリックすることで、アクティブなウィンドウを切り替えることもできます。Microsoft Windowsでは、この画面領域はタスクバーと呼ばれ、Apple Macintoshシステムでは、この画面領域はドックと呼ばれます。

アクティブウィンドウは、画面上の他のすべてのウィンドウよりも常に前面に表示されるとは限りません。アクティブウィンドウとは、単にキーボードで入力されたキーが送信されるウィンドウのことです。他のウィンドウによって視覚的に隠される場合があります。これは、アクティブウィンドウを変更するためにクリックを必要としないウィンドウマネージャで特に当てはまります。たとえば、 FVWM はマウスカーソルの下にあるウィンドウをアクティブにしますが、そのZ オーダー(背景から最前面に向かって計測されたウィンドウの表示順序) は変更しません。代わりに、ウィンドウを最前面に移動するには、ウィンドウの境界をクリックする必要があります。Microsoft Windows などのクリックしてフォーカスするウィンドウマネージャでも、アクティブウィンドウが隠される場合がありますが、これはあまり一般的ではありません。

参照

参考文献

  1. ^ 「ウィンドウマネージャー」。Dictionary.com 。2016年311日時点のオリジナルよりアーカイブ
  2. ^ 「PC Magazine 百科事典からのウィンドウ マネージャーの定義。www.pcmag.com
  3. ^ Shultz, Greg (2006年5月24日). 「Windows XPのタスクバーのグループ化機能の切り替え」 . TechRepublic . 2022年1月7日時点のオリジナルよりアーカイブ2022年1月7日閲覧。
  4. ^ Kaufman, Lori (2012年2月10日). 「Linux Mint 12でウィンドウをタイトルバーに巻き上げる方法」 How -To Geek . 2022年1月7日閲覧
  5. ^カーク、デイビッド (2003年10月12日). 「XPとVista:ウィンドウを並べて表示、重ねて表示、または最小化」 .テックレシピ:技術チュートリアル満載のクックブック. 2025年9月12日閲覧
  6. ^ Newell, Gary (2020年7月24日). 「Windows 10でLinuxスタイルの仮想ワークスペースを使用する方法」Lifewire . 2022年1月7日閲覧
  7. ^ラインバック、ネイサン. 「ゼロックスAlto」 . toastytech.com .
  8. ^ラインバック、ネイサン. 「ゼロックススター」 . toastytech.com .
  9. ^ジョン・シラクーサ (2005 年 4 月 28 日)。「Mac OS X 10.4: Quartz」アルステクニカ2017年9月1日のオリジナルからアーカイブ。
  10. ^ Lineback, Nathan. 「GEM 1.1 スクリーンショット」 . Toastytech.com . 2019年12月25日時点のオリジナルよりアーカイブ。 2016年8月1日閲覧
  11. ^ Lineback, Nathan. 「GEM 2.0 スクリーンショット」 . Toastytech.com . 2019年8月22日時点のオリジナルよりアーカイブ。 2016年8月1日閲覧
  12. ^ 「OS/2 History」 。1998年2月13日時点のオリジナルよりアーカイブ
  13. ^ Pleas, Keith (1996年4月). 「Windows NT 4.0」 . Windows IT Pro . 2007年3月10日時点のオリジナルよりアーカイブ2019年5月17日閲覧。
  14. ^ 「デスクトップ ウィンドウ マネージャーは常にオン - Win32 アプリ。docs.microsoft.com
  15. ^ Windows 10 の黒い画面または空白画面のトラブルシューティング
  16. ^ 「確かに新しいデスクトップウィンドウマネージャーはありますが、私もあなたと同じくらいしかそれについて知りません」。The Old New Thing。2009年10月26日。 2021年10月6日閲覧
  17. ^ a b「ash - chromium/src - GoogleのGit」 . chromium.googlesource.com . 2021年10月6日閲覧。