Wayland
![]() | |
![]() Waylandのデモ | |
作者 | Kristian Høgsberg |
---|---|
開発元 | freedesktop.orgその他 |
初版 | 2008年9月30日 (15年前) (2008-09-30)[1] |
最新版 | Wayland: 1.21, Weston: 11.0.1 / 2022年6月30日 (2年前) (2022-06-30) |
リポジトリ |
![]() |
プログラミング 言語 | C |
対応OS | 公式: Linux 非公式: NetBSD, FreeBSD, DragonFly BSD[2] |
サポート状況 | 正式公開済み |
種別 | ディスプレイサーバ |
ライセンス | MIT License[3] |
公式サイト | wayland![]() |
テンプレートを表示 |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Wayland_display_server_protocol.svg/220px-Wayland_display_server_protocol.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Linux_Graphics_Stack_2013.svg/220px-Linux_Graphics_Stack_2013.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Free_and_open-source-software_display_servers_and_UI_toolkits.svg/220px-Free_and_open-source-software_display_servers_and_UI_toolkits.svg.png)
Wayland は、ディスプレイサーバとクライアント間の通信方法を記述した通信プロトコルである。 また、そのプロトコルをCで実装したライブラリでもある。 Waylandプロトコルを使用したディスプレイサーバをWaylandコンポジタと呼ぶ。 これは、このディスプレイサーバがコンポジット型ウィンドウマネージャの機能も持つためである。
Waylandは当初、Kristian Høgsberg率いるボランティアによって、フリーかつオープンソースコミュニティ主導のプロジェクトとして開発されていた。 このプロジェクトは、Linuxやその他のUnix系OSにおいて、X Window Systemをモダンで安全で[4][5][6][7]よりシンプルなものに置き換えることを目的としている。プロジェクトのソースコードは、パーミッシブ・ライセンスのひとつであるMITライセンスで公開されている[8][3]。
成果の一部として、WaylandプロジェクトはWestonと呼ばれるWaylandコンポジタのリファレンス実装も開発した。
概要
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Wayland_display_server_protocol.svg/350px-Wayland_display_server_protocol.svg.png)
- Linuxカーネルのevdevモジュールは、イベントを受けとり、Waylandコンポジタへ送る。
- Waylandコンポジタはシーングラフを見渡し、どのウィンドウがそのイベントを受け取るべきかを決定する。 シーングラフは画面に表示されているものに対応しており、Waylandコンポジタはイベントが適用されるシーングラフ内の要素との変換が分かる。そのため、Waylandコンポジタは逆変換することで、正しいウィンドウが分かり画面上の座標をウィンドウ内の座標へ変換することができる。ウィンドウに適用できる変換は、コンポジターが適用できることだけに限られ、入力イベントに対して逆変換できることに限られます。
- Xの場合、クライアイントはイベントを受け取ると、反応してUIを更新する。しかし、Waylandの場合、クライアントはEGLを通じてレンダリングし、コンポジタへ更新された範囲を通知するために要求を送るだけである。
- Waylandコンポジタはクライアントから変更箇所のリクエストを集め、スクリーンを再構成する。それからコンポジタは、KMS(英語版)による画面の再描画をスケジューリングするため、ioctlを直接発行する。
コンポジット型ウィンドウマネージャがアプリケーションやグラフィクスハードウェアと直接通信できる方法を、Waylandが提供する。具体的には、各アプリケーションは自身のバッファに画像を描画し、ウィンドウマネージャがディスプレイサーバとしてそれらバッファを合成して、ディスプレイ上に各アプリケーションウィンドウを作り出す。これは、コンポジット型ウィンドウマネージャとX Window Systemを一緒に使う従来の方法より効率的かつシンプルである[9]。
Waylandはグラフィクス周りのみに特化しており、入力ハードウェアとの通信には他のライブラリを使用することを想定している。
Waylandディスプレイサーバプロジェクトは、Red Hatの開発者であったKristian Høgsbergによって、2008年に開始された[10]。
2010年頃、Linuxデスクトップのグラフィックスは、「中心にあるXサーバとやり取りするためだけの山積みのレンダリングインタフェース」を持つ状態から、"XやWaylandのようなウィンドウシステムを脇に退けて"、Linuxカーネルやそのコンポーネント (たとえばダイレクト・レンダリング・インフラストラクチャ(DRI)、ダイレクト・レンダリング・マネージャ(DRM)(英語版)を"間に置く"ように移行した。その結果、"グラフィックシステムはシンプルになり、より柔軟性があり、より良いパフォーマンスを発揮する"ようになった[11]。
Høgsbergは、多くの最近のプロジェクトと同様にXへの拡張(英語版)を追加することもできたが、"クライアントとハードウェアの間のホットなパスからXを[締め出す]"ことを採用した。 その理由について、プロジェクトのFAQには以下のとおり記載されている[8]。
今や異なるのは、多くのインフラストラクチャがXサーバからカーネル(メモリ管理、コマンドスケジューリング、モードセッティング(英語版)やライブラリ(cairo, pixman, FreeType, Fontconfig, Pango等)に移行したことだ。そして中央サーバプロセスでしなければならないことは、ほとんど残っていない。一方、[Xサーバ]は、Xプロトコルで会話することをサポートしなければならず、膨大な量の機能がある。それらの機能はもはや誰も使わない...。 それらの機能は、コードテーブル、グリフのラスタライズとキャッシング、XLFD (マジでXLFD!)、コアレンダリングAPI全体がある。コアレンダリングAPIは、点線、ポリゴン、大きな円弧、その他多くの1980年代スタイルの原始的なグラフィックを描くためのものである。
多くのことに対して、我々はXRandR、XRender、COMPOSIT(英語版)といった拡張を追加することでX.orgサーバをモダンにし続けてきた...。Waylandによって、我々はXサーバとすべてのレガシーテクノロジーをオプションへと移行できる。Xサーバがコアなレンダリングシステムから互換性のあるオプションに置き換わるまでは長い時間がかかるが、計画しなければ達成はできないのだ。
Waylandの初期バージョンでは、ネットワーク透過性(英語版)を提供していなかった。 しかし、Høgsbergは、2010年にネットワーク透過性が可能であることを記した[12]。 それは、2011年のGoogleサマーコードプロジェクトとして挑戦されたが成功しなかった[13]。 Adam Jacksonは、(VNCのような)"ピクセルスクレイピング"や (RDP、SPICE(英語版) X11のように)ネットワーク越しに"レンダリングコマンドストリーム"を送る方法で、Waylandアプリケーションへのリモートアクセスを目論んだ[14]。 2013年初頭、Høgsbergは、本物のコンポジタへ圧縮画像を送るプロキシWaylandサーバーを使ってネットワーク透過性の実験を行った[15][16]。 2017年8月、GNOMEはWayland下で最初のピクセルスクレイピングVNCサーバの実装を提示した。
ソフトウェア アーキテクチャ
プロトコル アーキテクチャ
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Wayland_protocol_architecture.svg/350px-Wayland_protocol_architecture.svg.png)
Waylandプロトコルはクライアントサーバモデルである。クライアントはピクセルバッファを画面上へ表示するよう要求するグラフィカルアプリケーションであり、サーバ(コンポジタ)はこれらのバッファの表示を制御するサービスプロバイダである。
Waylandリファレンス実装は、2層のプロトコルとして設計された。すなわち[17]、
- 下位レイヤあるいはワイヤプロトコル: 関係する2つのプロセス—クライアントとコンポジタ—の間のプロセス間通信と、それらが内部で変えるデータのマーシャリング (英語版) を扱う。
- その上の高位レイヤ: クライアントとコンポジタがウィンドウシステムの基本機能を実現するために交換する情報を扱う。このレイヤは、"非同期オブジェクト指向プロトコル"として実装された[18]:9。
下位レイヤはCで手作業で書かれたが、高位レイヤはXMLフォーマットで書かれたプロトコルの記述から自動生成された[19]。 このXMLで書かれたプロトコルの記述が変更されたときは、いつでもプロトコルを実装したCのソースコードを再生成できる。これによって、非常にフレキシブルで、拡張性が高く、エラーを防止したプロトコルになる。
Waylandプロトコルのリファレンス実装は、2つのライブラリ、すなわち、Waylandクライアントによって使われるlibwayland-client
ライブラリと、Waylandコンポジタによって使われるlibwayland-server
ライブラリである[18]:57。
プロトコルの概要
Waylandプロトコルは、"非同期オブジェクト指向プロトコル"として記述されている[18]:9。オブジェクト指向とは、コンポジタによって提供されるサービスが、同じコンポジタ上に存在する一連のオブジェクトとしてもたらされることを意味する。 各オブジェクトはインタフェースを持つ。インタフェースは、名前と、いくつかのメソッド(リクエストと呼ばれる)、いくつかの関連したイベントを持つ。それぞれのリクエストとイベントは0以上の引数を持ち、それぞれに名前とデータ型がある。プロトコルが非同期とは、リクエストが、同期した返信やACKを待つ必要がないことを意味する。これによりラウンドトリップタイムを避け、パフォーマンスが改善する。
Waylandクライアントは、あるオブジェクトがサポートしているリクエストを、そのオブジェクトへリクエストできる(メソッドを呼び出せる)。クライアントは、必要とされるデータをリクエストの引数として提供しなければならない。これが、クライアントがコンポジタからサービスを要求する方法である。次に、コンポジタは、イベントを(おそらく引数付きで)発行するため、オブジェクトによって情報をクライアントへ返す。これらのイベントは、あるリクエストに対する反応や、あるいは非同期の (入力デバイスからのイベントといった)内部イベントや状態変化としてコンポジタによって発行される。エラー状態もコンポジタによってイベントとして通知される[18]:9。
オブジェクトへリクエストを発行できるクライアントのために、最初に、オブジェクトを識別するために使うID番号をサーバに伝える必要がある[18]:9。コンポジタには2種類のオブジェクトがある。グローバルオブジェクトと、非グローバルオブジェクトである。グローバルオジェクトは、生成時(そして廃棄時)にコンポジタによってクライアントへ通知される。一方、非グローバルオブジェクトは、通常、すでに機能の一部として存在している他のオブジェクトによって生成される[20]。
インタフェースとその要求およびイベントは、Waylandプロトコルを定義する中心となる要素である。プロトコルの各バージョンは、どんなWaylandコンポジタにもあると期待されるインタフェースと、その要求およびイベントの集合を含んでいる。オプションとして、Waylandコンポジタは新しいリクエストとイベントをサポートする独自のインタフェースを定義して実装するかもしれない。それによって、コアプロトコル以上の機能へ拡張することができる[18]:10。プロトコルの違いを管理するため、それぞれのインタフェースは名前に加えて"バージョン番号"属性を持っている。この属性により、同じインタフェースの派生版を区別できる。 各Waylandコンポジタは、どのインタフェースが使用可能かだけでなく、それらのインタフェースがサポートしているバージョンも公開する[18]:12。
Waylandコアインタフェース
現在のバージョンのWaylandプロトコルのインタフェースは、Waylandソースコードにあるprotocol/wayland.xmlで定義されている。これはXMLファイルであり、現在のバージョンに存在するインタフェースが、リクエスト、イベント、その他の属性と共にリストアップされている。このインタフェース集合は、どのWaylandコンポジタも最低限必要とされるインタフェースである。
いくつかのWaylandプロトコルでの最も基本的なインタフェースは、以下のとおりである[18]。
- 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オブジェクトを要求する[20]。
Wayland拡張インタフェース
Waylandコンポジタは、自身の追加インタフェースを定義して公開することができる[18]:10。この特徴によって、コアインタフェースによって提供される基本機能を超えてプロトコルを拡張できる。そしてこれは、Waylandプロトコル拡張を実現する標準的な方法になった。コンポジタは、特化したあるいはユニークな特徴を提供するために、カスタムインタフェースを追加できる。WaylandリファレンスコンポジタであるWestonは、新しいコンセプトやアイデアのためのテストベンチとして、あたらしい実験的なインタフェースを実現するためにカスタムインタフェースを使用した。それらのコンセプトやアイデアは、その後にコアプロトコルの一部になった(たとえばwl_subsurfaceインタフェースは、Wayland 1.4で追加された)[21]。
コアプロトコルの拡張プロトコル
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)現在[update], 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は、常に別のサーフェイスのための一時的なものであり、暗黙的なグラブを持つ[22]。
IVI-Shellプロトコル
IVI-Shellは、Waylandコアプロトコルの拡張で、車内エンターテインメント (IVI) デバイス[23]をターゲットにしている。
レンダリングモデル
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/The_Linux_Graphics_Stack_and_glamor.svg/350px-The_Linux_Graphics_Stack_and_glamor.svg.png)
Waylandプロトコルは、レンダリングAPIを含んでいない[18]:7[8][24][25]。その代わり、Waylandはダイレクトレンダリングモデルを採用している。ダイレクトレンダリングモデルでは、クライアントはウィンドウコンテンツをコンポジタと共有できるバッファへ描画しなければならない[18]:7。そのため、クライアントはCairoやOpenGLなどのライブラリを使って、自分自身ですべてをレンダリングすることも選択できる。あるいは、QtやGTKといった、Waylandをサポートする高位のウィジェットライブラリのレンダリングエンジンに頼ることもできる。クライアントは、特定のタスクをこなすために、オプションとしてその他の特化したライブラリを使用することもできる。たとえばフォントレンダリング(英語版)のためにFreeTypeを使用できる。
レンダリングされたウィンドウコンテンツの結果(バッファ)は、wl_bufferオブジェクトに格納される。このオブジェクトのデータ型は、実装依存である。コンテンツデータがクライアントとコンポジタとの間で共有可能でなければならないことだけが唯一要求される。もしクライアントがソフトウェア(CPU)レンダラを使用し、その結果がシステムメモリに格納されるなら、クライアントとコンポジタは、バッファ間のやり取りを余分なコピーなしに実現するため、共有メモリを使用できる。Waylandプロトコルはすでにこの種の共有メモリバッファに何も追加することなしに対応している。共有メモリバッファは、wl_shmおよびwl_shm_poolインタフェースによって実現できる[18]:11, 20-21。この方法の欠点は、コンポジタはそれを表示するために追加の作業(通常、共有データのGPUへのコピー)を必要とする可能性があることである。これにより、グラフィックパフォーマンスは低下する。
最も一般的なケースでは、クライアントがOpenGL、OpenGL ES、Vulkanといったハードウェア(GPU)アクセラレーションのためのAPIを使って、ビデオメモリバッファへ直接レンダリングする。クライアントとコンポジタは、このGPU空間のバッファを参照するための特別なハンドラを用いて共有できる[26]。この方法は、コンポジタに余計なデータコピーをしないようにする。結果として、グラフィックパフォーマンスは向上し、よりよい方法である。コンポジタはAPIクライアントとして、同じハードウェアアクセラレーションAPIを使って、ディスプレイへ描画する最終的なシーンのコンポジションをかなり最適化できる。
レンダリングが共有バッファ内で完成したとき、Waylandクライアントはバッファのレンダリングされたコンテンツをディスプレイに表示するため、コンポジタを導くべきである。そのために、クライアントはレンダリングされたコンテンツを格納するバッファオブジェクトをサーフェイスオブジェクトに紐付ける。そして"commit"リクエストをサーフェイスに送り、バッファの制御をコンポジタヘ転送する[17]。それから、クライアントは、もしまた別のフレームをレンダリングするためにバッファを再利用するなら、コンポジタがバッファを開放するのを待つ(イベントによって通知される)あるいは新しいフレームをレンダリングするため別のバッファを使用し、レンダリングが完了した時にこの新しいバッファをサーフェイスに紐付け、そのコンテンツをコミットすることもできる[18]:7。数個の関連するバッファやその運用を含めて、レンダリングに使用される方法は、全体的にクライアントの制御下にある[18]:7。
他のウィンドウシステムとの比較
WaylandとXとの違い
WaylandとXとの間には、パフォーマンス、コードの保守性、セキュリティに関して、いくつかの違いがある[27]。
- アーキテクチャ
- Xのディスプレイサーバとコンポジット型ウィンドウマネージャは分離している一方、Waylandはディスプレイサーバとコンポジタを単一の機能として統合している[28][24]。また、Waylandは、ウィンドウマネージャの仕事のいくつかを組み込んでいる。一方、Xは、クライアント側の仕事として分離されている[29]。
- コンポジット
- Xではコンポジットはオプションであるが、Waylandでは必須である。Xではコンポジタはピクセルデータを"能動的"に取り出さなければならないため遅延が生まれる。Waylandでは、コンポジタはピクセルデータを"受動的"にクライアントから直接受け取る[30]。
- レンダリング
- Xサーバは自身でレンダリングができ、さらにクライアントによって送られたレンダリングされたウィンドウを表示するために構築することもできる。対して、WaylandはレンダリングのためのAPIは表に出しておらず、そうした仕事を(フォント、ウィジェット、等のレンダリングを含めて)クライアントに委譲している[28][24]。ウィンドウの装飾は、(たとえば、グラフィカルツールキットを使って)クライアント側でレンダリングできるし、(コンポジタによって)サーバサイドでもできる[31]。
- セキュリティ
- Waylandは、各ウィンドウの入出力から独立しており、入力・出力それぞれの機密性、整合性、および可用性を実現する。オリジナルのXの設計では、これらの重要なセキュリティの特徴が欠けており[5][6][7]、いくつかの拡張が、それを軽減すべく開発されてきた[32][33][34]。また、Waylandは、コードの大部分がクライアント側で実行されており、「root」権限で実行する必要のあるコードが少なくなり、セキュリティが向上する[5]。一方、複数の一般的なLinuxディストリビューションでは、現在はXをroot権限なしに実行できる[35][36][37][38]。
- プロセス間通信
- Xサーバは、Xクライアント同士の基本的な通信方法を提供する。後にICCCMによって拡張された。このXクライアント-クライアント通信は、ウィンドウマネージャによって使われる。また、Xセッション(英語版)、ウィンドウの選択とドラッグアンドドロップ(英語版)、その他の機能を実現する。Waylandコアプロトコルは、Waylandクライアント間の通信をサポートしない。対応する機能は(もし必要であれば)(KDEやGNOMEといった)デスクトップ環境や(たとえばOSのプロセス間通信といった)サードパーティによって実現される。
- ネットワーク
- Xウィンドウシステムは、ネットワーク越しにコア部分が実行されるよう設計されたアーキテクチャである。Waylandは、それ自身ではネットワーク透過性を持たない[8]。しかし、コンポジタは、リモートディスプレイを実現するためにどんなリモートデスクトッププロトコルも実現できる。加えて、Waylandイメージストリーミングとイメージ圧縮の研究がある。この研究は、Virtual Network ComputingVNCのようにリモートフレームバッファアクセスを実現し得る[16]。
Xとの互換性
XWaylandは、Waylandクライアントとして動作するXサーバである。XWaylandによって、Waylandコンポジタ環境でネイティブのX11クライアントアプリケーションを表示させることができる[39]。これは、XQuartzがXアプリケーションをmacOSのネイティブウィンドウシステムで動かす方法に似ている。XWaylandのゴールは、移植されていないアプリケーションを実行する方法を提供することで、XウィンドウシステムからWayland環境への移行を促進することである。XWaylandは、X.Orgサーババージョン1.16に取り込まれた[40]。
Qt5やGTK3といったウィジェット・ツールキットは、ユーザーがアプリケーションをX上あるいはWayland上で実行させるかに関わらず、ユーザがローダを選択することで、グラフィカルバックエンドを実行時に変更できる[41]。Qt5は、この効果のために-platform
コマンドラインオプション[42]を提供している。一方、GTK 3は、GDK_BACKEND
環境変数を設定することで、ユーザがGDK(英語版)バックエンドを使用するか選択可能にしている[41][43]。
Waylandコンポジタ
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Window_%28windowing_system%29.svg/350px-Window_%28windowing_system%29.svg.png)
Waylandディスプレイサーバプロトコルを実装したディスプレイサーバは、Waylandコンポジタとも呼ばれる。なぜなら、それらはコンポジット型ウィンドウマネージャの仕事もこなすからである。
- Weston – Waylandコンポジタのリファレンス実装である。Westonは、クライアントサイド・デコレーションを実現する。
- Lipstick – Waylandコンポジタを実装したモバイルグラフィカルシェルフレームワークである。これは、Sailfish OS(英語版), Nemo Mobile(英語版), AsteroidOSで使われる[44]。
- Enlightenment は、バージョン0.20から、完全にWaylandをサポートしている[45]。しかし、完全なWaylandコンポジタになるための作業は続けられている[46]。
- KWin は、2021年現在、ほとんど完全にWaylandサポートを完了した[47]。
- Mutter は、(2013年9月に)GNOME 3.9にWaylandを統合するためのブランチを切った状態である[48]。
- Clayland(英語版) – Clutterを用いたWaylandコンポジタのシンプルな例である。
- Westeros – Waylandコンポジタライブラリである。Westerosによって、アプリケーションが自身のWayland表示を作ることが可能になる。それによりサードパーティアプリケーションのネストと埋め込みを可能にする[49]。
- wlroots – モジュラWayland実装である。wlrootsは、他のコンポジタ、とくにSwayのためのベースとして関数である[50][51]。
- Sway – タイル型Waylandコンポジタである。また、X11のためのi3ウィンドウマネージャの置き換えである[52]。
- gamescope – SteamOSの一部である。初期のsteamcompmgrの置き換えである[53]。
Weston
Westonは、Waylandコンポジタのリファレンス実装であり[54] Waylandプロジェクトによって開発されている。Cで書かれており、MITライセンスの下で公開されている。Westonは、Linuxカーネルの特定の機能に依存しているため、公式にはLinuxのみサポートしている。Westonが依存している機能は、カーネルモードセッティング(英語版)、Graphics Execution Manager (GEM) 、udevである。これらは、他のUnixライクOSには実装されていない[55]。Linuxで実行するとき、evdev(英語版)によってハードウェアの入力を運用する。一方、バッファの運用は、ジェネリックバッファマネジメント (GBM) (英語版)に依存している。しかし、2013年にWestonのFreeBSD向けのプロトタイプportがアナウンスされた[56]。
Westonは、HDCPをサポートしている[57]。
Westonは、コンポジタとアプリケーション間のアプリケーションバッファを共有するためにGEMに依存している。ドックやパネルといった共通のデスクトップの機能のための"シェル"のプラグインシステムを含む[16]。クライアントは、自身のウィンドウボーダや装飾の描画に対して責任を負う。Westonは、レンダリングのためOpenGL ES[58]を使ったり、ソフトウェアレンダリング(英語版)のためにpixmanライブラリ[59]を使ったりすることができる。完全なOpenGL実装は使われない。なぜなら、現在のほとんどのシステムでは完全なOpenGLライブラリをインストールしている場合、GLXやその他のXウィンドウシステムサポートライブラリを依存関係のためにインストールしているからである[60]。
Westonのためのリモートアクセスインタフェースは、2013年10月にRealVNC(英語版)の従業員によって提案された[61]。
Maynard
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/Maynard_desktop.png/220px-Maynard_desktop.png)
Maynardは、グラフィカルシェルである。Maynardは、GNOME ShellがMutterへのプラグインとして書かれたことと同様に、Westonのプラグインとして書かれた[62]。 ラズベリーパイ財団は、Collabora(英語版)とのコラボレーションの中でMaynardをリリースし、パフォーマンスとメモリ使用量の改善に取り組んでいる[63][64]。
libinput
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Libinput_for_Wayland_compositors.svg/310px-Libinput_for_Wayland_compositors.svg.png)
入力デバイス(キーボード、ポインタ、タッチスクリーン等)を扱うためのWestonコードは、libinputと呼ばれる独立したライブラリとして分けられている。Weston 1.5に始めてマージされた[65][66]。
libinputは、Waylandコンポジタのための入力デバイスを扱う。また、汎用的なX.Orgサーバ入力ドライバを提供する。libinputの狙いは、入力イベントを扱う共通の方法でWaylandコンポジタ用の単一の実装を提供することである。これによりコンポジタ用にインプットコードをカスタムするための量を最小化する。libinputは、(udevを通じて)デバイスの検出[要説明]、デバイスの運用、入力デバイスイベントの処理と抽象化を提供する[67][68]。
libinputのバージョン1.0は、バージョン0.21の次にリリースされ、タブレット、ボタンセット、タッチパッドジェスチャのサポートを含んでいる。このバージョンは、安定したAPI/ABIを維持する(API/ABIが変わらない。)[69]。
GNOME/GTKおよびKDEフレームワーク5[70]が本流にしたことで、Fedora 22は、X.OrgのevdevとSynapticsドライバをlibinputに置き換えた[71]。
バージョン1.16では、X.Orgサーバがxf86-input-libinputと呼ばれるラッパによって、libinputライブラリをサポートした[72][73]。
Waylandセキュリティモジュール
Waylandセキュリティモジュールは、LinuxカーネルにおけるLinuxセキュリティモジュールインタフェースに似た位置づけである[74]。
(とくにアクセシビリティに関連した)いくつかのアプリケーションは、高い権限(特権)を必要とする。これらの権限は、Waylandコンポジタに共通して持たれる。現在[いつ?]、Waylandにおけるアプリケーションは、一般的にスクリーンショットや入力イベントの発行といったセンシティブな処理は、いずれも実行できない。Waylandの開発者達は、特権を付与されたクライアントを安全に処理するための実行可能な方法を積極的に探しており、クライアント用の特権を持たせるインタフェースを設計している。
Wayland Security Moduleは、コンポジタ内でのセキュリティの決定を、一元化されたセキュリティ決定エンジンに移譲する方法である[74]。
採用実績
Waylandプロトコルは、シンプルであるように設計された。そのためウィンドウシステム全体を構築するためには、追加のプロトコルやインタフェースを定義し実装することが必要である。2014年7月 (2014-07)現在[update]これらの追加のインタフェースは作成中である。そのため、ツールキットは既にWaylandを完全にサポートしている一方、グラフィカルシェルの開発者達は必要な追加のインタフェースを作るためにWaylandの開発者と協力している。
デスクトップLinuxディストリビューション
2020年現在[update]ほとんどのLinuxディストリビューションは、Waylandをインストール直後からサポートしている。特筆すべき例を挙げると:
- Fedora は、2016年11月22日にリリースしたバージョン25からWaylandをGNOME 3.22のデフォルトのデスクトップセッションとして使用開始した。X.OrgへはグラフィックドライバがWaylandをサポートできない場合のために戻れるようにしている[75]。Fedoraは、2021年4月27日のバージョン34から、KDEデスクトップのデフォルトのセッションとしてWaylandを使い始めた。
- Ubuntu は、Ubuntu 17.0 (Artful Aardvark) にてWaylandをデフォルトにした[76]。しかし、Ubuntu 18.04 LTSにてX.Orgに戻した。Waylandはまだスクリーン共有とリモートデスクトップアプリケーションに問題を抱えており、ウィンドウマネージャのクラッシュから回復できないためであった[77][78]。21.04で、Waylandを再度デフォルトにした[79]。
- Red Hat Enterprise Linux は、2019年5月7日にリリースしたバージョン8で、Waylandをデフォルトセッションにした[80]。
- Debian は、2019年7月6日にリリースしたバージョン10からGNOMEのデフォルトセッションとしてWaylandを使用している[81]。
- Slackware Linux 2020年2月20日に開発用としてWaylandを組み入れた[82]。-現在、最終的にバージョン15.0になる予定である。
- Manjaro は、2020年11月22日にリリースされたManjaro 20.2 (Nibia) のGnomeエディションでWaylandをデフォルトにした[83]。
特筆するアーリーアダプター:
- RebeccaBlackOSはDebianベースのLive USBである[84]。このLinuxディストリビューションは、コンピュータのメインOSを変更することなしに本物のWaylandデスクトップを試す便利な方法を提供する[85]。これは、2012年ころからWaylandを見せるために使われている[86][87]。
ツールキットサポート
Waylandをサポートするツールキットの一部を以下に列挙する。
- Clutter(英語版) は、完全にWaylandをサポートしている[88][89][90]。
- EFL は、セレクションを除き、完全にWaylandをサポートしている[91]。
- GTK 3.20 は、Waylandを完全にサポートしている[92]。
- Qt 5 は、Waylandを完全にサポートしている。そしてWaylandコンポジタとWaylandクライアントの両方を記述するために使われる。
- SDL はバージョン2.0.2でWaylandのサポートを開始した[93]。そして、バージョン2.0.4からデフォルトで有効である[94]。
- GLFW(英語版) 3.2 は、Waylandをサポートしている[95]。
- FreeGLUT(英語版) は、最初にWaylandをサポートした[96]。
デスクトップ環境
XからWaylandへの置き換えを進めているデスクトップ環境には、GNOME[97]、KDE Plasma 5[98]やEnlightenment[99]がある。
2015年11月、Enlightenment e20は、完全なWaylandサポートをアナウンスした[100][45][101]。
GNOME 3.20は、完全なWaylandセッションを持つ最初のバージョンである[102]。GNOME 3.22は、GTK, Mutter, GNOME Shellを通してWaylandのサポートを改善した[103]。GNOME 3.24は、Wayland下での商用NVidiaドライバをサポートした[104]。
先行してKWin 4.11 が実験的にWaylandをサポートしていた[105]が、KDE PlasmaによるWaylandのサポートは、Plasma 5のリリースまで遅れた[106]。 Plasma バージョン5.4は、Waylandセッションをサポートした最初のバージョンである[107]。2020年の間、KlipperはWaylandへ移行し、次の2020年10月にリリースされる次の5.20ではスクリーンキャスティングとレコーディングを改良することを目標としている[108]。
その他のソフトウェア
Waylandをサポートするその他のソフトウェアは以下である。
- Intelligent Input Bus は、Waylandでの動作をサポートされ、Fedora 22で準備ができた[109]。
- RealVNC(英語版) は、2014年7月にWayland開発者プレビューを公開した[61][110][111]。
- Maliit は、Wayland下で動作するインプットメソッドフレームワークである[112][113][114]。
- kmscon(英語版) は、wltermにてWaylandをサポートしている[115]。
- Mesa は、統合されてWaylandをサポートした[116]。
- Eclipse は、2014年のGSoCプロジェクトにてWayland上で動作するようにされた[117]。
- 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レンダリングの結果をウィンドウシステムへ表示する[118]。
- SPURV(英語版), Waylandを使用したLinuxディストリビューションで動くAndroidアプリケーション用の互換レイヤである。
携帯および組込ハードウェア
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/PostmarketOS_and_Weston_compositor_running_on_Motorola_Moto_G.jpg/200px-PostmarketOS_and_Weston_compositor_running_on_Motorola_Moto_G.jpg)
Waylandをサポートする携帯および組込ハードウェアは、以下である。
- postmarketOS
- GENIVIアライアンス(英語版): GENIVI in-vehicle infotainment (IVI)のための自動車産業コンソーシアムは、Waylandをサポートする[119]。
- Raspberry Pi: ラズベリーパイ財団は、Collabora(英語版)とのコラボレーションによって、Maynardをリリースした。またパフォーマンスとメモリ消費量の改善に取り組んでいる[63][64]。
- Jolla: Jollaから発売されたスマートフォンは、Waylandをサポートしている。Linux Sailfish OS(英語版)が他のベンダのハードウェアで使われる時、またはユーザによってAndroidデバイスにインストールされた時に標準として使われる[120][121][122]。
- Tizen: Tizenは、2.xまではin-vehicle infotainment (IVI) のセットアップでWaylandをサポートした[123]。3.0以降は、Waylandをデフォルトにした[124]。
履歴
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Linux_graphics_drivers_DRI_Wayland.svg/350px-Linux_graphics_drivers_DRI_Wayland.svg.png)
作者であるKristian Høgsbergは、LinuxのグラフィックとX.Orgの開発者であり、以前はAIGLXとDRI2で勤務していた。Red Hatで勤務しているとき、2008年の空いた時間のプロジェクトとしてWaylandの開発を始めた[125][126][127][128]。最初の目標は、"すべてのフレームは完璧である、つまり、それによってアプリケーションは、テアリング、ラグ、再描画、ちらつきを二度と目にしないよう十分にレンダリングをコントロールできる"システムであった。根底となるコンセプトが"固まった"とき、Høgsbergはちょうどマサチューセッツ州Wayland(英語版)の街を運転していたため、その名前がつけられた[127][129]。
2010年10月に、Waylandはfreedesktop.orgのプロジェクトになった[130][131]。移行の一環として、プロジェクトの中心となる議論と開発の場がGoogle グループからWayland-develメーリングリストに置き換えられた。
Waylandクライアントとサーバのライブラリは、当初MITライセンスの下でリリースされた[132]一方、コンポジタのリファレンス実装であるWestonといくつかのクライアントの例は、GNU General Public License version 2を使用した[133]。その後、すべてのGPLのコードは、"コードがリファレンス実装と実際のライブラリとの間をより容易に移動できるよう"MITライセンスに再ライセンスされた(英語版)[134]。2015年には、Waylandで使用していたライセンスの文言が、古いバージョンのMITライセンスとわずかに異なっていたことが見つかった。ライセンスの文言はX.Orgプロジェクトで使われてる(MIT Expat Licenseとして知られる)現在のバージョンのものへ更新された[3]。
Waylandは、DRI2サポートによってすべてのMesa 3D互換ドライバで動作し、[116]同様にHybrisプロジェクト(英語版)を通じてAndroidドライバで動作する。[135][136][137]
リリース
バージョン | リリース日 | 主な特徴 | |
---|---|---|---|
Wayland | Weston | ||
サポート終了:0.85 | 000000002012-02-09-00002012年2月9日[139] | 初回リリース。 | |
サポート終了:0.95 | 000000002012-07-24-00002012年7月24日[140] | APIの安定化を開始した。 | |
サポート終了:1.0 | 000000002012-10-22-00002012年10月22日[141][142] | WaylandクライアントAPIが安定になった。 | |
サポート終了:1.1 | 000000002013-04-15-00002013年4月15日[143][144] | ソフトウェアレンダリング[59]。FBDEV, RDPバックエンド。 | |
サポート終了:1.2 | 000000002013-07-12-00002013年7月12日[145][146] | WaylandサーバAPIが安定になった。 | 色の管理。Subsurfaces。Raspberry Piバックエンド。 |
サポート終了:1.3 | 000000002013-10-11-00002013年10月11日[147] | より多くのピクセルフォーマット。言語バインディングのサポート。 | libhybris(英語版)を通じてAndroidドライバのサポート。 |
サポート終了:1.4 | 000000002014-01-23-00002014年1月23日[21] | あたらしいwl_subcompositor および wl_subsurface インタフェース。 | マルチフレームバッファフォーマット。rootのないWestonに対するlogindのサポート。 |
サポート終了:1.5 | 000000002014-05-20-00002014年5月20日[65] | libinput。フルスクリーンシェル。 | |
サポート終了:1.6 | 000000002014-09-19-00002014年9月19日[148] | libinputをデフォルトにした。 | |
サポート終了:1.7 | 000000002015-02-14-00002015年2月14日[149][150] | Waylandプレゼンテーション拡張およびsurface rolesをサポート。IVIシェルプロトコル。 | |
サポート終了:1.8 | 000000002015-06-02-00002015年6月2日[151][152] | コアと生成されたプロトコルからヘッダを分離した。 | 再描画スケジューリング。名前付けされた出力。出力変換。Surface-shooting API. |
サポート終了:1.9 | 000000002015-09-21-00002015年9月21日[153][154] | ライセンスを更新。 | ライセンスを更新。新しいテストフレームワーク。Triple-head DRM コンポジタ。Linux_dmabuf 拡張。 |
サポート終了:1.10 | 000000002016-02-17-00002016年2月17日[155][156] | ドラッグアンドドロップ機能, グループ化されたポインタイベント。[157] | Video 4 Linux 2, タッチ入力, デバッグ改善[158]。 |
サポート終了:1.11 | 000000002016-06-01-00002016年6月1日[159][160] | 新しいバックアップ読み込みルーチン、新しいセットアップロジック。 | プロキシラッパー、共有メモリの変更、Doxygenにより生成された HTML 文書。 |
サポート終了:1.12 | 000000002016-09-21-00002016年9月21日[161][162] | デバッグ環境の改善。 | libweston および libweston-desktop。ポインタのロックと束縛。相対ポインタのサポート。 |
サポート終了:1.13 | 000000002017-02-24-00002017年2月24日[163][164] | WestonのABIが変わった。そのため、新バージョンは、1.13.0ではなく2.0.0になった。 | |
サポート終了:1.14 | 000000002017-08-08-00002017年8月8日[165][166] | Weston 3.0.0 が同時にリリースされた。 | |
サポート終了:1.15 | 000000002018-04-09-00002018年4月9日[167][168] | Weston 4.0.0 が同時にリリースされた。 | |
サポート終了:1.16 | 000000002018-08-24-00002018年8月24日[169][170] | Weston 5.0.0 が同時にリリースされた。 | |
サポート終了:1.17 | 000000002019-03-20-00002019年3月20日[171][172] | Weston 6.0.0 が同時にリリースされた。 | |
サポート終了:1.18 | 000000002019-08-02-00002019年8月2日[173][174] | Weston 7.0.0 が1ヶ月後にリリースされた。 | |
現行バージョン:1.19 | 000000002021-01-27-00002021年1月27日[175] | ||
Weston 8[176] | 000000002020-01-24-00002020年1月24日 | ||
Weston 9[177] | 000000002020-09-04-00002020年9月4日 | ||
凡例 サポート終了 サポート中 現行バージョン 最新プレビュー版 将来のリリース |
参考文献
- ^ Høgsberg, Kristian (30 September 2008). “Initial commit”. 3 January 2020閲覧。
- ^ “Wayland & Weston Compositor Ported To DragonFlyBSD - Phoronix”. www.phoronix.com. 3 November 2021閲覧。
- ^ a b c Harrington, Bryce (15 September 2015). "[ANNOUNCE] wayland 1.8.93". freedesktop.org (Mailing list).
- ^ “Wayland v/s Xorg : How Are They Similar & How Are They Different”. secjuice (16 June 2018). 10 September 2020閲覧。
- ^ a b c “XDC2012: Graphics stack security”. LWN.net (25 September 2012). 13 April 2016閲覧。
- ^ a b “Wayland Compositors - Why and How to Handle Privileged Clients!” (21 February 2014). 17 April 2016閲覧。
- ^ a b “Looking at the security of Plasma/Wayland” (23 November 2015). 18 April 2016閲覧。
- ^ a b c d “Wayland FAQ”. Wayland project. 9 May 2016閲覧。
- ^ “Wayland Architecture”. Wayland project (5 November 2010). 10 August 2011閲覧。
- ^ Michael Larabel (20 May 2009). “The State Of The Wayland Display Server”. Phoronix. 3 November 2021閲覧。
- ^ “LPC: Life after X”. LWN.net (5 November 2010). 17 April 2016閲覧。
- ^ Høgsberg, Kristian (9 November 2010). “Network transparency argument”. 3 November 2021閲覧。 “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.”
- ^ “Remote Wayland Server Project: Does It Work Yet?”. Phoronix.com (18 August 2011). 17 April 2016閲覧。
- ^ Jackson, Adam (9 November 2010). “[Re:] Ubuntu moving towards Wayland”. 3 November 2021閲覧。
- ^ Stone, Daniel (28 January 2013). The real story behind Wayland and X (Speech). linux.conf.au 2013. Canberra. 2016年4月13日閲覧。
- ^ a b c “LCA: The ways of Wayland”. LWN.net (13 February 2013). 19 May 2016閲覧。
- ^ a b “The Hello Wayland Tutorial” (8 July 2014). 25 July 2014閲覧。
- ^ a b c d e f g h i j k l m n “Wayland Documentation 1.3”. 16 March 2016閲覧。
- ^ “protocol/wayland.xml”. FreeDesktop.org. 25 July 2014閲覧。
- ^ a b “Wayland protocol design: object lifespan” (25 July 2014). 6 April 2016閲覧。
- ^ a b Høgsberg, Kristian (24 January 2014). “Wayland and Weston 1.4 is out”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ “xdg_shell: Adding a new shell protocol”. freedesktop.org (3 December 2013). 14 June 2014閲覧。
- ^ “GENIVI/wayland-ivi-extension”. 3 November 2021閲覧。
- ^ a b c “FOSDEM: The Wayland display server”. LWN.net (15 February 2012). 9 May 2016閲覧。
- ^ “Introduction to Wayland”. Intel Open Source Technology Center. 18 April 2016閲覧。 “Does not include a rendering API – Clients use what they want and send buffer handles to the server”
- ^ “On supporting Wayland GL clients and proprietary embedded platforms” (21 November 2012). 6 April 2016閲覧。 “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.”
- ^ “The Wayland Situation: Facts About X vs. Wayland”. Phoronix.com. p. 2 (7 June 2013). 17 April 2016閲覧。
- ^ a b “Wayland Architecture”. Wayland project. 9 May 2016閲覧。
- ^ “LFCS 2012: X and Wayland”. LWN.net (11 April 2012). 17 April 2016閲覧。
- ^ “Wayland/X Compositor Architecture By Example: Enlightenment DR19”. 18 April 2016閲覧。
- ^ a b “Client Side Window Decorations and Wayland” (7 February 2013). 17 April 2016閲覧。
- ^ “X.Org Security”. X.Org Foundation. 2 July 2017閲覧。 “The X server has long included an extension, SECURITY, which provides support for a simple trusted/untrusted connection model.”
- ^ Wiggins, David P. (15 November 1996). “Security Extension Specification”. X Consortium Standard. 2 July 2017閲覧。
- ^ Walsh, Eamon F. (2009年). “X Access Control Extension Specification”. 2 July 2017閲覧。
- ^ “Debian Moves To Non-Root X.Org Server By Default - Phoronix”. www.phoronix.com. 3 November 2021閲覧。
- ^ “Non root Xorg - Gentoo Wiki”. wiki.gentoo.org. 3 November 2021閲覧。
- ^ “X/Rootless - Ubuntu Wiki”. wiki.ubuntu.com. 3 November 2021閲覧。
- ^ “1078902 – Xorg without root rights”. bugzilla.redhat.com. 3 November 2021閲覧。
- ^ “X Clients under Wayland (XWayland)”. Wayland project. 18 July 2014閲覧。
- ^ “ANNOUNCE: xorg-server 1.16.0”. freedesktop.org (17 July 2014). 3 November 2021閲覧。
- ^ a b “Multiple backends for GTK” (3 January 2011). 10 March 2016閲覧。
- ^ “QtWayland”. Qt Wiki. 9 March 2016閲覧。
- ^ “Full Wayland support in GTK”. GNOME wiki. 10 March 2016閲覧。
- ^ “Jolla: Sailfish OS, Qt, and open source”. LWN.net (31 July 2013). 17 April 2016閲覧。
- ^ a b “Enlightenment 0.20 Arrives With Full Wayland Support & Better FreeBSD Support”. Phoronix.com (30 November 2015). 17 April 2016閲覧。
- ^ “Wayland”. www.enlightenment.org. 3 November 2021閲覧。
- ^ “Plasma 5.21” (英語). KDE Community (2021年2月16日). 2021年3月9日閲覧。
- ^ “Index of /sources/mutter-wayland”. download.gnome.org. 3 November 2021閲覧。
- ^ “Westeros Github Mirror”. 19 September 2016閲覧。
- ^ “swaywm/wlroots” (英語). GitHub. 2018年10月28日閲覧。
- ^ “swaywm/sway” (英語). GitHub. 2018年10月28日閲覧。
- ^ “Sway”. swaywm.org. 2018年12月20日閲覧。
- ^ “gamescope”. GitHub. 2021年7月26日閲覧。
- ^ “README”. cgit.freedesktop.org. 3 November 2021閲覧。
- ^ “README file from the Wayland source code repository”. freedesktop.org. 3 November 2021閲覧。
- ^ “Wayland Begins Porting Process To FreeBSD”. Phoronix.com (16 February 2013). 17 April 2016閲覧。
- ^ “Adding Content protection support in drm-backend (!48) · Merge Requests · wayland / weston” (英語). GitLab. 2019年10月27日閲覧。
- ^ “What does EGL do in the Wayland stack” (10 March 2012). 19 May 2016閲覧。
- ^ a b “A Software-Based Pixman Renderer For Wayland's Weston”. Phoronix.com (6 January 2013). 17 April 2016閲覧。
- ^ Høgsberg, Kristian (9 December 2010). “Blender3D & cursor clamping.”. 3 November 2021閲覧。
- ^ a b “[RFC weston remote access interface module]”. freedesktop.org (18 October 2013). 3 November 2021閲覧。
- ^ “Maynard announcement” (16 April 2014). 16 April 2014閲覧。
- ^ a b “Raspberry Pi Case Study”. Collabora. 9 August 2013閲覧。
- ^ a b “Wayland preview”. Raspberry Pi. 9 August 2013閲覧。
- ^ a b Høgsberg, Kristian (20 May 2014). “Wayland and Weston 1.5.0 is released”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ Ådahl, Jonas (12 November 2013). “[RFC Common input device library]”. Wayland mailing list. 3 November 2021閲覧。
- ^ “libinput”. Freedesktop.org. 21 May 2014閲覧。
- ^ Hutterer, Peter (8 October 2014). Consolidating the input stacks with libinput (Speech). The X.Org Developer Conference 2014. Bordeaux. 2020年1月14日閲覧。
- ^ Hutterer, Peter (22 February 2015). “libinput: the road to 1.0”. 3 November 2021閲覧。
- ^ “Libinput support added to Touchpad KCM” (22 February 2015). 3 November 2021閲覧。
- ^ Goede, Hans de (23 February 2015). “Libinput now enabled as default xorg driver for F-22 workstation installs”. 3 November 2021閲覧。
- ^ “libinput - a common input stack for Wayland compositors and X.Org drivers” (24 September 2014). 17 April 2016閲覧。
- ^ “Replacing xorg input - Drivers with libinput” (1 February 2015). 18 April 2016閲覧。
- ^ 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日閲覧。
- ^ “Changes/WaylandByDefault - Fedora Project Wiki”. fedoraproject.org. 2020年11月9日閲覧。
- ^ “ReleaseNotes for Ubuntu 17.10”. Canonical. 3 November 2021閲覧。
- ^ “Ubuntu 18.04 will revert to long-in-the-tooth Xorg”. 3 November 2021閲覧。
- ^ “Bionic Beaver 18.04 LTS to use Xorg by default”. Canonical. 3 November 2021閲覧。
- ^ “Ubuntu 21.04 is here”. Canonical Ubuntu Blog. 14 June 2021閲覧。
- ^ “Release notes for Red Hat Enterprise Linux 8.0” (英語). Red Hat Customer Portal. 2020年12月25日閲覧。
- ^ “NewInBuster - Debian Wiki”. wiki.debian.org. 2019年7月15日閲覧。
- ^ “Slackware ChangeLogs”. Slackware Linux. 2020年2月26日閲覧。
- ^ “Manjaro 20.2 Nibia got released”. 3 December 2020閲覧。
- ^ “Wayland Live OS Is Now Based On Debian Testing, Working KDE Wayland Support”. Phoronix. 3 November 2021閲覧。
- ^ “RebeccaBlackOS”. Sourceforge. 3 November 2021閲覧。
- ^ “Trying Out Wayland With Rebecca Black”. Phoronix. 3 November 2021閲覧。
- ^ “New Wayland Live CD Has A Lot Of Features”. Phoronix. 3 November 2021閲覧。
- ^ Bassi, Emmanuele (31 January 2011). "ANNOUNCE: Clutter 1.6.0 (stable)". clutter-announce (Mailing list).
- ^ “Clutter & Cogl Wayland update” (16 December 2011). 9 March 2016閲覧。 “The Clutter client side support is basically complete”
- ^ Bassi, Emmanuele (24 September 2013). "ANNOUNCE: Clutter 1.16.0 (stable)". clutter-announce (Mailing list).
- ^ “Wayland – Enlightenment”. 29 March 2013時点のオリジナルよりアーカイブ。6 March 2013閲覧。
- ^ “GTK Roadmap”. 8 March 2016閲覧。
- ^ Lantinga, Sam (8 March 2014). “SDL 2.0.2 RELEASED!”. SDL Project. 18 March 2014閲覧。
- ^ “SDL 2.0.4 Was Quietly Released Last Week With Wayland & Mir By Default”. Phoronix.com (9 January 2016). 17 April 2016閲覧。
- ^ Berglund, Camilla (8 April 2014). “Implementation for Wayland · Issue #106 · glfw/glfw · GitHub”. 14 August 2014閲覧。
- ^ “FreeGLUT: Implement initial Wayland support”. GitHub. 3 November 2021閲覧。
- ^ “GNOME Initiatives - Wayland”. GNOME Wiki. 8 March 2016閲覧。
- ^ “KWin/Wayland”. KDE Community Wiki. 8 March 2016閲覧。
- ^ “Enlightenment - Wayland”. Enlightenment.org. 8 March 2016閲覧。
- ^ “Enlightenment DR 0.20.0 Release”. Enlightenment.org. 8 March 2016閲覧。
- ^ “The Enlightenment of Wayland”. FOSDEM.org. 8 March 2016閲覧。
- ^ “ReleasePlanning/FeaturesPlans”. GNOME Project. 31 May 2015閲覧。
- ^ “A Look At The Exciting Features/Improvements Of GNOME 3.22”. Phoronix. 3 November 2021閲覧。
- ^ “GNOME Lands Mainline NVIDIA Wayland Support Using EGLStreams”. Phoronix. 3 November 2021閲覧。
- ^ “KDE 4.11 Beta Released, Works On Wayland”. Phoronix.com (14 June 2013). 17 April 2016閲覧。
- ^ “Plasma's Road to Wayland” (2014年7月25日). Template:Cite webの呼び出しエラー:引数 accessdate は必須です。[リンク切れ]
- ^ “Four years later” (29 June 2015). 17 April 2016閲覧。
- ^ Dawe, Liam. “KDE Plasma 5.20 will properly support screen recording on Wayland and more”. gamingonlinux.com. 10 September 2020閲覧。
- ^ “Wayland in Fedora Update”. blogs.gnome.org (3 July 2014). 17 April 2016閲覧。
- ^ “VNC® Wayland Developer Preview” (2014年7月8日). 2014年7月14日時点のオリジナルよりアーカイブ。 Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “RealVNC Wayland developer preview email”. freedesktop.org (9 July 2014). 3 November 2021閲覧。
- ^ “Maliit Status Update”. Posterous (2 April 2013). 17 May 2013時点のオリジナルよりアーカイブ。14 October 2013閲覧。
- ^ “More Maliit Keyboard Improvements: QtQuick2”. Murray's Blog (2 April 2013). 14 October 2013閲覧。
- ^ “Maliit under Wayland”. 11 June 2013時点のオリジナルよりアーカイブ。14 September 2013閲覧。
- ^ “wlterm”. Freedesktop.org. 8 July 2014閲覧。
- ^ a b Hillesley, p. 3.
- ^ “Eclipse now runs on Wayland” (18 August 2014). 3 November 2021閲覧。
- ^ “Vulkan 1.0 specification released with day-one support for Wayland” (16 February 2016). 3 November 2021閲覧。
- ^ “Wayland Backend DRM | IVI Layer Management”. GENIVI Alliance. 1 February 2014時点のオリジナルよりアーカイブ。15 July 2013閲覧。
- ^ “The First Jolla Smartphone Runs With Wayland”. LinuxG.net (14 July 2013). 8 October 2013閲覧。
- ^ VDVsx [@VDVsx] (2013年7月13日). "#sailfishos main components diagram. #Qt5 #Wayland #JollaHQ #Akademy". X(旧Twitter)より2021年11月3日閲覧。
- ^ Jolla [@JollaHQ] (2013年7月13日). "@faenil @PeppeLaKappa @VDVsx our first Jolla will ship with wayland, yes". X(旧Twitter)より2021年11月3日閲覧。
- ^ “IVI/IVI Setup”. Tizen Wiki. 8 April 2013閲覧。
- ^ Amadeo, Ron. “The Samsung Z4 is Tizen's new flagship smartphone”. Ars Technica. 13 May 2017閲覧。
- ^ “Premature publicity is better than no publicity” (3 November 2008). 6 April 2016閲覧。
- ^ “Interview: Kristian Høgsberg”. FOSDEM Archive (29 January 2012). 8 March 2016閲覧。
- ^ a b “Wayland - Beyond X”. The H Open. Heise Media UK (13 February 2012). 8 March 2016閲覧。
- ^ Høgsberg, Kristian. “Wayland – A New Display Server for Linux”. Linux Plumbers Conference, 2009. 2017年8月11日時点のオリジナルよりアーカイブ。 Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “The Linux graphics stack from X to Wayland”. Ars Technica (22 March 2011). 17 April 2016閲覧。
- ^ “Wayland Becomes A FreeDesktop.org Project”. Phoronix.com (29 October 2010). 17 April 2016閲覧。
- ^ Høgsberg, Kristian (29 October 2010). “Moving to freedesktop.org”. 31 July 2013閲覧。
- ^ Høgsberg, Kristian (3 December 2008). "Wayland is now under MIT license". wayland-display-server (Mailing list).
- ^ Høgsberg, Kristian (22 November 2010). "Wayland license clarification". wayland-devel (Mailing list).
- ^ Høgsberg, Kristian (19 September 2011). "License update". wayland-devel (Mailing list).
- ^ Munk, Carsten (11 April 2013). “Wayland utilizing Android GPU drivers on glibc based systems, Part 1”. Mer Project. 3 July 2013閲覧。
- ^ Munk, Carsten (8 June 2013). “Wayland utilizing Android GPU drivers on glibc based systems, Part 2”. Mer Project. 3 July 2013閲覧。
- ^ “Jolla Brings Wayland Atop Android GPU Drivers”. Phoronix.com (11 April 2013). 17 April 2016閲覧。
- ^ “Wayland”. Wayland.freedesktop.org. 15 July 2013閲覧。
- ^ Høgsberg, Kristian (9 February 2012). “[ANNOUNCE Wayland and Weston 0.85.0 released]”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ Høgsberg, Kristian (24 July 2012). “Wayland and Weston 0.95.0 released”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ Høgsberg, Kristian (22 October 2012). “Wayland and Weston 1.0”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ “Wayland's 1.0 milestone fixes graphics protocol”. The H Open. Heise Media UK (23 October 2012). 17 April 2016閲覧。
- ^ “Wayland 1.1 Officially Released With Weston 1.1”. Phoronix.com (16 April 2013). 17 April 2016閲覧。
- ^ Høgsberg, Kristian (15 April 2013). “1.1 Released”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ “Wayland 1.2.0 Released, Joined By Weston Compositor”. Phoronix.com (13 July 2013). 17 April 2016閲覧。
- ^ Høgsberg, Kristian (12 July 2013). “Wayland and Weston 1.2.0 released”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ Høgsberg, Kristian (11 October 2013). “Wayland and Weston 1.3 releases are out”. wayland-devel mailing list. 3 November 2021閲覧。
- ^ “Wayland and Weston 1.6.0 released”. wayland-devel mailing list (19 September 2014). 3 November 2021閲覧。
- ^ “[ANNOUNCE wayland 1.7.0]”. wayland-devel mailing list (14 February 2015). 3 November 2021閲覧。
- ^ “[ANNOUNCE weston 1.7.0]”. wayland-devel mailing list (14 February 2015). 3 November 2021閲覧。
- ^ “[ANNOUNCE wayland 1.8.0]”. wayland-devel mailing list (2 June 2015). 3 November 2021閲覧。
- ^ “[ANNOUNCE weston 1.8.0]”. wayland-devel mailing list (2 June 2015). 3 November 2021閲覧。
- ^ Harrington, Bryce (21 September 2015). "[ANNOUNCE] wayland 1.9.0". wayland-devel (Mailing list).
- ^ Harrington, Bryce (21 September 2015). "[ANNOUNCE] weston 1.9.0". wayland-devel (Mailing list).
- ^ Harrington, Bryce (17 February 2016). "[ANNOUNCE] wayland 1.10.0". wayland-devel (Mailing list).
- ^ Harrington, Bryce (17 February 2016). "[ANNOUNCE] weston 1.10.0". wayland-devel (Mailing list).
- ^ Nestor, Marius (18 February 2016). “Wayland 1.10 Display Server Officially Released, Wayland 1.11 Arrives in May 2016”. Softpedia. 3 November 2021閲覧。
- ^ “Wayland 1.10 Officially Released”. Phoronix.com (16 February 2016). 17 April 2016閲覧。
- ^ Harrington, Bryce (1 June 2016). "[ANNOUNCE] wayland 1.11.0". wayland-devel (Mailing list). 2016年6月1日閲覧。
- ^ Harrington, Bryce (1 June 2016). "[ANNOUNCE] weston 1.11.0". wayland-devel (Mailing list). 2016年6月1日閲覧。
- ^ Harrington, Bryce (21 September 2016). "[ANNOUNCE] wayland 1.12.0". wayland-devel (Mailing list). 2016年9月21日閲覧。
- ^ Harrington, Bryce (21 September 2016). "[ANNOUNCE] weston 1.12.0". wayland-devel (Mailing list). 2016年9月21日閲覧。
- ^ Harrington, Bryce (21 February 2017). "[ANNOUNCE] wayland 1.13.0". wayland-devel (Mailing list). 2017年4月30日閲覧。
- ^ Harrington, Bryce (25 February 2017). "[ANNOUNCE] weston 2.0.0". wayland-devel (Mailing list). 2017年4月30日閲覧。
- ^ Harrington, Bryce (8 August 2017). "[ANNOUNCE] wayland 1.14.0". wayland-devel (Mailing list). 2018年3月25日閲覧。
- ^ Harrington, Bryce (8 August 2017). "[ANNOUNCE] weston 3.0.0". wayland-devel (Mailing list). 2018年3月25日閲覧。
- ^ Foreman, Derek (9 April 2018). "[ANNOUNCE] wayland 1.15.0". wayland-devel (Mailing list). 2018年4月15日閲覧。
- ^ Foreman, Derek (9 April 2018). "[ANNOUNCE] weston 4.0.0". wayland-devel (Mailing list). 2018年4月15日閲覧。
- ^ Foreman, Derek (24 August 2018). "[ANNOUNCE] wayland 1.16.0". wayland-devel (Mailing list). 2018年11月30日閲覧。
- ^ Foreman, Derek (24 August 2018). "[ANNOUNCE] weston 5.0.0". wayland-devel (Mailing list). 2018年11月30日閲覧。
- ^ Foreman, Derek (28 March 2019). "[ANNOUNCE] wayland 1.17.0" (Mailing list). 2019年6月17日閲覧。
- ^ Foreman, Derek (21 March 2019). "[ANNOUNCE] weston 6.0.0" (Mailing list). 2019年6月17日閲覧。
- ^ Ser, Simon (11 February 2020). "[ANNOUNCE] wayland 1.18" (Mailing list). 2020年2月12日閲覧。
- ^ Ser, Simon (23 August 2019). "[ANNOUNCE] weston 7.0.0" (Mailing list). 2019年10月22日閲覧。
- ^ Ser, Simon (27 January 2021). "[ANNOUNCE] wayland 1.19.0" (Mailing list). 2021年1月27日閲覧。
- ^ https://lists.freedesktop.org/archives/wayland-devel/2020-January/041147.html
- ^ https://lists.freedesktop.org/archives/wayland-devel/2020-September/041595.html
関連項目
![ポータル FLOSS](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Portal.svg/36px-Portal.svg.png)
- ウィンドウシステム
- Mir (ディスプレイサーバ)
- X Window System
外部リンク
- 公式ウェブサイト
freedesktop.orgのプロジェクト | ||
---|---|---|
コンポーネント |
| ![]() |
ライブラリ | ||
フレームワーク | ||
ミーテイング |
|
| |||||||||
---|---|---|---|---|---|---|---|---|---|
デスクトップ環境 |
| ||||||||
グラフィカルシェル |
| ||||||||
Xウィンドウマネージャ |
| ||||||||
Wayland | |||||||||
関連項目 |
|