コンテンツにスキップ

Wayland

提供: ArchWiki
2021年4月23日 (金) 14:08時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→要件: add == Compositors == (from English))

Wayland は Linux の新しいウィンドウプロトコルです。GNOME や KDE などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして XWayland があります。

要件

ほとんどの Wayland コンポジタは KMS を利用しているシステムで動作します。

また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、(Weston や Sway などの) コンポジタあるいは (GNOME や KDE など) デスクトップ環境が必要です。

GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: GBM と EGLStreams です。

バッファ API GPU ドライバーのサポート Wayland コンポジタのサポート
GBM NVIDIA 以外の全てのドライバー 全てのコンポジタ
EGLStreams NVIDIA GNOME, KDE (Plasma 5.16+)

Compositors

See Window manager#Types for the difference between Tiling and Stacking.

Tiling

https://github.com/project-repo/cagebreak || cagebreakAUR cagebreak-binAUR
  • Cardboard — Scrolling compositor, inspired by PaperWM, based on wlroots.
https://gitlab.com/cardboardwm/cardboard || cardboard-gitAUR
  • dwl — dwm-like Wayland compositor based on wlroots.
https://github.com/djpohly/dwl || dwlAUR
  • japokwm — Dynamic wayland tiling compositor based around creating layouts, based on wlroots.
https://github.com/werererer/japokwm || japokwm-gitAUR
  • river — Dynamic tiling Wayland compositor inspired by dwm and bspwm.
https://github.com/ifreund/river || river-gitAUR
  • Sway — i3-compatible Wayland compositor based on wlroots.
https://github.com/swaywm/sway || sway
  • Velox — Simple window manager based on swc, inspired by dwm and xmonad.
https://github.com/michaelforney/velox || veloxAUR
  • waymonad — Wayland compositor inspired by xmonad written in Haskell.
https://github.com/waymonad/waymonad || パッケージが存在しないか AUR で検索

Stacking

https://www.enlightenment.org/ || enlightenment
  • Greenfield — Runs in a web browser and can display remote applications.
https://greenfield.app/ || パッケージが存在しないか AUR で検索
  • Grefsen — Qt/Wayland compositor providing a minimal desktop environment.
https://github.com/ec1oud/grefsen || パッケージが存在しないか AUR で検索
  • hikari — wlroots-based compositor inspired by cwm which is actively developed on FreeBSD but also supports Linux.
https://hikari.acmelabs.space/ || hikariAUR
https://userbase.kde.org/KWin || kwin
  • Liri Shell — Part of Liri, built using QtQuick and QtCompositor as a compositor for Wayland.
https://github.com/lirios/shell || liri-shell-gitAUR
  • labwc — wlroots-based compositor inspired by Openbox.
https://github.com/johanmalm/labwc || labwc-gitAUR
https://gitlab.gnome.org/GNOME/mutter || mutter
  • wayfire — 3D compositor inspired by Compiz and based on wlroots.
https://wayfire.org/ || wayfireAUR
  • {{App|[

GUI ライブラリ

公式ウェブサイト も参照してください。

GTK+ 3

公式リポジトリの gtk3 パッケージは Wayland バックエンドが有効になっています。

Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、GDK_BACKEND=x11 環境変数を設定することで Xwayland を使うように上書きできます。

ノート GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになり、Qt の lighthouse と同じ方法でバックエンドを切り替えることができるようになりました。

Qt5

qt5 パッケージは Wayland をサポートしています。qt5-wayland をインストールしてください。

Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[3] にあるように、-platform wayland を使用するか、環境変数 QT_QPA_PLATFORM=wayland-egl をセットして下さい。一方、Wayland セッション上で X11 を使用させるには、QT_QPA_PLATFORM=xcb とセットします。 これは、zoomAUR など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。

sway などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 KeepassXC はトレイに最小化できません。 これは、アプリケーションを実行する前に qt5ct をインストールし、 QT_QPA_PLATFORMTHEME=qt5ct を設定することで解決できます。

Clutter

Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは clutter パッケージで有効になっています。

Clutter アプリを Wayland 上で動作させるには、環境変数 CLUTTER_BACKEND=wayland を設定する必要があります。

SDL

SDL アプリケーションを Wayland 上で動作させるには、環境変数 SDL_VIDEODRIVER=wayland を設定する必要があります。一方、XWayland を使うようにするには、SDL_VIDEODRIVER=x11 を指定します。

ノート Wayland 未対応の古い SDL が内部に含まれたゲームでは、SDL_VIDEODRIVER=wayland を指定すると動作が壊れる場合があります。

GLFW

GLFW で Wayland バックエンドを使用するには、(glfw-x11 の代わりに) glfw-wayland パッケージをインストールしてください。

GLEW

GLEW で Wayland バックエンドを使用するには、(glew の代わりに) glew-wayland パッケージをインストールしてください。

EFL

EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の プロジェクトページ を見て下さい。

winit

Winit は Rust で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。XINIT_UNIX_BACKEND 環境変数の値を x11 や wayland としてください。

ディスプレイマネージャ

Wayland コンポジタの実行をサポートしたディスプレイマネージャは以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。

名前 種類 説明
GDM Wayland/X11 上で動作 GNOME ディスプレイマネージャ。
greetdAUR ログインデーモン 最小でありながら柔軟なログインデーモン。
LightDM Wayland/X11 上で動作 [4] 様々なデスクトップに対応したディスプレイマネージャ。
LyAUR コンソール上で動作 TUI ディスプレイマネージャ。
SDDM X11 上で動作 [5] QML ベースのディスプレイマネージャ。
tbsmAUR コンソール上で動作 bash のみに依存するシンプルな CLI セッションランチャー。

ウィンドウマネージャとデスクトップシェル

GNOME

警告 Gnome Wayland セッションは xorg-xwayland をインストールしていないと起動しません。

バージョン 3.14 から、GNOME は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。

Gnome Wayland セッションを起動するには、GDM ログインマネージャを使用する必要があります。ログインする前に "Gnome on Wayland" セッションを選択してください。

Enlightenment

E19 から Wayland に対応していましたが、現在は削除されており、E20 以上が通常の利用に耐えうるほど Wayland で安定動作するとされています。詳しくは [6] を参照。

KDE

KDE#Wayland を見てください。

Loliwm

loliwm は Wayland 用のタイル型ウィンドウマネージャです。

sway

Sway は Wayland 用の i3 互換のウィンドウマネージャです。

Velox

Velox は swc ベースのシンプルなウィンドウマネージャです。dwm と xmonad の影響を受けています。

Orbital

Orbital は Qt5 と Weston を使用する Wayland コンポジタ・シェルです。このプロジェクトではシンプルでありながら柔軟性のある見た目の良い Wayland デスクトップを作成することを目標としています。Orbital は完全装備の DE ではなく、どちらかと言えば Awesome や Fluxbox のような X11 におけるウィンドウマネージャに似ています。

Liri Shell

Liri Shell は Liri のデスクトップシェルであり、Wayland のコンポジタとして QtQuick と QtCompositor を使用して作られています。

Maynard

Maynard は GTK ベースの Weston 用デスクトップシェルクライアントです。Tiago Vignatti によるプロジェクト、weston-gtk-shell に基づいています。

Motorcar

Motorcar は 3D ウィンドウを探検できる wayland コンポジタです。

Way Cooler

way-coolerAUR は Rust で書かれた (Lua の設定ファイルによる) 豊富な設定を持つ Wayland コンポジタです。i3 と awesome の影響を受けています。

Maze Compositor

Maze Compositor は 3D の Qt ベースの Wayland コンポジタです。

Grefsen

Grefsen はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。

XWayland

XWayland は、Wayland の下で実行される X サーバーです。 レガシー X11 アプリケーションに下位互換性を提供します。

これを使用するには、xorg-xwayland パッケージを インストール します。

XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。

ノート
  • セキュリティについて: XWaylandはX サーバーであるため、 Wayland のセキュリティ機能はありません。
  • 現時点では、 Nvidia 独自のドライバーは XWayland の GPU アクセラレーションをサポートしていません。 [7] または [8] の pull request を参照してください。

トラブルシューティング

root でグラフィカルアプリケーションを実行

Root で X アプリケーションを起動#Wayland を見てください。

LLVM assertion failure

LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで mesa をリビルドする必要があります。

これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい:

$ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so

Electron ベースのアプリケーションでは、ディスプレイ::0を開けません

GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。

動作が遅い、表示がおかしい、クラッシュする

Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に CLUTTER_PAINT=disable-clipped-redraws:disable-culling が設定されている可能性があります。/etc/environment などの rc ファイルから該当箇所を削除してみてください。

リモートディスプレイ

いくつか選択肢が考えられます:

ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力

Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。

入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:

  • ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
  • マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。

Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。

関連する拡張:

サポートしている Wayland コンポジタ:

サポートしているウィジェットツールキット:

  • GTK (リリース 3.22.18 以上)。

参照