Wayland
XWaylandは、Waylandクライアントとして動作するXサーバである。XWaylandによって、Waylandコンポジタ環境でネイティブのX11クライアントアプリケーションを表示させることができる。これは、XQuartzがXアプリケーションをmacOSのネイティブウィンドウシステムで動かす方法に似ている。XWaylandのゴールは、移植されていないアプリケーションを実行する方法を提供することで、XウィンドウシステムからWayland環境への移行を促進することである。XWaylandは、X.Orgサーババージョン1.16に取り込まれた。
Qt5やGTK3といったウィジェット・ツールキットは、ユーザーがアプリケーションをX上あるいはWayland上で実行させるかに関わらず、ユーザがローダを選択することで、グラフィカルバックエンドを実行時に変更できる。Qt5は、この効果のために-platformコマンドラインオプションを提供している。一方、GTK 3は、GDK_BACKEND環境変数を設定することで、ユーザがGDK(英語版)バックエンドを使用するか選択可能にしている。
2020年現在ほとんどのLinuxディストリビューションは、Waylandをインストール直後からサポートしている。特筆すべき例を挙げると:
Fedora は、2016年11月22日にリリースしたバージョン25からWaylandをGNOME 3.22のデフォルトのデスクトップセッションとして使用開始した。X.OrgへはグラフィックドライバがWaylandをサポートできない場合のために戻れるようにしている。Fedoraは、2021年4月27日のバージョン34から、KDEデスクトップのデフォルトのセッションとしてWaylandを使い始めた。
Ubuntu は、Ubuntu 17.0 (Artful Aardvark) にてWaylandをデフォルトにした。しかし、Ubuntu 18.04 LTSにてX.Orgに戻した。Waylandはまだスクリーン共有とリモートデスクトップアプリケーションに問題を抱えており、ウィンドウマネージャのクラッシュから回復できないためであった。21.04で、Waylandを再度デフォルトにした。
現在のバージョンのWaylandプロトコルのインタフェースは、Waylandソースコードにあるprotocol/wayland.xmlで定義されている。これはXMLファイルであり、現在のバージョンに存在するインタフェースが、リクエスト、イベント、その他の属性と共にリストアップされている。このインタフェース集合は、どのWaylandコンポジタも最低限必要とされるインタフェースである。
いくつかのWaylandプロトコルでの最も基本的なインタフェースは、以下のとおりである。
wl_display – コアグローバルオブジェクト。Waylandプロトコル自身をカプセル化した特別なオブジェクトである。
wl_registry – グローバルレジストリオブジェクト。すべてのクライアントが利用できるよう、コンポジタがすべてのグローバルオブジェクトを格納する。
wl_compositor – コンポジタを表すオブジェクト。異なるサーフェイスを1つの出力へと結合することを担当する。
wl_surface – 画面上の四角形の領域を表すオブジェクト。位置、サイズ、描画内容(ピクセル)によって定義される。
wl_buffer – wl_surfaceに貼り付けたとき、表示する内容を提供するオブジェクト。