ディスプレイサーバー、ディスプレイマネージャー、ウィンドウマネージャーの違いは何ですか?
Linuxを使用しているなら、ディスプレイサーバー、ディスプレイマネージャー、ウィンドウマネージャーのことを聞いたことがあるでしょう。しかし、それらは何であり、どのように連携して機能するのでしょうか?
Linuxの魅力的な点の1つは、さまざまなシステムコンポーネントを見ることができることです。Linuxシステムの最も重要なコンポーネントの1つはデスクトップ環境です。それは、ログイン、アプリの起動、パネルのようなウィジェットの表示など、いくつかの機能を提供することで、コンピュータを最大限に活用することを可能にします。
したがって、これは複雑なソフトウェアです。
ここでは、デスクトップ環境の最も重要な3つの要素である表示サーバー、ウィンドウマネージャー、そしてログインマネージャーについて説明することで、いくつかの複雑さを解消します。
1. ディスプレイサーバー
ディスプレイサーバーはデスクトップ環境の基盤に位置しています。ディスプレイサーバーの主な仕事は、低レベルの描画機能を処理することであり、これは直接画面に描画することを意味します。他のグラフィカルプログラムは画面に直接描画するのではなく、描画要求をディスプレイサーバーに送信し、ディスプレイサーバーがそれのために画面に描画します。
簡単に言うと、ディスプレイサーバーはアプリケーションにピクセルアクセスを提供します。したがって、ピクセルアクセスを必要とするすべてのアプリケーションはディスプレイサーバーと通信します。例えば、アプリがウィンドウを作成したい場合、ディスプレイサーバーにそのウィンドウを作成するよう依頼します。もう一つの例として、ピクセルアクセスが必要なアプリケーションは画面録画ソフトで、これらはディスプレイサーバーが提供するAPIを通じて画面データを取得します。
表示サーバーに依存するアプリケーションは、クライアントと呼ばれます。表示サーバーは、そのクライアントとハードウェアデバイスとの通信を管理する責任があります。キーボードやマウスのイベントの信号をクライアントに送信します。
ディスプレイサーバーはマウスポインタを描画し、その位置を制御する責任もあります。
X11とWaylandは、ディスプレイサーバーの2つの主要な選択肢です。X11はWaylandよりずっと古いです。実際、WaylandはX11の後継として開発されました。しかし、X11はまだ多くのLinuxディストロで広く使われています。
上記の概念は、X11とWaylandの両方に適用されます。しかし、クライアントとの通信方法においては、両者の間に大きな違いがあります。WaylandクライアントはX11クライアントよりも孤立しています。そのため、WaylandはX11よりも安全性が高いと考えられています。
Waylandに切り替えることを考えている場合、他にも考慮すべき違いがいくつかありますが、ほとんどの場合、これらの違いについて心配する必要はありません。それは、アプリ開発者がX11とWaylandの両方をサポートする高レベルのツールキット(Gtk+やQtなど)を使用しているからです。また、GNOMEとKDEはX11とWaylandの両方で動作します。
ディスプレイサーバーとは何か、そしてそれが何をするのかを理解した後、次のコンポーネントに進みましょう。
2. ウィンドウマネージャ
ウィンドウマネージャの機能(その名が示す通り)は、オープンウィンドウを管理することです。ウィンドウ管理には、ウィンドウのサイズや位置の制御が含まれます(あなたやアプリケーションからの要求に応じて)。したがって、ウィンドウをドラッグしたりサイズを変更したりすると、ウィンドウマネージャはあなたの要求を処理する責任があります。
ウィンドウをドラッグするには、タイトルバーをクリックするだけであることを覚えておいてください。一方、ウィンドウをサイズ変更するには、境界をクリックしてドラッグします。これにより、ウィンドウマネージャーの次の機能であるウィンドウ周りのデコレーション(タイトルバーと境界はウィンドウのデコレーションと呼ばれます)に移ります。
あなたはおそらく、なぜディスプレイサーバーがウィンドウ管理を行わないのかと疑問に思っているでしょう?実際には、ディスプレイサーバーはウィンドウ管理を行っています。ウィンドウマネージャーは、自分の仕事をディスプレイサーバーとコミュニケーションすることで行っています。ウィンドウを制御し、その装飾を描画するにはピクセルへのアクセスが必要なため、ディスプレイサーバーと話す必要があります。つまり、ウィンドウマネージャーはディスプレイサーバーに指示を出し、ディスプレイサーバーが実際の操作を実行するのです。
ウィンドウマネージャーが持つことのできるもう一つの重要な機能はウィンドウ合成です。この機能がある場合、それはウィンドウコンポジタと呼ばれます。これにより、アプリケーションは透明度、ぼかし、ウィンドウの影の描画、移動/最小化/最大化時のウィンドウのアニメーション化、その他の視覚効果など、いくつかのクールなことができるようになります。
ウィンドウマネージャーの例
利用可能なオプションはたくさんあります(ディスプレイサーバーでは2つのオプションしかありませんが)。最も人気のあるものの中には:
- Kwin(KDEと一緒に提供されます)。
- Mutter(GNOMEに付属しています)。
- Xfwm(Xfceのウィンドウマネージャ)。
- マフィン(シナモンデスクトップ用のマターのフォーク)。
他にも多くの選択肢があり、一部はデスクトップ環境の一部として提供され、他は単独のパッケージとして開発されています。フルデスクトップ環境の代わりにウィンドウマネージャだけを使用することもできます。
いくつかのデスクトップ環境では、サードパーティのウィンドウマネージャーを使用することができます。例えば、Xfceを使ってkwinを選ぶことができます。一方、GNOMEやCinnamonはサードパーティのウィンドウマネージャーをサポートしていません(例えば、Cinnamonセッションで強制的にmuffinを別のウィンドウマネージャーに置き換えようとすると、パネルが消えてしまいます)。
ウィンドウマネージャーが理解できたので、次のコンポーネントに進みましょう。
3. ログインマネージャー(またはディスプレイマネージャー)
ログインマネージャーは、ユーザーの一覧を表示し、1つを選択してログインできる最初のグラフィカルプログラムです。また、希望するデスクトップ環境を選択するオプションも提供しています。これにより、ログアウトして別のデスクトップ環境を選択し、再度ログインすることで、デスクトップ環境を簡単に切り替えることができます。これが、ログインマネージャーがディスプレイマネージャーと呼ばれる理由です(ディスプレイサーバーと混同しないでください)。
ログインマネージャーは、/usr/share/xsessionsディレクトリを調べることで、現在インストールされているデスクトップ環境を特定します。このディレクトリにはいくつかの.desktopファイルが含まれています。各ファイルは、現在インストールされているデスクトップ環境の1つに対応しています。
ログインマネージャーも多く存在します。最も人気のあるものは次のとおりです:
- Gdm(GNOMEディスプレイマネージャ).
- Kdm(KDEディスプレイマネージャ).
- lightdm(多くのデスクトップ環境およびLinuxディストリビューションは、非常にカスタマイズ可能で柔軟性があるため、lightdmを採用しています)。
前述の三つのコンポーネントは、どのデスクトップ環境においても最も重要な要素です。つまり、機能的なグラフィカル環境を持つためには、少なくともこれらのパッケージをインストールしておく必要があります。ただし、完全なデスクトップ環境には、より特定の役割を持つさまざまな他のパッケージが付属しています。
デスクトップ環境のその他の一般的なコンポーネント
上記のコンポーネントに加えて、あなたが使用しているデスクトップ環境にはおそらく以下のパッケージが含まれているでしょう。
- 壁紙マネージャー:デスクトップの壁紙を設定する責任があります。
- デスクトップ用のファイルマネージャーインスタンス:デスクトップのアイコンを表示する役割を担い、これはあなたのシステムにインストールされているファイルマネージャーの一部として提供されます。たとえば、nautilusファイルマネージャーには「nautilus_desktop」があり、nemoには「nemo_desktop」があります。
- スクリーンロッカー:しばらく使用しないとコンピューターをロックします。
- ネットワークマネージャー: ネットワークマネージャーは、インターネット接続を管理し、Wi-Fiと有線接続の間で自動的に切り替えるものです。このプログラム自体はデスクトップに視覚的な要素を追加しませんが、デスクトップ環境がパネルやその他の場所からアクセスできるGUIを実装している必要があります。
- 通知デーモン: アプリケーションが通知を表示したい場合、通知デーモンに送信して表示させます。
- ポリシーキット認証エージェント: これはsudoのGUIのようなものです。このアプリは、ソフトウェアのインストールや更新の適用など、root権限を必要とする操作を行うときにポップアップします。
- そして多くの他の人々。
壁紙の設定とデスクトップアイコンの表示は、2つの異なるアプリケーションによって処理されることに注意してください。また、完全なデスクトップ環境には、この記事の範囲を超えた多くの他のパッケージが含まれています。
あなたのシステムの内部を知ろう
Linuxユーザーにとって、自分のデスクトップ環境の構成要素を知ることは、トラブルシューティングや問題解決に不可欠です。この知識は、自分のデスクトップ環境を構築することを決めた場合にも役立ちます。


