技術ノート Linux Linux 上の Wayland とは何ですか? X との違いは何ですか?

Linux 上の Wayland とは何ですか? X との違いは何ですか?

重要なポイント

Wayland は、Linux ディストリビューションの代替ウィンドウ システムです。これは、老朽化し​​た X11 標準に代わるものです。これを使用するにはアプリケーションを変更する必要があるため、これまでのところ採用は遅れています。この記事の執筆時点では、X11 に比べてセキュリティが強化されていることが主な利点です。

X11 (X Window System) を使用すると、グラフィカル デスクトップ環境でウィンドウを表示および制御できます。 Wayland は X11 の代替品です。より高速かつ安全になるように設計されています。それらについて知っておくべきことは次のとおりです。

ウェイランドとは何ですか?

Wayland は 、数十年にわたって Linux のデフォルトのウィンドウ システムであった X11 に代わる最新の製品です。 Wayland は通信プロトコルであり、X Window ディスプレイ サーバーとクライアント アプリケーション間のメッセージングを定義します。 Wayland プロジェクトは、アプリケーションがプロトコルを使用できるようにするクライアント ライブラリとサーバー ライブラリを提供します。

Wayland プロジェクトは、2008 年に Red Hat 開発者によって開始されました。

Linux 上の Wayland とは何ですか? X との違いは何ですか?

Xの多くの名前

X Window System は、1984 年に マサチューセッツ工科大学 によって Unix 向けに初めてリリースされたウィンドウ システムです。アプリケーションは、ウィンドウ システムが提供する機能を基盤にしてユーザー インターフェイスを生成できます。

1987 年までに X Window System はバージョン 11 に達し、X11 として知られるようになりました。現在は X.Org Foundation によって管理されています。 1987 年以来、小規模なリリースが多数ありましたが、まだバージョン 11 です。この記事の執筆時点では、現在の安定バージョンは X11R7.7 です。

名前の「X」はローマ数字の 10 を意味するものではなく、「Xtra」や「Xtended」などを意味するものでもありません。以前のウィンドウ システムは、「窓」を表す「W」と呼ばれていましたが、新しいプロジェクトを開始するときに、単純にアルファベットの次の文字に移動しました。

X Window System は、「X」、「X11」、「Xorg」、「X Windows」、「X Window System」などと呼ばれることがあります。

Linux 上の Wayland とは何ですか? X との違いは何ですか?

X11 の仕組み

X Window System は、 マウス との対話、ウィンドウの描画と移動など、低レベルのイベントとプリミティブを処理します。アプリケーションはビジュアルとインターフェイスのデザインを処理します。ウィンドウの外観、ウィンドウにどのようなボタンがあるか、およびそれらのボタンがどこに配置されるかは、アプリケーション プログラマが選択します。 X Window System は、結果のデザインを画面に描画します。

X11 は、動作する X Window System のさまざまなコンポーネント間で受け渡す必要がある通信の定義を提供します。 X 対応アプリケーションがウィンドウやインターフェイス要素を描画するために使用するコードはアプリケーション内にないため、この通信が必要です。その作業は X サーバーとウィンドウ マネージャーの間で共有されます。

アプリケーションは X サーバーのクライアントです。ウィンドウ マネージャーは特別なタイプのクライアントです。 X サーバーは、リソースの管理、描画リクエストの実行、キーの押下やマウスのクリックなどのイベントの適切なアプリケーションへのマーシャリングを担当します。

また、ウィンドウ マネージャーとアプリケーション間の通信の仲介者としても機能し、両者の間でメッセージのやりとりを仲介します。ウィンドウ マネージャーは、アプリケーションが開いているウィンドウ、画面上のどこにあるか、ウィンドウのサイズはどれくらいか、ウィンドウが重なっているかどうかなどのリストを保持します。

合成ウィンドウ マネージャーは、各ウィンドウのオフスクリーン バッファーを維持します。これらのバッファを、デスクトップ全体を表す最上位のウィンドウを表す 1 つのイメージに合成し、画面に書き込まれます。

GNOME や KDE を含むすべての最新の グラフィカル デスクトップ環境は 、合成ウィンドウ マネージャーを使用します。

Linux 上の Wayland とは何ですか? X との違いは何ですか?

Wayland の仕組み

Wayland は X11 の問題を解決することを目的としています。 X11 アーキテクチャでは多くのメッセージングが必要です。 X サーバーは、クライアントとウィンドウ マネージャーの間に位置します。また、すべてのものと、 カーネル を介して、 グラフィックス ハードウェア との間に位置します。メッセージングの量により、遅延が発生したり、視覚的に遅れたり、不安定になったりする可能性があります。

大規模なコードベースもあります。サーバー アプリケーション、ウィンドウ マネージャー アプリケーション、およびクライアントが使用する X11 ライブラリがあります。コードベースが大きくなるほど(そして古くなればなるほど)、保守が難しくなり、レガシーコードで苦労することになります。

Wayland はアーキテクチャを変更することでコード ベースを最新化および合理化し、パフォーマンス上のメリットとセキュリティの向上を実現しました。

実際、サーバーとウィンドウ マネージャーを 1 つのアプリケーションに統合しました。現在カーネルによって実行されている機能を実行するコードはすべて削除されました。作業を複製する代わりに、カーネルの機能を利用しました。

Wayland を使用すると、コンポジターとクライアント アプリケーションは直接通信します。コンポジターは、どのウィンドウがデスクトップ上のどこにあるか、およびそのサイズと状態についての内部マッピングを維持します。コンポジターは、キーボード、マウス、およびウィンドウの変更イベントを仲介し、それらのウィンドウを所有するアプリケーションにイベントを送信します。

アプリケーションはそれに応じてユーザー インターフェイスを更新します。主な違いは、レンダリングがリンクされた Wayland ライブラリを使用してアプリケーション自体の内部で実行されることです。

アプリケーションは、ウィンドウを保持するために使用されるバッファを更新するか、新しいバッファを作成して古いバッファを破棄します。次に、クライアント アプリケーションはコンポジタに通知を送信し、ウィンドウ マッピングを更新し、新規または更新されたビデオ バッファを使用するように指示します。

この簡素化されたアーキテクチャと最新のコード設計により、パフォーマンスが向上し、特にウィンドウのサイズ変更とドラッグがスムーズかつ滑らかに表示されます。

Linux 上の Wayland とは何ですか? X との違いは何ですか?

Wayland のアプリケーションへの導入の遅れ

Wayland は、Debian 10 以降、 Fedora 34 以降、 Ubuntu 18.04 以降、および Arch Linux などの他のディストリビューションのデフォルトのウィンドウ システムです。それにもかかわらず、多くの場合、Wayland は X11 アプリケーションを実行します。

XWayland と呼ばれる互換性レイヤーがあり、X11 アプリケーションを Wayland で実行できるようになります。 X11 アプリケーションの大部分は変更されておらず、Wayland に移植されていないため、これが必要でした。

GNOME などの Wayland コンポジターを提供するデスクトップ環境では、GNOME テキスト エディターやマップ、ファイル、カレンダーなどの公式アプリケーションはすべて Wayland ネイティブ アプリケーションです。しかし、X11 アプリケーションの大部分は依然として手つかずのネイティブ X11 アプリケーションです。

XWayland ミドルウェアは通常は問題なく動作しますが、画面録画などの低レベルの画面関連機能を実行する一部の X11 アプリケーションでは問題が発生する可能性があります。 NVIDIA で Wayland を使用するのは、X11 の場合と同じくらい面倒な場合がありますが、NVIDIA GeForce GT 1030 GPU で Wayland を使用して毎日のドライバーに問題はありませんでした。

X11 アプリケーションの作成者の中には、自分のアプリケーションが XWayland で正常に動作し、Wayland アプリケーションに作り直す必要がなくなることを期待している可能性があります。新しいアプリケーションが Wayland を採用する一方で、既存の X11 アプリケーションの大部分は現状のままであり、XWayland に期待を抱いているため、Wayland への取り込みと移行が長くて遅いとしても驚かないでください。

Linux 上の Wayland とは何ですか? X との違いは何ですか?

Wayland または X11 を使用していますか?

主要な Linux ディストリビューションのいずれかを使用している場合は、すでに Wayland を使用している可能性があります。以下のコマンドを発行することで確認できます。

エコー $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 コマンドを 使用すると、現在のユーザーの名前が 得られます。 -p (プロパティ) オプションは、 loginctl からの出力を「表示」設定に関する情報に制限し、 --value オプションを使用して値のみを返します。 loginctl からの応答に「Display=」文字列を含めたくありません。これらすべてによりセッション ID が得られます。

セッション ID を外部の loginctl に渡し、 show-session コマンドを使用してセッションの属性を表示します。 -p (プロパティ) オプションを使用して出力をセッション タイプに関する情報に制限し、 --value オプションを使用して「Type=」ラベルなしで値を表示します。

Wayland を使用しているコンピューターでは、次のように表示されます。

X Window System を実行している場合は、次のように表示されます。

Linux 上の Wayland とは何ですか? X との違いは何ですか?

Wayland と X11 のどちらを使用するべきですか?

問題がない限り、すでに使用しているものを使い続けることもできます。ただし、不安定になったり、画面の更新がぎくしゃくしたりしていることに気付いた場合は、使用していない方に移行してみてください。

GNOME で他のシステムを切り替えて試したい場合は、ログイン画面でユーザー名をクリックし、ディスプレイの右下隅にある歯車のアイコンをクリックします。

メニューにはさまざまなバージョンの GNOME が表示されます。 「Xorg」と記載されているオプションは X Window System を使用し、オプションは Wayland を使用しません。

「 Linux 上の Wayland とは何ですか? X との違いは何ですか?」に関するベスト動画選定!

Linuxは何に使ったら良い?分野別に活用事例を解説!
【ひろゆき】UnixとLinuxって?WindowsとMacの違い?プログラミングをする上で●●は知ってて下さい。【 hiroyuki ひろゆき 切り抜き 性格 思考法 論破 】