Wayland

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Kto2038 (会話 | 投稿記録) による 2022年2月22日 (火) 13:51個人設定で未設定ならUTC)時点の版 (→‎ツールキットサポート: 内部リンク修正)であり、現在の版とは大きく異なる場合があります。

Wayland
Wayland Display Server logo
Waylandのデモ
作者 Kristian Høgsberg
開発元 freedesktop.orgその他
初版 2008年9月30日 (15年前) (2008-09-30)[1]
最新版
Wayland: 1.19[2], Weston: 8.0[3] / 2021年1月27日 (3年前) (2021-01-27)
リポジトリ ウィキデータを編集
プログラミング
言語
C
対応OS 公式: Linux
非公式: NetBSD, FreeBSD, DragonFly BSD[4]
サポート状況 正式公開済み
種別 ディスプレイサーバ
ライセンス MIT License[5]
公式サイト wayland.freedesktop.org ウィキデータを編集
テンプレートを表示
EGLに依存したWaylandディスプレイサーバプロトコル
Linux
Waylandコンポジタ、libwayland-client、ツールキット

Wayland は、ディスプレイサーバとクライアント間の通信方法を記述した通信プロトコルである。 また、そのプロトコルをCで実装したライブラリでもある。 Waylandプロトコルを使用したディスプレイサーバをWaylandコンポジタと呼ぶ。 これは、このディスプレイサーバがコンポジット型ウィンドウマネージャの機能も持つためである。

Waylandは当初、Kristian Høgsberg率いるボランティアによって、フリーかつオープンソースコミュニティ主導のプロジェクトとして開発されていた。 このプロジェクトは、Linuxやその他のUnix系OSにおいて、X Window Systemをモダンで安全で[6][7][8][9]よりシンプルなものに置き換えることを目的としている。プロジェクトのソースコードは、パーミッシブ・ライセンスのひとつであるMITライセンスで公開されている[10][5]

成果の一部として、WaylandプロジェクトはWestonと呼ばれるWaylandコンポジタのリファレンス実装も開発した。

概要

  1. Linuxカーネルevdevモジュールは、イベントを受けとり、Waylandコンポジタへ送る。
  2. Waylandコンポジタはシーングラフを見渡し、どのウィンドウがそのイベントを受け取るべきかを決定する。 シーングラフは画面に表示されているものに対応しており、Waylandコンポジタはイベントが適用されるシーングラフ内の要素との変換が分かる。そのため、Waylandコンポジタは逆変換することで、正しいウィンドウが分かり画面上の座標をウィンドウ内の座標へ変換することができる。ウィンドウに適用できる変換は、コンポジターが適用できることだけに限られ、入力イベントに対して逆変換できることに限られます。
  3. Xの場合、クライアイントはイベントを受け取ると、反応してUIを更新する。しかし、Waylandの場合、クライアントはEGLを通じてレンダリングし、コンポジタへ更新された範囲を通知するために要求を送るだけである。
  4. Waylandコンポジタはクライアントから変更箇所のリクエストを集め、スクリーンを再構成する。それからコンポジタは、KMS (英語版)による画面の再描画をスケジューリングするため、ioctlを直接発行する。

Waylandは、コンポジット型ウィンドウマネージャが、アプリケーションやグラフィクスハードウェアと直接通信できるようにするための方法を提供する。Waylandはグラフィクス周りのみに特化しており、入力ハードウェアとの通信には他のライブラリを使用することを想定している。Wayland環境下ではコンポジット型ウィンドウマネージャがディスプレイサーバとなる。各アプリケーションは画像を自身のバッファに描画し、ウィンドウマネージャがディスプレイサーバとなり、各アプリケーションのバッファを合成してディスプレイ上のアプリケーションウィンドウを作り出す。これは、コンポジット型ウィンドウマネージャとX Window Systemを一緒に使う従来の方法より効率的かつシンプルである[11]

Waylandディスプレイサーバプロジェクトは、Red Hatの開発者であったKristian Høgsbergによって、2008年に開始された[12]

2010年頃、Linuxデスクトップのグラフィックスは、「中心にあるXサーバとやり取りするためだけの山積みのレンダリングインタフェース」を持つ状態から、"XやWaylandのようなウィンドウシステムを脇に退けて"、Linuxカーネルやそのコンポーネント (たとえばダイレクト・レンダリング・インフラストラクチャ(DRI)ダイレクト・レンダリング・マネージャ(DRM)(英語版))を"間に置く"ように移行した。その結果、"グラフィックシステムはシンプルになり、より柔軟性があり、より良いパフォーマンスを発揮する"ようになった[13]

Høgsbergは、多くの最近のプロジェクトと同様にXへの拡張(英語版)を追加することもできたが、"クライアントとハードウェアの間のホットなパスからXを[締め出す]"ことを採用した。 その理由について、プロジェクトのFAQには以下のとおり記載されている[10]

今や異なるのは、多くのインフラストラクチャがXサーバからカーネル(メモリ管理、コマンドスケジューリング、モードセッティング(英語版))やライブラリ(cairo, pixman, FreeType, Fontconfig, Pango等)に移行したことだ。そして中央サーバプロセスでしなければならないことは、ほとんど残っていない。一方、[Xサーバ]は、Xプロトコルで会話することをサポートしなければならず、膨大な量の機能がある。それらの機能はもはや誰も使わない…。 それらの機能は、コードテーブル、グリフのラスタライズとキャッシング、XLFD (マジでXLFD!)、コアレンダリングAPI全体がある。コアレンダリングAPIは、点線、ポリゴン、大きな円弧、その他多くの1980年代スタイルの原始的なグラフィックを描くためのものである。

多くのことに対して、我々はXRandRXRenderCOMPOSIT(英語版)といった拡張を追加することでX.orgサーバをモダンにし続けてきた…。Waylandによって、我々はXサーバとすべてのレガシーテクノロジーをオプションへと移行できる。Xサーバがコアなレンダリングシステムから互換性のあるオプションに置き換わるまでは長い時間がかかるが、計画しなければ達成はできないのだ。

Waylandの初期バージョンでは、ネットワーク透過性(英語版)を提供していなかった。 しかし、Høgsbergは、2010年にネットワーク透過性が可能であることを記した[14]。 それは、2011年のGoogleサマーコードプロジェクトとして挑戦されたが成功しなかった[15]。 Adam Jacksonは、(VNCのような)"ピクセルスクレイピング"や (RDP, SPICE(英語版), X11のように)ネットワーク越しに"レンダリングコマンドストリーム"を送る方法で、Waylandアプリケーションへのリモートアクセスを目論んだ[16]。 2013年初頭、Høgsbergは、本物のコンポジタへ圧縮画像を送るプロキシWaylandサーバーを使ってネットワーク透過性の実験を行った[17][18]。 2017年8月、GNOMEはWayland下で最初のピクセルスクレイピングVNCサーバの実装を提示した。

ソフトウェア アーキテクチャ

プロトコル アーキテクチャ

Waylandプロトコルのアーキテクチャでは、クライアントとコンポジタがリファレンス実装ライブラリを使用して、Waylandプロトコルで通信する。

Waylandプロトコルはクライアントサーバモデルである。クライアントはピクセルバッファを画面上へ表示するよう要求するグラフィカルアプリケーションであり、サーバ(コンポジタ)はこれらのバッファの表示を制御するサービスプロバイダである。

Waylandリファレンス実装は、2層のプロトコルとして設計された。すなわち[19]

  • 下位レイヤあるいはワイヤプロトコル: 関係する2つのプロセス—クライアントとコンポジタ—の間のプロセス間通信と、それらが内部で変えるデータのマーシャリング (英語版) を扱う。
  • その上の高位レイヤ: クライアントとコンポジタがウィンドウシステムの基本機能を実現するために交換する情報を扱う。このレイヤは、"非同期オブジェクト指向プロトコル"として実装された[20]:9

下位レイヤはCで手作業で書かれたが、高位レイヤはXMLフォーマットで書かれたプロトコルの記述から自動生成された[21]。 このXMLで書かれたプロトコルの記述が変更されたときは、いつでもプロトコルを実装したCのソースコードを再生成できる。これによって、非常にフレキシブルで、拡張性が高く、エラーを防止したプロトコルになる。

Waylandプロトコルのリファレンス実装は、2つのライブラリ、すなわち、Waylandクライアントによって使われるlibwayland-clientライブラリと、Waylandコンポジタによって使われるlibwayland-serverライブラリである[20]:57

プロトコルの概要

Waylandプロトコルは、"非同期オブジェクト指向プロトコル"として記述されている[20]:9オブジェクト指向とは、コンポジタによって提供されるサービスが、同じコンポジタ上に存在する一連のオブジェクトとしてもたらされることを意味する。 各オブジェクトはインタフェースを持つ。インタフェースは、名前と、いくつかのメソッド(リクエストと呼ばれる)、いくつかの関連したイベントを持つ。それぞれのリクエストとイベントは0以上の引数を持ち、それぞれに名前とデータ型がある。プロトコルが非同期とは、リクエストが、同期した返信やACKを待つ必要がないことを意味する。これによりラウンドトリップタイムを避け、パフォーマンスが改善する。

Waylandクライアントは、あるオブジェクトがサポートしているリクエストを、そのオブジェクトへリクエストできる(メソッドを呼び出せる)。クライアントは、必要とされるデータをリクエストの引数として提供しなければならない。これが、クライアントがコンポジタからサービスを要求する方法である。次に、コンポジタは、イベントを(おそらく引数付きで)発行するため、オブジェクトによって情報をクライアントへ返す。これらのイベントは、あるリクエストに対する反応や、あるいは非同期の (入力デバイスからのイベントといった)内部イベントや状態変化としてコンポジタによって発行される。エラー状態もコンポジタによってイベントとして通知される[20]:9

オブジェクトへリクエストを発行できるクライアントのために、最初に、オブジェクトを識別するために使うID番号をサーバに伝える必要がある[20]:9。コンポジタには2種類のオブジェクトがある。グローバルオブジェクトと、非グローバルオブジェクトである。グローバルオジェクトは、生成時(そして廃棄時)にコンポジタによってクライアントへ通知される。一方、非グローバルオブジェクトは、通常、すでに機能の一部として存在している他のオブジェクトによって生成される[22]

インタフェースとその要求およびイベントは、Waylandプロトコルを定義する中心となる要素である。プロトコルの各バージョンは、どんなWaylandコンポジタにもあると期待されるインタフェースと、その要求およびイベントの集合を含んでいる。オプションとして、Waylandコンポジタは新しいリクエストとイベントをサポートする独自のインタフェースを定義して実装するかもしれない。それによって、コアプロトコル以上の機能へ拡張することができる[20]:10。プロトコルの違いを管理するため、それぞれのインタフェースは名前に加えて"バージョン番号"属性を持っている。この属性により、同じインタフェースの派生版を区別できる。 各Waylandコンポジタは、どのインタフェースが使用可能かだけでなく、それらのインタフェースがサポートしているバージョンも公開する[20]:12

Waylandコアインタフェース

現在のバージョンのWaylandプロトコルのインタフェースは、Waylandソースコードにあるprotocol/wayland.xmlで定義されている。これはXMLファイルであり、現在のバージョンに存在するインタフェースが、リクエスト、イベント、その他の属性と共にリストアップされている。このインタフェース集合は、どのWaylandコンポジタも最低限必要とされるインタフェースである。

いくつかのWaylandプロトコルでの最も基本的なインタフェースは、以下のとおりである[20]

  • wl_display – コアグローバルオブジェクト。Waylandプロトコル自身をカプセル化した特別なオブジェクトである。
  • wl_registry – グローバルレジストリオブジェクト。すべてのクライアントが利用できるよう、コンポジタがすべてのグローバルオブジェクトを格納する。
  • wl_compositor – コンポジタを表すオブジェクト。異なるサーフェイスを1つの出力へと結合することを担当する。
  • wl_surface – 画面上の四角形の領域を表すオブジェクト。位置、サイズ、描画内容(ピクセル)によって定義される。
  • wl_buffer – wl_surfaceに貼り付けたとき、表示する内容を提供するオブジェクト。
  • wl_output – 画面の表示可能領域を表すオブジェクト。
  • wl_pointer, wl_keyboard, wl_touch – ポインタキーボードといった入力デバイスを表すオブジェクト。
  • wl_seat – 1台のコンピュータを複数人で同時に使うシステム(英語版)において、1つのシート(入出力デバイスの集合)を表すオブジェクト。

標準的なWaylandクライアントセッションは、wl_displayオブジェクトを使ってコンポジタに接続することで開始する。これは接続を表す特別なローカルオブジェクトであり、サーバー内には存在しない。このインタフェースを使うことで、クライアントはコンポジタからwl_registryグローバルオブジェクトを要求できる。wl_registryオブジェクトには、すべての名前があり存在しているグローバルオブジェクトが格納され、クライアントは望むオブジェクトを紐付ける。通常、クライアントは最低限1つのwl_compositorオブジェクトを紐付ける。アプリケーションの出力をディスプレイに表示するため、wl_compositorオブジェクトから、1つ以上のwl_surfaceオブジェクトを要求する[22]

Wayland拡張インタフェース

Waylandコンポジタは、自身の追加インタフェースを定義して公開することができる[20]:10。この特徴によって、コアインタフェースによって提供される基本機能を超えてプロトコルを拡張できる。そしてこれは、Waylandプロトコル拡張を実現する標準的な方法になった。コンポジタは、特化したあるいはユニークな特徴を提供するために、カスタムインタフェースを追加できる。WaylandリファレンスコンポジタであるWestonは、新しいコンセプトやアイデアのためのテストベンチとして、あたらしい実験的なインタフェースを実現するためにカスタムインタフェースを使用した。それらのコンセプトやアイデアは、その後にコアプロトコルの一部になった(たとえばwl_subsurfaceインタフェースは、Wayland 1.4で追加された)[23]

コアプロトコルの拡張プロトコル

XDG-Shellプロトコル

XDG-Shellプロトコル(XDGについてはfreedesktop.orgを見よ)は、Waylandコンポジタ(Westonに限らず)でサーフェイスを管理するための拡張手段である。サーフェイスを操作(最大化、最小化、フルスクリーンなど)するための伝統的な方法は、wl_shell_*()関数を使用することだった。この関数は、Waylandコアプロトコルの一部で、libwayland-clientにある。対して、XDG-Shellプロトコルの実装は、Waylandコンポジタによって提供される。そのためxdg-shell-client-protocol.hヘッダがWestonソースツリーに含まれる。それぞれのWaylandコンポジタは自身の実装を提供することを想定している。

2014年6月 (2014-06)現在, XDG-Shellプロトコルはバージョン管理されておらず、まだ変更する可能性がある。

xdg_shellは、長期的にはwl_shellを置き換えることを目指したプロトコルである。しかし、現状ではxdg_shellは、Waylandコアプロトコルの一部ではない。xdg_shellは、開発版のAPIとして始まり、当初は開発用に使われた。これらの特徴がいくつかのデスクトップシェルによって要求されるとなれば、最終的には安定版へ移行できる。xdg_shellは、主に2つの新しいインタフェース:xdg_surfaceとxdg_popupを提供する。xdg_surfaceインタフェースは、動かせ、サイズ変更ができ、最大化等ができるデスクトップスタイルウィンドウを実現する。xdg_surfaceインタフェースは、親子関係を生成するためのリクエストを提供する。xdg_popupインタフェースは、デスクトップスタイルのポップアップとメニューを実現する。xdg_popupは、常に別のサーフェイスのための一時的なものであり、暗黙的なグラブを持つ[24]

IVI-Shellプロトコル

IVI-Shellは、Waylandコアプロトコルの拡張で、車内エンターテインメント (IVI) デバイス[25] をターゲットにしている。

レンダリングモデル

Waylandコンポジタとそのクライアントは、フレームバッファに直接描画するためにEGL(英語版)を使用する。X.Orgサーバは、XWayland(英語版)Glamor(英語版)で動かしている。

Waylandプロトコルは、レンダリングAPIを含んでいない[20]:7[10][26][27]。その代わり、Waylandはダイレクトレンダリングモデルを採用している。ダイレクトレンダリングモデルでは、クライアントはウィンドウコンテンツをコンポジタと共有できるバッファへ描画しなければならない[20]:7。そのため、クライアントはCairoOpenGLなどのライブラリを使って、自分自身ですべてをレンダリングすることも選択できる。あるいは、QtGTKといった、Waylandをサポートする高位のウィジェットライブラリのレンダリングエンジンに頼ることもできる。クライアントは、特定のタスクをこなすために、オプションとしてその他の特化したライブラリを使用することもできる。たとえばフォントレンダリング(英語版)のためにFreeTypeを使用できる。

レンダリングされたウィンドウコンテンツの結果(バッファ)は、wl_bufferオブジェクトに格納される。このオブジェクトのデータ型は、実装依存である。コンテンツデータがクライアントとコンポジタとの間で共有可能でなければならないことだけが唯一要求される。もしクライアントがソフトウェア(CPU)レンダラを使用し、その結果がシステムメモリに格納されるなら、クライアントとコンポジタは、バッファ間のやり取りを余分なコピーなしに実現するため、共有メモリを使用できる。Waylandプロトコルはすでにこの種の共有メモリバッファに何も追加することなしに対応している。共有メモリバッファは、wl_shmおよびwl_shm_poolインタフェースによって実現できる[20]:11, 20-21。この方法の欠点は、コンポジタはそれを表示するために追加の作業(通常、共有データのGPUへのコピー)を必要とする可能性があることである。これにより、グラフィックパフォーマンスは低下する。

最も一般的なケースでは、クライアントがOpenGLOpenGL ESVulkanといったハードウェア(GPU)アクセレレーションのためのAPIを使って、ビデオメモリバッファへ直接レンダリングする。クライアントとコンポジタは、このGPU空間のバッファを参照するための特別なハンドラを用いて共有できる[28]。この方法は、コンポジタに余計なデータコピーをしないようにする。結果として、グラフィックパフォーマンスは向上し、よりよい方法である。コンポジタはAPIクライアントとして、同じハードウェアアクセセレレーションAPIを使って、ディスプレイへ描画する最終的なシーンのコンポジションをかなり最適化できる。

レンダリングが共有バッファ内で完成したとき、Waylandクライアントはバッファのレンダリングされたコンテンツをディスプレイに表示するため、コンポジタを導くべきである。そのために、クライアントはレンダリングされたコンテンツを格納するバッファオブジェクトをサーフェイスオブジェクトに紐付ける。そして"commit"リクエストをサーフェイスに送り、バッファの制御をコンポジタヘ転送する[19]。それから、クライアントは、もしまた別のフレームをレンダリングするためにバッファを再利用するなら、コンポジタがバッファを開放するのを待つ(イベントによって通知される)あるいは新しいフレームをレンダリングするため別のバッファを使用し、レンダリングが完了した時にこの新しいバッファをサーフェイスに紐付け、そのコンテンツをコミットすることもできる[20]:7。数個の関連するバッファやその運用を含めて、レンダリングに使用される方法は、全体的にクライアントの制御下にある[20]:7

他のウィンドウシステムとの比較

WaylandとXとの違い

WaylandとXとの間には、パフォーマンス、コードの保守性、セキュリティに関して、いくつかの違いがある[29]

アーキテクチャ
コンポジット型ウィンドウマネージャは、Xとは分離しており、追加機能である。一方、Waylandはディスプレイサーバとコンポジタを単一の機能として統合している[30][26]。また、Waylandは、ウィンドウマネージャの仕事のいくつかを組み込んでいる。一方、Xは、クライアント側の仕事として分離されている[31]
コンポジット
Xでは、コンポジットはオプションであるが、Waylandでは必須である。Xでのコンポジットは"能動的"、つまり、コンポジタはすべてのピクセルデータを自分で取り出さなければならない。これは遅延を生む。Waylandでは、コンポジットは"受動的"である。つまり、コンポジタはピクセルデータをクライアントから直接受け取る[32]
レンダリング
Xサーバは自身でレンダリングができ、さらにクライアントによって送られたレンダリングされたウィンドウを表示するために構築することもできる。対して、WaylandはレンダリングのためのAPIは表に出しておらず、そうした仕事を(フォント、ウィジェット、等のレンダリングを含めて)クライアントに委譲している[30][26]。ウィンドウの装飾は、(たとえば、グラフィカルツールキットを使って)クライアント側でレンダリングできるし、(コンポジタによって)サーバサイドでもできる[33]
セキュリティ
Waylandは、各ウィンドウの入出力から独立しており、入力・出力それぞれの機密性、整合性、および可用性を実現する。オリジナルのXの設計では、これらの重要なセキュリティの特徴が欠けており[7][8][9]、いくつかの拡張が、それを軽減すべく開発されてきた[34][35][36]。また、Waylandは、コードの大部分がクライアント側で実行されており、「root」権限で実行する必要のあるコードが少なくなり、セキュリティが向上する[7]。一方、複数の一般的なLinuxディストリビューションでは、現在はXをroot権限なしに実行できる[37][38][39][40]
プロセス間通信
Xサーバは、Xクライアント同士の基本的な通信方法を提供する。後にICCCMによって拡張された。このXクライアント-クライアント通信は、ウィンドウマネージャによって使われる。また、Xセッション(英語版)ウィンドウの選択とドラッグアンドドロップ(英語版)、その他の機能を実現する。Waylandコアプロトコルは、Waylandクライアント間の通信をサポートしない。対応する機能は(もし必要であれば)(KDEやGNOMEといった)デスクトップ環境や(たとえばOSのプロセス間通信といった)サードパーティによって実現される。
ネットワーク
Xウィンドウシステムは、ネットワーク越しにコア部分が実行されるよう設計されたアーキテクチャである。Waylandは、それ自身ではネットワーク透過性を持たない[10]。しかし、コンポジタは、リモートディスプレイを実現するためにどんなリモートデスクトッププロトコルも実現できる。加えて、Waylandイメージストリーミングとイメージ圧縮の研究がある。この研究は、Virtual Network ComputingVNCのようにリモートフレームバッファアクセスを実現し得る[18]

Xとの互換性

XWaylandは、Waylandクライアントとして動作するXサーバである。XWaylandによって、Waylandコンポジタ環境でネイティブのX11クライアントアプリケーションを表示させることができる[41]。これは、XQuartzがXアプリケーションをmacOSのネイティブウィンドウシステムで動かす方法に似ている。XWaylandのゴールは、移植されていないアプリケーションを実行する方法を提供することで、XウィンドウシステムからWayland環境への移行を促進することである。XWaylandは、X.Orgサーババージョン1.16に取り込まれた[42]

Qt5やGTK3といったウィジェット・ツールキットは、ユーザーがアプリケーションをX上あるいはWayland上で実行させるかに関わらず、ユーザがローダを選択することで、グラフィカルバックエンドを実行時に変更できる[43]。Qt5は、この効果のために-platformコマンドラインオプション[44]を提供している。一方、GTK 3は、GDK_BACKEND環境変数を設定することで、ユーザがGDK(英語版)バックエンドを使用するか選択可能にしている[43][45]

Waylandコンポジタ

一般的なウィンドウの要素。WaylandでもX11でも、どのソフトウェアがウィンドウの装飾をレンダリングするかは指定しない。Westonは、クライアントによって描画されることを要求する。しかし、KWinは、サーバサイドでの装飾を実現する。o[33]


Waylandディスプレイサーバプロトコルを実装したディスプレイサーバは、Waylandコンポジタとも呼ばれる。なぜなら、それらはコンポジット型ウィンドウマネージャの仕事もこなすからである。

  • Weston – Waylandコンポジタのリファレンス実装である。Westonは、クライアントサイド・デコレーションを実現する。
  • Lipstick – Waylandコンポジタを実装したモバイルグラフィカルシェルフレームワークである。これは、Sailfish OS(英語版), Nemo Mobile(英語版), AsteroidOSで使われる[46]
  • Enlightenment は、バージョン0.20から、完全にWaylandをサポートしている[47]。しかし、完全なWaylandコンポジタになるための作業は続けられている[48]
  • KWin は、2021年現在、ほとんど完全にWaylandサポートを完了した[49]
  • Mutter は、(2013年9月に)GNOME 3.9にWaylandを統合するためのブランチを切った状態である[50]
  • Clayland(英語版) – Clutterを用いたWaylandコンポジタのシンプルな例である。
  • Westeros – Waylandコンポジタライブラリである。Westerosによって、アプリケーションが自身のWayland表示を作ることを可能になる。それによりサードパーティアプリケーションのネストと埋め込みを可能にする[51]
  • wlroots – モジュラWayland実装である。wlrootsは、他のコンポジタ、とくにSwayのためのベースとして関数である[52][53]
  • Sway – タイル型Waylandコンポジタである。また、X11のためのi3ウィンドウマネージャの置き換えである[54]
  • gamescope – SteamOSの一部である。初期のsteamcompmgrの置き換えである[55]

Weston

Westonは、Waylandコンポジタのリファレンス実装であり[56] Waylandプロジェクトによって開発されている。Cで書かれており、MITライセンスの下で公開されている。Westonは、Linuxカーネルの特定の機能に依存しているため、公式にはLinuxのみサポートしている。Westonが依存している機能は、カーネルモードセッティング(英語版)Graphics Execution Manager (GEM) 、udevである。これらは、他のUnixライクOSには実装されていない[57]。Linuxで実行するとき、evdev(英語版)によってハードウェアの入力を運用する。一方、バッファの運用は、ジェネリックバッファマネジメント (GBM) (英語版)に依存している。しかし、2013年にWestonのFreeBSD向けのプロトタイプportがアナウンスされた[58]

Westonは、HDCPをサポートしている[59]

Westonは、コンポジタとアプリケーション間のアプリケーションバッファを共有するためにGEMに依存している。ドックやパネルといった共通のデスクトップの機能のための"シェル"のプラグインシステムを含む[18]。クライアントは、自身のウィンドウボーダや装飾の描画に対して責任を負う。Westonは、レンダリングのためOpenGL ES[60]を使ったり、ソフトウェアレンダリング(英語版)のためにpixmanライブラリ[61]を使ったりすることができる。完全なOpenGL実装は使われない。なぜなら、現在のほとんどのシステムでは完全なOpenGLライブラリをインストールしている場合、GLXやその他のXウィンドウシステムサポートライブラリを依存関係のためにインストールしているからである[62]

Westonのためのリモートアクセスインタフェースは、2013年10月にRealVNC(英語版)の従業員によって提案された[63]

Maynard

Maynard (2017年1月)

Maynardは、グラフィカルシェルである。Maynardは、GNOME ShellMutterへのプラグインとして書かれたことと同様に、Westonのプラグインとして書かれた[64]ラズベリーパイ財団は、Collabora(英語版)とのコラボレーションの中でMaynardをリリースし、パフォーマンスとメモリ使用量の改善に取り組んでいる[65][66]

libinput

libinputは、複数のWaylandコンポジタに対してインプットスタックを統合するために作られた。

入力デバイス(キーボード、ポインタ、タッチスクリーン等)を扱うためのWestonコードは、libinputと呼ばれる独立したライブラリとして分けられている。Weston 1.5に始めてマージされた[67][68]

libinputは、Waylandコンポジタのための入力デバイスを扱う。また、汎用的なX.Orgサーバ入力ドライバを提供する。libinputの狙いは、入力イベントを扱う共通の方法でWaylandコンポジタ用の単一の実装を提供することである。これによりコンポジタ用にインプットコードをカスタムするための量を最小化する。libinputは、(udevを通じて)デバイスの検出[要説明]、デバイスの運用、入力デバイスイベントの処理と抽象化を提供する[69][70]

libinputのバージョン1.0は、バージョン0.21の次にリリースされ、タブレット、ボタンセット、タッチパッドジェスチャのサポートを含んでいる。このバージョンは、安定したAPI/ABIを維持する(API/ABIが変わらない。)[71]

GNOME/GTKおよびKDEフレームワーク5[72]が本流にしたことで、Fedora 22は、X.OrgのevdevとSynapticsドライバをlibinputに置き換えた[73]

バージョン1.16では、X.Orgサーバxf86-input-libinputと呼ばれるラッパによって、libinputライブラリをサポートした[74][75]

Waylandセキュリティモジュール

Waylandセキュリティモジュールは、LinuxカーネルにおけるLinuxセキュリティモジュールインタフェースに似た位置づけである[76]

(とくにアクセシビリティに関連した)いくつかのアプリケーションは、高い権限(特権)を必要とする。これらの権限は、Waylandコンポジタに共通して持たれる。現在[いつ?]、Waylanにおけるアプリケーションは、一般的にスクリーンショットや入力イベントの発行といったセンシティブな処理は、いずれも実行できない。Waylandの開発者達は、特権を付与されたクライアントを安全に処理するための実行可能な方法を積極的に探しており、クライアント用の特権を持たせるインタフェースを設計している。

Wayland Security Moduleは、コンポジタ内でのセキュリティの決定を、一元化されたセキュリティ決定エンジンに移譲する方法である[76]

採用実績

Waylandプロトコルは、シンプルであるように設計された。そのためウィンドウシステム全体を構築するためには、追加のプロトコルやインタフェースを定義し実装することが必要である。2014年7月 (2014-07)現在これらの追加のインタフェースは作成中である。そのため、ツールキットは既にWaylandを完全にサポートしている一方、グラフィカルシェルの開発者達は必要な追加のインタフェースを作るためにWaylandの開発者と協力している。

デスクトップLinuxディストリビューション

2020年現在ほとんどのLinuxディストリビューションは、Waylandをインストール直後からサポートしている。特筆すべき例を挙げると:

  • Fedora は、2016年11月22日にリリースしたバージョン25からWaylandをGNOME 3.22のデフォルトのデスクトップセッションとして使用開始した。X.OrgへはグラフィックドライバがWaylandをサポートできない場合のために戻れるようにしている[77]。Fedoraは、2021年4月27日のバージョン34から、KDEデスクトップのデフォルトのセッションとしてWaylandを使い始めた。
  • Ubuntu は、Ubuntu 17.0 (Artful Aardvark) にてWaylandをデフォルトにした[78]。しかし、Ubuntu 18.04 LTSにてX.Orgに戻した。Waylandはまだスクリーン共有とリモートデスクトップアプリケーションに問題を抱えており、ウィンドウマネージャのクラッシュから回復できないためであった[79][80]。21.04で、Waylandを再度デフォルトにした[81]
  • Red Hat Enterprise Linux は、2019年5月7日にリリースしたバージョン8で、Waylandをデフォルトセッションにした[82]
  • Debian は、2019年7月6日にリリースしたバージョン10からGNOMEのデフォルトセッションとしてWaylandを使用している[83]
  • Slackware Linux 2020年2月20日に開発用としてWaylandを組み入れた[84]。-現在、最終的にバージョン15.0になる予定である。
  • Manjaro は、2020年11月22日にリリースされたManjaro 20.2 (Nibia) のGnomeエディションでWaylandをデフォルトにした[85]

特筆するアーリーアダプター:

  • RebeccaBlackOSはDebianベースのLive USBである[86]。このLinuxディストリビューションは、コンピュータのメインOSを変更することなしに本物のWaylandデスクトップを試す便利な方法を提供する[87]。これは、2012年ころからWaylandを見せるために使われている[88][89]

ツールキットサポート

Waylandをサポートするツールキットの一部を以下に列挙する。

  • Clutter(英語版) は、完全にWaylandをサポートしている[90][91][92]
  • EFL は、セレクションを除き、完全にWaylandをサポートしている[93]
  • GTK 3.20 は、Waylandを完全にサポートしている[94]
  • Qt 5 は、Waylandを完全にサポートしている。そしてWaylandコンポジタとWaylandaクラインとの両方を記述するために使われる。
  • SDL バージョン2.0.2でWaylandのサポートを開始した[95]。そして、バージョン2.0.4からデフォルトで有効である[96]
  • GLFW(英語版) 3.2 は、Waylandをサポートしている[97]
  • FreeGLUT(英語版) は、最初にWaylandをサポートした[98]

デスクトップ環境

XからWaylandへの置き換えを進めているデスクトップ環境には、GNOME[99]KDE Plasma 5[100]Enlightenment[101]がある。

2015年11月、Enlightenment e20は、完全なWaylandサポートをアナウンスした[102][47][103]

GNOME 3.20は、完全なWaylandセッションを持つ最初のバージョンである[104]。GNOME 3.22は、GTK, Mutter, GNOME Shellを通してWaylandのサポートを改善した[105]。GNOME 3.24は、Wayland下での商用NVidiaドライバをサポートした[106]

先行してKWin 4.11 が実験的にWaylandをサポートしていた[107]が、KDE PlasmaによるWaylandのサポートは、Plasma 5のリリースまで遅れた[108]。 Plasma バージョン5.4は、Waylandセッションをサポートした最初のバージョンである[109]。2020年の間、KlipperはWaylandへ移行し、次の2020年10月にリリースされる次の5.20ではスクリーンキャスティングとレコーディングを改良することを目標としている[110]

その他のソフトウェア

Waylandをサポートするその他のソフトウェアは以下である。

  • Intelligent Input Bus は、Waylandでの動作をサポートされ、Fedora 22で準備ができた[111]
  • RealVNC(英語版) は、2014年7月にWayland開発者プレビューを公開した[63][112][113]
  • Maliit は、Wayland下で動作するインプットメソッドフレームワークである[114][115][116]
  • kmscon(英語版) は、wltermにてWaylandをサポートしている[117]
  • Mesa は、統合されてWaylandをサポートした[118]
  • Eclipse は、2014年のGSoCプロジェクトにてWayland上で動作するようにされた[119]
  • Vulkan WSI (Window System Interface) は、EGLが、OpenGL ESに対するEGLやOpenGLに対するGLXと類似した目的を提供するAPI呼び出しの集合である。Vulkan WSIは、最初からWaylandサポートを含む。つまり、Vulkanは、WAYLAND KHRプラットフォームを使用する。Vulkanクライアントは何も変更していないWeston, GENEVI LayerManager, Mutter / GNOME Shell, Enlightenment, あるいは他多くのWaylandサーバで動かすことができる。WSIは、システム上の異なるGPUを見つけることを可能にし、GPUレンダリングの結果をウィンドウシステムへ表示する[120]
  • SPURV(英語版), Waylandを使用したLinuxディストリビューションで動くAndroidアプリケーション用の互換レイヤである。

携帯および組込ハードウェア

postmarketOS上で動くWeston

Waylandをサポートする携帯および組込ハードウェアは、以下である。

履歴

EGL(英語版)上でダイレクト・レンダリング(英語版)を使用するWayland

作者であるKristian Høgsbergは、LinuxのグラフィックとX.Org開発者であり、以前はAIGLXDRI2で勤務していた。Red Hatで勤務しているとき、2008年の空いた時間のプロジェクトとしてWaylandの開発を始めた[127][128][129][130]。最初の目標は、"すべてのフレームは完璧である、つまり、それによってアプリケーションは、ティアリング、ラグ、再描画、ちらつきを二度と目にしないよう十分にレンダリングをコントロールできる"システムであった。根底となるコンセプトが"固まった"とき、Høgsbergはちょうどマサチューセッツ州Wayland(英語版)の街を運転していたため、その名前がつけられた[129][131]

2010年10月に、Waylandはfreedesktop.orgのプロジェクトになった[132][133]。移行の一環として、プロジェクトの中心となる議論と開発の場がGoogle グループからWayland-develメーリングリストに置き換えられた。

Waylandクライアントとサーバのライブラリは、当初MITライセンスの下でリリースされた[134]一方、コンポジタのリファレンス実装であるWestonといくつかのクライアントの例は、GNU General Public License version 2を使用した[135]。その後、すべてのGPLのコードは、"コードがリファレンス実装と実際のライブラリとの間をより容易に移動できるよう"MITライセンスに再ライセンスされた(英語版)[136]。2015年には、Waylandで使用していたラインセスの文言が、古いバージョンのMITライセンスとわずかに異なっていたことが見つかった。ライセンスの文言はX.Orgプロジェクトで使われてる(MIT Expat Licenseとして知られる)現在のバージョンのものへ更新された[5]

Waylandは、DRI2サポートによってすべてのMesa 3D互換ドライバで動作し、[118]同様にHybrisプロジェクト(英語版)を通じてAndroidドライバで動作する。[137][138][139]

リリース

WaylandとWestonの主なリリース[140]
バージョン リリース日 主な特徴
Wayland Weston
サポート終了:0.85 2012年2月9日[141] 初回リリース。
サポート終了:0.95 2012年7月24日[142] APIの安定化を開始した。
サポート終了:1.0 2012年10月22日[143][144] WaylandクライアントAPIが安定になった。
サポート終了:1.1 2013年4月15日[145][146] ソフトウェアレンダリング[61]。FBDEV, RDPバックエンド。
サポート終了:1.2 2013年7月12日[147][148] WaylandサーバAPIが安定になった。 色の管理。Subsurfaces。Raspberry Piバックエンド。
サポート終了:1.3 2013年10月11日[149] より多くのピクセルフォーマット。言語バインディングのサポート。 libhybris(英語版)を通じてAndroidドライバのサポート。
サポート終了:1.4 2014年1月23日[23] あたらしいwl_subcompositor および wl_subsurface インタフェース。 マルチフレームバッファフォーマット。rootのないWestonに対するlogindのサポート。
サポート終了:1.5 2014年5月20日[67] libinput。フルスクリーンシェル。
サポート終了:1.6 2014年9月19日[150] libinputをデフォルトにした。
サポート終了:1.7 2015年2月14日[151][152] Waylandプレゼンテーション拡張およびsurface rolesをサポート。IVIシェルプロトコル。
サポート終了:1.8 2015年6月2日[153][154] コアと生成されたプロトコルからヘッダを分離した。 再描画スケジューリング。名前付けされた出力。出力変換。Surface-shooting API.
サポート終了:1.9 2015年9月21日[155][156] ライセンスを更新。 ライセンスを更新。新しいテストフレームワーク。Triple-head DRM コンポジタ。Linux_dmabuf 拡張。
サポート終了:1.10 2016年2月17日[157][158] ドラッグアンドドロップ機能, グループ化されたポインタイベント。[159] Video 4 Linux 2, タッチ入力, デバッグ改善[160]
サポート終了:1.11 2016年6月1日[161][162] 新しいバックアップ読み込みルーチン、新しいセットアップロジック。 プロキシラッパー、共有メモリの変更、Doxygenにより生成された HTML 文書。
サポート終了:1.12 2016年9月21日[163][164] デバッグ環境の改善。 libweston および libweston-desktop。ポインタのロックと束縛。相対ポインタのサポート。
サポート終了:1.13 2017年2月24日[165][166] WestonのABIが変わった。そのため、新バージョンは、1.13.0ではなく2.0.0になった。
サポート終了:1.14 2017年8月8日[167][168] Weston 3.0.0 が同時にリリースされた。
サポート終了:1.15 2018年4月9日[169][170] Weston 4.0.0 が同時にリリースされた。
サポート終了:1.16 2018年8月24日[171][172] Weston 5.0.0 が同時にリリースされた。
サポート終了:1.17 2019年3月20日[173][174] Weston 6.0.0 が同時にリリースされた。
サポート終了:1.18 2019年8月2日[175][176] Weston 7.0.0 が1ヶ月後にリリースされた。
現行バージョン:1.19 2021年1月27日[2]
Weston 8[177] 2020年1月24日
Weston 9[178] 2020年9月4日
凡例
サポート終了
サポート中
現行バージョン
最新プレビュー版
将来のリリース

参考文献

  1. ^ Høgsberg, Kristian (2008年9月30日). “Initial commit”. 2020年1月3日閲覧。
  2. ^ a b Ser, Simon (27 January 2021). "[ANNOUNCE] wayland 1.19.0" (Mailing list). 2021年1月27日閲覧
  3. ^ Ser, Simon (24 January 2020). "[ANNOUNCE] weston 8.0.0" (Mailing list). 2020年2月12日閲覧
  4. ^ Wayland & Weston Compositor Ported To DragonFlyBSD - Phoronix”. www.phoronix.com. 2021年11月3日閲覧。
  5. ^ a b c Harrington, Bryce (15 September 2015). "[ANNOUNCE] wayland 1.8.93". freedesktop.org (Mailing list).
  6. ^ Wayland v/s Xorg : How Are They Similar & How Are They Different”. secjuice (2018年6月16日). 2020年9月10日閲覧。
  7. ^ a b c XDC2012: Graphics stack security”. LWN.net (2012年9月25日). 2016年4月13日閲覧。
  8. ^ a b Wayland Compositors - Why and How to Handle Privileged Clients!” (2014年2月21日). 2016年4月17日閲覧。
  9. ^ a b Looking at the security of Plasma/Wayland” (2015年11月23日). 2016年4月18日閲覧。
  10. ^ a b c d Wayland FAQ”. Wayland project. 2016年5月9日閲覧。
  11. ^ Wayland Architecture”. Wayland project (2010年11月5日). 2011年8月10日閲覧。
  12. ^ Michael Larabel (2009年5月20日). “The State Of The Wayland Display Server”. Phoronix. 2021年11月3日閲覧。
  13. ^ LPC: Life after X”. LWN.net (2010年11月5日). 2016年4月17日閲覧。
  14. ^ Høgsberg, Kristian (2010年11月9日). “Network transparency argument”. 2021年11月3日閲覧。 “Wayland isn't a remote rendering API like X, but that doesn't exclude network transparency. Clients render into a shared buffer and then have to tell the compositor (...) what they changed. The compositor can then send the new pixels in that region out over the network. The Wayland protocol is already violently asynchronous, so it should be able to handle a bit of network lag gracefully. Remote fullscreen video viewing or gaming isn't going to work well, [but] I don't know any other display system that handles that well and transparently.”
  15. ^ Remote Wayland Server Project: Does It Work Yet?”. Phoronix.com (2011年8月18日). 2016年4月17日閲覧。
  16. ^ Jackson, Adam (2010年11月9日). “[Re:] Ubuntu moving towards Wayland”. 2021年11月3日閲覧。
  17. ^ Stone, Daniel (28 January 2013). The real story behind Wayland and X (Speech). linux.conf.au 2013. Canberra. 2016年4月13日閲覧
  18. ^ a b c LCA: The ways of Wayland”. LWN.net (2013年2月13日). 2016年5月19日閲覧。
  19. ^ a b The Hello Wayland Tutorial” (2014年7月8日). 2014年7月25日閲覧。
  20. ^ a b c d e f g h i j k l m n Wayland Documentation 1.3”. 2016年3月16日閲覧。
  21. ^ protocol/wayland.xml”. FreeDesktop.org. 2014年7月25日閲覧。
  22. ^ a b Wayland protocol design: object lifespan” (2014年7月25日). 2016年4月6日閲覧。
  23. ^ a b Høgsberg, Kristian (2014年1月24日). “Wayland and Weston 1.4 is out”. wayland-devel mailing list. 2021年11月3日閲覧。
  24. ^ xdg_shell: Adding a new shell protocol”. freedesktop.org (2013年12月3日). 2014年6月14日閲覧。
  25. ^ GENIVI/wayland-ivi-extension”. 2021年11月3日閲覧。
  26. ^ a b c FOSDEM: The Wayland display server”. LWN.net (2012年2月15日). 2016年5月9日閲覧。
  27. ^ Introduction to Wayland”. Intel Open Source Technology Center. 2016年4月18日閲覧。 “Does not include a rendering API – Clients use what they want and send buffer handles to the server”
  28. ^ On supporting Wayland GL clients and proprietary embedded platforms” (2012年11月21日). 2016年4月6日閲覧。 “Buffer sharing works by creating a handle for a buffer, and passing that handle to another process which then uses the handle to make the GPU access again the same buffer.”
  29. ^ The Wayland Situation: Facts About X vs. Wayland”. Phoronix.com. p. 2 (2013年6月7日). 2016年4月17日閲覧。
  30. ^ a b Wayland Architecture”. Wayland project. 2016年5月9日閲覧。
  31. ^ LFCS 2012: X and Wayland”. LWN.net (2012年4月11日). 2016年4月17日閲覧。
  32. ^ Wayland/X Compositor Architecture By Example: Enlightenment DR19”. 2016年4月18日閲覧。
  33. ^ a b Client Side Window Decorations and Wayland” (2013年2月7日). 2016年4月17日閲覧。
  34. ^ X.Org Security”. X.Org Foundation. 2017年7月2日閲覧。 “The X server has long included an extension, SECURITY, which provides support for a simple trusted/untrusted connection model.”
  35. ^ Wiggins, David P. (1996年11月15日). “Security Extension Specification”. X Consortium Standard. 2017年7月2日閲覧。
  36. ^ Walsh, Eamon F. (2009年). “X Access Control Extension Specification”. 2017年7月2日閲覧。
  37. ^ Debian Moves To Non-Root X.Org Server By Default - Phoronix”. www.phoronix.com. 2021年11月3日閲覧。
  38. ^ Non root Xorg - Gentoo Wiki”. wiki.gentoo.org. 2021年11月3日閲覧。
  39. ^ X/Rootless - Ubuntu Wiki”. wiki.ubuntu.com. 2021年11月3日閲覧。
  40. ^ 1078902 – Xorg without root rights”. bugzilla.redhat.com. 2021年11月3日閲覧。
  41. ^ X Clients under Wayland (XWayland)”. Wayland project. 2014年7月18日閲覧。
  42. ^ ANNOUNCE: xorg-server 1.16.0”. freedesktop.org (2014年7月17日). 2021年11月3日閲覧。
  43. ^ a b Multiple backends for GTK” (2011年1月3日). 2016年3月10日閲覧。
  44. ^ QtWayland”. Qt Wiki. 2016年3月9日閲覧。
  45. ^ Full Wayland support in GTK”. GNOME wiki. 2016年3月10日閲覧。
  46. ^ Jolla: Sailfish OS, Qt, and open source”. LWN.net (2013年7月31日). 2016年4月17日閲覧。
  47. ^ a b Enlightenment 0.20 Arrives With Full Wayland Support & Better FreeBSD Support”. Phoronix.com (2015年11月30日). 2016年4月17日閲覧。
  48. ^ Wayland”. www.enlightenment.org. 2021年11月3日閲覧。
  49. ^ Plasma 5.21” (英語). KDE Community (2021年2月16日). 2021年3月9日閲覧。
  50. ^ Index of /sources/mutter-wayland”. download.gnome.org. 2021年11月3日閲覧。
  51. ^ Westeros Github Mirror”. 2016年9月19日閲覧。
  52. ^ swaywm/wlroots” (英語). GitHub. 2018年10月28日閲覧。
  53. ^ swaywm/sway” (英語). GitHub. 2018年10月28日閲覧。
  54. ^ Sway”. swaywm.org. 2018年12月20日閲覧。
  55. ^ gamescope”. GitHub. 2021年7月26日閲覧。
  56. ^ README”. cgit.freedesktop.org. 2021年11月3日閲覧。
  57. ^ README file from the Wayland source code repository”. freedesktop.org. 2021年11月3日閲覧。
  58. ^ Wayland Begins Porting Process To FreeBSD”. Phoronix.com (2013年2月16日). 2016年4月17日閲覧。
  59. ^ Adding Content protection support in drm-backend (!48) · Merge Requests · wayland / weston” (英語). GitLab. 2019年10月27日閲覧。
  60. ^ What does EGL do in the Wayland stack” (2012年3月10日). 2016年5月19日閲覧。
  61. ^ a b A Software-Based Pixman Renderer For Wayland's Weston”. Phoronix.com (2013年1月6日). 2016年4月17日閲覧。
  62. ^ Høgsberg, Kristian (2010年12月9日). “Blender3D & cursor clamping.”. 2021年11月3日閲覧。
  63. ^ a b [RFC weston remote access interface module]”. freedesktop.org (2013年10月18日). 2021年11月3日閲覧。
  64. ^ Maynard announcement” (2014年4月16日). 2014年4月16日閲覧。
  65. ^ a b Raspberry Pi Case Study”. Collabora. 2013年8月9日閲覧。
  66. ^ a b Wayland preview”. Raspberry Pi. 2013年8月9日閲覧。
  67. ^ a b Høgsberg, Kristian (2014年5月20日). “Wayland and Weston 1.5.0 is released”. wayland-devel mailing list. 2021年11月3日閲覧。
  68. ^ Ådahl, Jonas (2013年11月12日). “[RFC Common input device library]”. Wayland mailing list. 2021年11月3日閲覧。
  69. ^ libinput”. Freedesktop.org. 2014年5月21日閲覧。
  70. ^ Hutterer, Peter (8 October 2014). Consolidating the input stacks with libinput (Speech). The X.Org Developer Conference 2014. Bordeaux. 2020年1月14日閲覧
  71. ^ Hutterer, Peter (2015年2月22日). “libinput: the road to 1.0”. 2021年11月3日閲覧。
  72. ^ Libinput support added to Touchpad KCM” (2015年2月22日). 2021年11月3日閲覧。
  73. ^ Goede, Hans de (2015年2月23日). “Libinput now enabled as default xorg driver for F-22 workstation installs”. 2021年11月3日閲覧。
  74. ^ libinput - a common input stack for Wayland compositors and X.Org drivers” (2014年9月24日). 2016年4月17日閲覧。
  75. ^ Replacing xorg input - Drivers with libinput” (2015年2月1日). 2016年4月18日閲覧。
  76. ^ a b Dodier-Lazaro, Steve; Peres, Martin (9 October 2014). Security in Wayland-based Desktop Environments: Privileged Clients, Authorization, Authentication and Sandboxing! (Speech). The X.Org Developer Conference 2014. Bordeaux. 2016年4月18日閲覧
  77. ^ Changes/WaylandByDefault - Fedora Project Wiki”. fedoraproject.org. 2020年11月9日閲覧。
  78. ^ ReleaseNotes for Ubuntu 17.10”. Canonical. 2021年11月3日閲覧。
  79. ^ Ubuntu 18.04 will revert to long-in-the-tooth Xorg”. 2021年11月3日閲覧。
  80. ^ Bionic Beaver 18.04 LTS to use Xorg by default”. Canonical. 2021年11月3日閲覧。
  81. ^ Ubuntu 21.04 is here”. Canonical Ubuntu Blog. 2021年6月14日閲覧。
  82. ^ Release notes for Red Hat Enterprise Linux 8.0” (英語). Red Hat Customer Portal. 2020年12月25日閲覧。
  83. ^ NewInBuster - Debian Wiki”. wiki.debian.org. 2019年7月15日閲覧。
  84. ^ Slackware ChangeLogs”. Slackware Linux. 2020年2月26日閲覧。
  85. ^ Manjaro 20.2 Nibia got released”. 2020年12月3日閲覧。
  86. ^ Wayland Live OS Is Now Based On Debian Testing, Working KDE Wayland Support”. Phoronix. 2021年11月3日閲覧。
  87. ^ RebeccaBlackOS”. Sourceforge. 2021年11月3日閲覧。
  88. ^ Trying Out Wayland With Rebecca Black”. Phoronix. 2021年11月3日閲覧。
  89. ^ New Wayland Live CD Has A Lot Of Features”. Phoronix. 2021年11月3日閲覧。
  90. ^ Bassi, Emmanuele (31 January 2011). "ANNOUNCE: Clutter 1.6.0 (stable)". clutter-announce (Mailing list).
  91. ^ Clutter & Cogl Wayland update” (2011年12月16日). 2016年3月9日閲覧。 “The Clutter client side support is basically complete”
  92. ^ Bassi, Emmanuele (24 September 2013). "ANNOUNCE: Clutter 1.16.0 (stable)". clutter-announce (Mailing list).
  93. ^ Wayland – Enlightenment”. 2013年3月29日時点のオリジナルよりアーカイブ。2013年3月6日閲覧。
  94. ^ GTK Roadmap”. 2016年3月8日閲覧。
  95. ^ Lantinga, Sam (2014年3月8日). “SDL 2.0.2 RELEASED!”. SDL Project. 2014年3月18日閲覧。
  96. ^ SDL 2.0.4 Was Quietly Released Last Week With Wayland & Mir By Default”. Phoronix.com (2016年1月9日). 2016年4月17日閲覧。
  97. ^ Berglund, Camilla (2014年4月8日). “Implementation for Wayland · Issue #106 · glfw/glfw · GitHub”. 2014年8月14日閲覧。
  98. ^ FreeGLUT: Implement initial Wayland support”. GitHub. 2021年11月3日閲覧。
  99. ^ GNOME Initiatives - Wayland”. GNOME Wiki. 2016年3月8日閲覧。
  100. ^ KWin/Wayland”. KDE Community Wiki. 2016年3月8日閲覧。
  101. ^ Enlightenment - Wayland”. Enlightenment.org. 2016年3月8日閲覧。
  102. ^ Enlightenment DR 0.20.0 Release”. Enlightenment.org. 2016年3月8日閲覧。
  103. ^ The Enlightenment of Wayland”. FOSDEM.org. 2016年3月8日閲覧。
  104. ^ ReleasePlanning/FeaturesPlans”. GNOME Project. 2015年5月31日閲覧。
  105. ^ A Look At The Exciting Features/Improvements Of GNOME 3.22”. Phoronix. 2021年11月3日閲覧。
  106. ^ GNOME Lands Mainline NVIDIA Wayland Support Using EGLStreams”. Phoronix. 2021年11月3日閲覧。
  107. ^ KDE 4.11 Beta Released, Works On Wayland”. Phoronix.com (2013年6月14日). 2016年4月17日閲覧。
  108. ^ Plasma's Road to Wayland” (2014年7月25日).[リンク切れ]
  109. ^ Four years later” (2015年6月29日). 2016年4月17日閲覧。
  110. ^ Dawe, Liam. “KDE Plasma 5.20 will properly support screen recording on Wayland and more”. gamingonlinux.com. 2020年9月10日閲覧。
  111. ^ Wayland in Fedora Update”. blogs.gnome.org (2014年7月3日). 2016年4月17日閲覧。
  112. ^ VNC® Wayland Developer Preview” (2014年7月8日). 2014年7月14日時点のオリジナルよりアーカイブ。
  113. ^ RealVNC Wayland developer preview email”. freedesktop.org (2014年7月9日). 2021年11月3日閲覧。
  114. ^ Maliit Status Update”. Posterous (2013年4月2日). 2013年5月17日時点のオリジナルよりアーカイブ。2013年10月14日閲覧。
  115. ^ More Maliit Keyboard Improvements: QtQuick2”. Murray's Blog (2013年4月2日). 2013年10月14日閲覧。
  116. ^ Maliit under Wayland”. 2013年6月11日時点のオリジナルよりアーカイブ。2013年9月14日閲覧。
  117. ^ wlterm”. Freedesktop.org. 2014年7月8日閲覧。
  118. ^ a b Hillesley, p. 3.
  119. ^ Eclipse now runs on Wayland” (2014年8月18日). 2021年11月3日閲覧。
  120. ^ Vulkan 1.0 specification released with day-one support for Wayland” (2016年2月16日). 2021年11月3日閲覧。
  121. ^ Wayland Backend DRM | IVI Layer Management”. GENIVI Alliance. 2014年2月1日時点のオリジナルよりアーカイブ。2013年7月15日閲覧。
  122. ^ The First Jolla Smartphone Runs With Wayland”. LinuxG.net (2013年7月14日). 2013年10月8日閲覧。
  123. ^ VDVsx [@VDVsx] (2013年7月13日). "#sailfishos main components diagram. #Qt5 #Wayland #JollaHQ #Akademy". X(旧Twitter)より2021年11月3日閲覧
  124. ^ Jolla [@JollaHQ] (2013年7月13日). "@faenil @PeppeLaKappa @VDVsx our first Jolla will ship with wayland, yes". X(旧Twitter)より2021年11月3日閲覧
  125. ^ IVI/IVI Setup”. Tizen Wiki. 2013年4月8日閲覧。
  126. ^ Amadeo, Ron. “The Samsung Z4 is Tizen's new flagship smartphone”. Ars Technica. 2017年5月13日閲覧。
  127. ^ Premature publicity is better than no publicity” (2008年11月3日). 2016年4月6日閲覧。
  128. ^ Interview: Kristian Høgsberg”. FOSDEM Archive (2012年1月29日). 2016年3月8日閲覧。
  129. ^ a b Wayland - Beyond X”. The H Open. Heise Media UK (2012年2月13日). 2016年3月8日閲覧。
  130. ^ Høgsberg, Kristian. “Wayland – A New Display Server for Linux”. Linux Plumbers Conference, 2009. 2017年8月11日時点のオリジナルよりアーカイブ。
  131. ^ The Linux graphics stack from X to Wayland”. Ars Technica (2011年3月22日). 2016年4月17日閲覧。
  132. ^ Wayland Becomes A FreeDesktop.org Project”. Phoronix.com (2010年10月29日). 2016年4月17日閲覧。
  133. ^ Høgsberg, Kristian (2010年10月29日). “Moving to freedesktop.org”. 2013年7月31日閲覧。
  134. ^ Høgsberg, Kristian (3 December 2008). "Wayland is now under MIT license". wayland-display-server (Mailing list).
  135. ^ Høgsberg, Kristian (22 November 2010). "Wayland license clarification". wayland-devel (Mailing list).
  136. ^ Høgsberg, Kristian (19 September 2011). "License update". wayland-devel (Mailing list).
  137. ^ Munk, Carsten (2013年4月11日). “Wayland utilizing Android GPU drivers on glibc based systems, Part 1”. Mer Project. 2013年7月3日閲覧。
  138. ^ Munk, Carsten (2013年6月8日). “Wayland utilizing Android GPU drivers on glibc based systems, Part 2”. Mer Project. 2013年7月3日閲覧。
  139. ^ Jolla Brings Wayland Atop Android GPU Drivers”. Phoronix.com (2013年4月11日). 2016年4月17日閲覧。
  140. ^ Wayland”. Wayland.freedesktop.org. 2013年7月15日閲覧。
  141. ^ Høgsberg, Kristian (2012年2月9日). “[ANNOUNCE Wayland and Weston 0.85.0 released]”. wayland-devel mailing list. 2021年11月3日閲覧。
  142. ^ Høgsberg, Kristian (2012年7月24日). “Wayland and Weston 0.95.0 released”. wayland-devel mailing list. 2021年11月3日閲覧。
  143. ^ Høgsberg, Kristian (2012年10月22日). “Wayland and Weston 1.0”. wayland-devel mailing list. 2021年11月3日閲覧。
  144. ^ Wayland's 1.0 milestone fixes graphics protocol”. The H Open. Heise Media UK (2012年10月23日). 2016年4月17日閲覧。
  145. ^ Wayland 1.1 Officially Released With Weston 1.1”. Phoronix.com (2013年4月16日). 2016年4月17日閲覧。
  146. ^ Høgsberg, Kristian (2013年4月15日). “1.1 Released”. wayland-devel mailing list. 2021年11月3日閲覧。
  147. ^ Wayland 1.2.0 Released, Joined By Weston Compositor”. Phoronix.com (2013年7月13日). 2016年4月17日閲覧。
  148. ^ Høgsberg, Kristian (2013年7月12日). “Wayland and Weston 1.2.0 released”. wayland-devel mailing list. 2021年11月3日閲覧。
  149. ^ Høgsberg, Kristian (2013年10月11日). “Wayland and Weston 1.3 releases are out”. wayland-devel mailing list. 2021年11月3日閲覧。
  150. ^ Wayland and Weston 1.6.0 released”. wayland-devel mailing list (2014年9月19日). 2021年11月3日閲覧。
  151. ^ [ANNOUNCE wayland 1.7.0]”. wayland-devel mailing list (2015年2月14日). 2021年11月3日閲覧。
  152. ^ [ANNOUNCE weston 1.7.0]”. wayland-devel mailing list (2015年2月14日). 2021年11月3日閲覧。
  153. ^ [ANNOUNCE wayland 1.8.0]”. wayland-devel mailing list (2015年6月2日). 2021年11月3日閲覧。
  154. ^ [ANNOUNCE weston 1.8.0]”. wayland-devel mailing list (2015年6月2日). 2021年11月3日閲覧。
  155. ^ Harrington, Bryce (21 September 2015). "[ANNOUNCE] wayland 1.9.0". wayland-devel (Mailing list).
  156. ^ Harrington, Bryce (21 September 2015). "[ANNOUNCE] weston 1.9.0". wayland-devel (Mailing list).
  157. ^ Harrington, Bryce (17 February 2016). "[ANNOUNCE] wayland 1.10.0". wayland-devel (Mailing list).
  158. ^ Harrington, Bryce (17 February 2016). "[ANNOUNCE] weston 1.10.0". wayland-devel (Mailing list).
  159. ^ Nestor, Marius (2016年2月18日). “Wayland 1.10 Display Server Officially Released, Wayland 1.11 Arrives in May 2016”. Softpedia. 2021年11月3日閲覧。
  160. ^ Wayland 1.10 Officially Released”. Phoronix.com (2016年2月16日). 2016年4月17日閲覧。
  161. ^ Harrington, Bryce (1 June 2016). "[ANNOUNCE] wayland 1.11.0". wayland-devel (Mailing list). 2016年6月1日閲覧
  162. ^ Harrington, Bryce (1 June 2016). "[ANNOUNCE] weston 1.11.0". wayland-devel (Mailing list). 2016年6月1日閲覧
  163. ^ Harrington, Bryce (21 September 2016). "[ANNOUNCE] wayland 1.12.0". wayland-devel (Mailing list). 2016年9月21日閲覧
  164. ^ Harrington, Bryce (21 September 2016). "[ANNOUNCE] weston 1.12.0". wayland-devel (Mailing list). 2016年9月21日閲覧
  165. ^ Harrington, Bryce (21 February 2017). "[ANNOUNCE] wayland 1.13.0". wayland-devel (Mailing list). 2017年4月30日閲覧
  166. ^ Harrington, Bryce (25 February 2017). "[ANNOUNCE] weston 2.0.0". wayland-devel (Mailing list). 2017年4月30日閲覧
  167. ^ Harrington, Bryce (8 August 2017). "[ANNOUNCE] wayland 1.14.0". wayland-devel (Mailing list). 2018年3月25日閲覧
  168. ^ Harrington, Bryce (8 August 2017). "[ANNOUNCE] weston 3.0.0". wayland-devel (Mailing list). 2018年3月25日閲覧
  169. ^ Foreman, Derek (9 April 2018). "[ANNOUNCE] wayland 1.15.0". wayland-devel (Mailing list). 2018年4月15日閲覧
  170. ^ Foreman, Derek (9 April 2018). "[ANNOUNCE] weston 4.0.0". wayland-devel (Mailing list). 2018年4月15日閲覧
  171. ^ Foreman, Derek (24 August 2018). "[ANNOUNCE] wayland 1.16.0". wayland-devel (Mailing list). 2018年11月30日閲覧
  172. ^ Foreman, Derek (24 August 2018). "[ANNOUNCE] weston 5.0.0". wayland-devel (Mailing list). 2018年11月30日閲覧
  173. ^ Foreman, Derek (28 March 2019). "[ANNOUNCE] wayland 1.17.0" (Mailing list). 2019年6月17日閲覧
  174. ^ Foreman, Derek (21 March 2019). "[ANNOUNCE] weston 6.0.0" (Mailing list). 2019年6月17日閲覧
  175. ^ Ser, Simon (11 February 2020). "[ANNOUNCE] wayland 1.18" (Mailing list). 2020年2月12日閲覧
  176. ^ Ser, Simon (23 August 2019). "[ANNOUNCE] weston 7.0.0" (Mailing list). 2019年10月22日閲覧
  177. ^ https://lists.freedesktop.org/archives/wayland-devel/2020-January/041147.html
  178. ^ https://lists.freedesktop.org/archives/wayland-devel/2020-September/041595.html

関連項目

外部リンク