Linux 上の Wayland とは何ですか? X との違いは何ですか?
X11 (X Window System) を使用すると、グラフィカル デスクトップ環境でウィンドウを表示および制御できます。Wayland は X11 の代替品です。より高速かつ安全になるように設計されています。それらについて知っておくべきことは次のとおりです。
ウェイランドとは何ですか?
Wayland は、数十年にわたって Linux のデフォルトのウィンドウ システムであった X11 に代わる最新の製品です。Wayland は通信プロトコルであり、X Window ディスプレイ サーバーとクライアント アプリケーション間のメッセージングを定義します。Wayland プロジェクトは、アプリケーションがプロトコルを使用できるようにするクライアント ライブラリとサーバー ライブラリを提供します。
Wayland プロジェクトは、 2008 年にRed Hat開発者によって開始されました。
Xの多くの名前
X Window System は、 1984 年にマサチューセッツ工科大学によって Unix 向けに初めてリリースされたウィンドウ システムです。アプリケーションは、ウィンドウ システムが提供する機能を基盤にしてユーザー インターフェイスを生成できます。
1987 年までに X Window System はバージョン 11 に達し、X11 として知られるようになりました。現在はX.Org Foundationによって管理されています。1987 年以来、多くの小規模リリースが行われていますが、まだバージョン 11 です。この記事の執筆時点では、現在の安定バージョンはX11R7.7です。
名前の「X」はローマ数字の 10 を意味するものではなく、「Xtra」や「Xtended」などを意味するものでもありません。以前のウィンドウ システムは「Windows」を表す「W」と呼ばれていましたが、新しいプロジェクトを開始するときに、単純にアルファベットの次の文字に移動しました。
X Window System は、「X」、「X11」、「Xorg」、「X Windows」、「X Window System」などと呼ばれることがあります。
X11 の仕組み
X Window System は、マウスとの対話、ウィンドウの描画と移動など、低レベルのイベントとプリミティブを処理します。アプリケーションはビジュアルとインターフェイスのデザインを処理します。ウィンドウの外観、ウィンドウにどのようなボタンがあるか、およびそれらのボタンがどこに配置されるかは、アプリケーション プログラマが選択します。X Window System は、結果のデザインを画面に描画します。
X11 は、動作する X Window System のさまざまなコンポーネント間で受け渡す必要がある通信の定義を提供します。X 対応アプリケーションがウィンドウやインターフェイス要素を描画するために使用するコードはアプリケーション内にないため、この通信が必要です。その作業は X サーバーとウィンドウ マネージャーの間で共有されます。
アプリケーションは X サーバーのクライアントです。ウィンドウ マネージャーは特別なタイプのクライアントです。X サーバーは、リソースの管理、描画リクエストの実行、キーの押下やマウスのクリックなどのイベントの適切なアプリケーションへのマーシャリングを担当します。
また、ウィンドウ マネージャーとアプリケーション間の通信の仲介者としても機能し、両者の間でメッセージのやりとりを仲介します。ウィンドウ マネージャーは、アプリケーションが開いているウィンドウのリスト、ウィンドウの画面上の場所、サイズ、重なっているかどうかなどのリストを保持します。
合成ウィンドウ マネージャーは、各ウィンドウのオフスクリーン バッファーを維持します。これらのバッファーを、最上位のウィンドウ (デスクトップ全体を表す) を表す 1 つのイメージに合成し、それが画面に書き込まれます。
GNOMEや KDEを含むすべての最新のグラフィカル デスクトップ環境は、複合ウィンドウ マネージャーを使用します。
Wayland の仕組み
Wayland は X11 の問題を解決することを目的としています。X11 アーキテクチャでは多くのメッセージングが必要です。X サーバーは、クライアントとウィンドウ マネージャーの間に位置します。また、すべてのものと、カーネルを介してグラフィックス ハードウェアとの間に位置します。メッセージングの量により、遅延が発生したり、視覚的に遅れたり、不安定になったりする可能性があります。
大規模なコードベースもあります。サーバー アプリケーション、ウィンドウ マネージャー アプリケーション、およびクライアントが使用する X11 ライブラリがあります。コードベースが大きくなるほど(そして古くなればなるほど)、メンテナンスが難しくなり、レガシーコードでの苦労がさらに大きくなります。
Wayland はアーキテクチャを変更することでコード ベースを最新化および合理化し、パフォーマンス上のメリットとセキュリティの向上を実現しました。
実際、サーバーとウィンドウ マネージャーを 1 つのアプリケーションに統合しました。現在カーネルによって実行されている機能を実行するコードはすべて削除されました。作業を複製する代わりに、カーネルの機能を利用しました。
Wayland を使用すると、コンポジターとクライアント アプリケーションは直接通信します。コンポジターは、どのウィンドウがデスクトップ上のどこにあるか、またそのサイズと状態についての内部マッピングを維持します。コンポジターは、キーボード、マウス、およびウィンドウ変更イベントを仲介し、それらのウィンドウを所有するアプリケーションにイベントを送信します。
アプリケーションはそれに応じてユーザー インターフェイスを更新します。主な違いは、レンダリングがリンクされた Wayland ライブラリを使用してアプリケーション自体の内部で実行されることです。
アプリケーションは、ウィンドウを保持するために使用されるバッファを更新するか、新しいバッファを作成して古いバッファを破棄します。次に、クライアント アプリケーションはコンポジタに通知を送信し、ウィンドウ マッピングを更新し、新しいまたは更新されたビデオ バッファを使用するように指示します。
この簡素化されたアーキテクチャと最新のコード設計により、パフォーマンスが向上し、特にウィンドウのサイズ変更とドラッグがスムーズかつ滑らかに表示されます。
Wayland のアプリケーションへの導入の遅れ
Wayland は、Debian 10 以降、Fedora 34 以降、Ubuntu 18.04 以降、および Arch Linux などの他のディストリビューションのデフォルトのウィンドウ システムです。それにもかかわらず、多くの場合、Wayland は X11 アプリケーションを実行します。
XWayland と呼ばれる互換性レイヤーがあり、X11 アプリケーションを Wayland で実行できるようになります。X11 アプリケーションの大部分は変更されておらず、Wayland に移植されていないため、これが必要でした。
GNOME などの Wayland コンポジターを提供するデスクトップ環境では、GNOME テキスト エディターやマップ、ファイル、カレンダーなどの公式アプリケーションはすべて Wayland ネイティブ アプリケーションです。しかし、X11 アプリケーションの大部分は依然として手つかずのネイティブ X11 アプリケーションです。
X11 アプリケーションの作成者の中には、自分のアプリケーションが XWayland で正常に動作し、Wayland アプリケーションに作り直す必要がなくなることを期待している人もいるでしょう。Wayland への取り込みと移行が長くて遅いとしても驚かないでください。新しいアプリケーションは Wayland を採用しますが、既存の X11 アプリケーションの大部分は現状のままで、XWayland に希望を託しています。
Wayland または X11 を使用していますか?
主要な Linux ディストリビューションのいずれかを使用している場合は、すでに Wayland を使用している可能性があります。以下のコマンドを発行することで確認できます。
echo $XDG_SESSION_TYPE
Wayland を使用するシステムでは、出力は次のようになります。
X Window System を実行しているシステムでは、次のように表示されます。
まれに、XDG_SESSION_TYPE
環境変数が設定されていないことがあります。その場合は、代わりに次のコマンドを使用できます。
loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value
内側のネストされたloginctl
コマンドは、このshow-user
コマンドを使用して、指定されたユーザーのプロパティを表示します。このコマンドにより、現在のユーザーの名前がwhoami
得られます。(property)オプションは出力を「表示」設定に関する情報に制限し、値のみを返すオプションを使用します。からの応答に「Display=」文字列を含めたくありません。これらすべてによりセッション ID が得られます。-p
loginctl
--value
loginctl
セッション ID をアウターに渡しloginctl
、show-session
コマンドを使用してセッションの属性を表示します。(property) オプションを使用して-p
出力をセッション タイプに関する情報に制限し、この--value
オプションを使用して「Type=」ラベルなしで値を表示します。
Wayland を使用しているコンピューターでは、次のように表示されます。
X Window System を実行している場合は、次のように表示されます。
Wayland と X11 のどちらを使用するべきですか?
問題がない限り、すでに使用しているものを使い続けることもできます。ただし、不安定になったり、画面の更新がぎくしゃくしたりしていることに気付いた場合は、使用していない方に移行してみてください。
GNOME で他のシステムを切り替えて試したい場合は、ログイン画面でユーザー名をクリックし、ディスプレイの右下隅にある歯車のアイコンをクリックします。
メニューにはさまざまなバージョンの GNOME が表示されます。「Xorg」と記載されているオプションは X Window System を使用し、オプションは Wayland を使用しません。
コメントを残す