Wayland

Wayland はディスプレイサーバプロトコルです。 X Window System の後継となることを目指している。 Wikipedia に Wayland と Xorg の比較があります。

Wayland プロトコルを使用するディスプレイサーバは、合成ウィンドウマネージャとしても機能するため、コンポジッターと呼ばれています。

レガシーな X11 アプリケーションをシームレスに実行する後方互換性のために、XWayland を使うことができ、これは Wayland で X サーバを提供します。 そのためには、コンポジター (次のセクションを参照) や、コンポジターを含むデスクトップ環境 (例: GNOME や KDE) も必要です。

GPU ドライバーと Wayland コンポジターに互換性があるためには、同じバッファ API をサポートしていなければなりません。 2 つの主要な API があります。 GBM と EGLStreams です。

以外のすべて

Buffer API GPU driver support Wayland compositor support
GBM NVIDIA
EGLStreams NVIDIA GNOME, KDE、Weston (サードパーティ製パッチあり)

Compositors

Tiling と Stacking の違いについては Window manager#Types を参照してください。

Tiling

  • Cagebreak – cage がベース、ratpoison がヒント。

|| cagebreakAUR cagebreak-binAUR

  • Cardboard – スクロールコンポジター、paperWM がベース、wlroots がヒント。

https://gitlab.com/cardboardwm/cardboard || not packaged? AUR で検索

  • dwl – wlroots ベースの dwm 風 Wayland コンポジター。

https://github.com/djpohly/dwl || dwlAUR

  • japokwm – wlroots ベースのレイアウト作成に基づいた動的な wayland タイルコンポジトール。 AUR で検索
    • river – dwm と bspwm にインスパイアされた動的なタイル型 Wayland コンポジター。

    https://github.com/ifreund/river || river-gitAUR

    • Sway – wlroots ベースの i3 互換の Wayland コンポジター。

    https://github.com/swaywm/sway || sway

    • Velox – swc ベースのシンプルなウィンドウマネージャ、dwm と xmonad にインスパイアされています。

    https://github.com/michaelforney/velox || veloxAUR

    • waymonad – Haskell で書かれた xmonad にインスパイアされている Wayland コンポシター。

    https://github.com/waymonad/waymonad || not packaged? search in AUR

    Stacking

    • Enlightenment – Enlightenment#Manually を参照してください。 詳細はこちら。

    https://www.enlightenment.org/ || enlightenment

    • Greenfield – ウェブブラウザで動作し、リモートアプリケーションを表示可能。

    https://greenfield.app/ || not packaged? search in AUR

    • Grefsen – 最小デスクトップ環境を提供する Qt/Wayland compositor。

    https://github.com/ec1oud/grefsen || not packaged? search in AUR

    • hikari – cwm に影響された wlroots ベースのコンポジタ、FreeBSD で活発に開発されていますが Linux もサポートしています。

    https://hikari.acmelabs.space/ || hikariAUR

    • KDE KWin – KDE#Starting Plasma.

    https://userbase.kde.org/KWin || kwin

    • Liri Shell – QtQuick と QtCompositor を使って作られた Wayland 用のコンポジットで、Liri の一部分です。

    https://github.com/lirios/shell || liri-shell-gitAUR

    • labwc – Openbox に触発された wlroots ベースのコンポジター。

    https://github.com/johanmalm/labwc || labwc-gitAUR

    • Mutter – GNOME#Starting を見て下さい。

    https://gitlab.gnome.org/GNOME/mutter || mutter

    • wayfire – Compiz に触発され wlroots をベースにした 3D コンポジター。

    https://wayfire.org/ || wayfireAUR

    • Weston – Wayland コンポジターのリファレンス実装。

    https://gitlab.freedesktop.org/wayland/weston || weston

    • wio – Plan 9 の Rio デスクトップのルックアンドフィールを複製することを目的とした wlroots ベースのコンポジター。

    https://wio-project.org/ || not packaged? AUR で検索

    Other

    • Cage – キオスクのように単一のフルスクリーンアプリケーションを表示します。

    https://www.hjdskes.nl/projects/cage/ || cage

    • Maze Compositor – Qt を使った 3D 迷路でウィンドウをレンダリング。

    https://github.com/imbavirus/mazecompositor || パッケージされていない? AUR で検索

    • Motorcar – 仮想現実を使って 3D ウィンドウを探索する Wayland compositor。

    https://github.com/evil0sheep/motorcar || not packaged? AUR で検索

    上記のいくつかはディスプレイマネージャをサポートしているかもしれません。

    ディスプレイマネージャ

    以下にリストされたディスプレイマネージャは Wayland コンポジットの起動をサポートしています。 タイプ」列は、ディスプレイ・マネージャが Wayland 上での自身の実行をサポートしているかどうかを示します。

    Name Type Description
    GDM Runs on Wayland GNOME ディスプレイマネージャです。
    greetd ログインデーモン 最小で柔軟なログインデーモン。
    LightDM X11で実行 クロスデスクトップディスプレイマネージャ。
    Ly Runs in console TUI display manager written in C
    SDDM Runs on X11 QML-based display manager.X.X.X.
    Display Manager.
    tbsm コンソールで実行 純粋な bash で書かれたシンプルな CLI セッションランチャー。

    GUI libraries

    詳細は公式サイトにて。

    GTK

    gtk3 および gtk4 パッケージは Wayland バックエンドを有効にしています。 GTK のデフォルトは Wayland バックエンドですが、環境変数を変更することにより Xwayland にオーバーライドすることが可能です。 GDK_BACKEND=x11.

    Qt

    Qt5または6でWaylandサポートを有効にするには、qt5-waylandまたはqt6-waylandパッケージをそれぞれインストールします。

    WaylandプラグインでQtアプリケーションを実行するには、-platform waylandまたはQT_QPA_PLATFORM=wayland環境変数を使用します。 WaylandセッションでX11を強制的に使用するには、QT_QPA_PLATFORM=xcbを使用します。 これは zoomAUR.

    sway のようなシステムの Qt の実装を使用しないいくつかのプロプライエタリなアプリケーションで必要になるかもしれません、いくつかのコンポジターでは、ネイティブで動作する Qt アプリケーションは機能が欠けているかもしれません。 例えば、KeepassXC はトレイに最小化することができないでしょう。 これは、qt5ct をインストールし、アプリケーションを実行する前に QT_QPA_PLATFORMTHEME=qt5ct を設定することで解決できます。

    Clutter

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

    Clutter アプリケーションを Wayland で実行するには、CLUTTER_BACKEND=wayland.

    SDL2

    SDL2 アプリケーションを Wayland で実行するには SDL_VIDEODRIVER=wayland.

    Note: 多くの独占的ゲームは古いバージョンの SDL とセットになっており、これらは Wayland をサポートしておらず SDL_VIDEODRIVER=wayland とすると完全に破壊してしまう可能性があります。 アプリケーションを強制的に XWayland で動かすには、 SDL_VIDEODRIVER=x11 を設定してください。

    GLFW

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

    GLEW

    glew-waylandAUR パッケージは現在まだ多くの GLEW ベースのアプリケーションで動いていないので、 Xwayland で glew を使うしか方法はないのですが、このパッケージは、GLEW-wayand を使っているアプリケーションで動作しています。 FS#62713.

    EFL

    EFL は完全に Wayland をサポートしています。

    winit

    WinitはRustのウィンドウハンドリングライブラリで、Wayland上でEFLのアプリケーションを動かすにはWaylandプロジェクトページを見てください。 デフォルトはWaylandバックエンドですが、環境変数を変更することでXwaylandにオーバーライドすることが可能です。 WINIT_UNIX_BACKEND=x11.

    XWayland

    XWayland は Wayland 上で動作する X Server です。

    これを使うには xorg-xwayland パッケージをインストールしてください。

    XWaylandはコンポジター経由で起動するので、XWaylandとの互換性やXWaylandの起動方法については、お好みのコンポジターで確認してください。

    Note:

    • Regarding Security.XWaylandは、X11のアプリケーションの後方互換性(backwards compatibility)を提供する、X11のためのサーバーです。 XWayland は X Server なので、Wayland のセキュリティ機能はありません!
    • 今のところ、Nvidia 専用のドライバーは XWayland の GPU アクセラレーションをサポートしません。 XWayland のサポート状況については、こちらまたはこちらのプルリクエストを参照してください。

    トラブルシューティング

    色補正

    バックライト#色補正を参照してください。

    スローモーション、グラフィックの不具合、およびクラッシュ

    Gnome-shell ユーザーは、X から Wayland に切り替えたときに表示上の問題を経験するかもしれません。

    Cannot open display: :0 with Electron-based applications

    GDK_BACKEND=wayland が設定されていないことを確認してください。

    Remote display

    • (20200206) wlroots (used by sway) はバージョン 0.10 から wayvncAUR を介して VNC バックエンドを提供するようになりました。 RDP バックエンドは削除されました。 .
    • (20180401) mutter がコンパイル時にリモートデスクトップを有効にするようになりました。詳細は gnome-remote-desktop を参照してください。 Weston パッケージではバージョン 6.0.0 から有効になっています。
    • waypipe-gitAUR は Wayland アプリケーション用の透過プロキシで、SSH で実行するためのラッパーコマンドを備えています

    ゲーム、リモートデスクトップおよび VM Windows における入力デバイスグラビング

    Xorg とは対照的に Wayland はアクティブまたは明示的グラブと呼ばれる独占入力デバイスグラビング (e.m.) は許可していません。その代わりに、キーボードショートカットを渡し、ポインタデバイスをアプリケーションウィンドウに限定するために、Wayland コンポジターに依存します。

    この入力グラブの変更は、現在のアプリケーションの動作を壊します。つまり、

    • Hotkey の組み合わせと修飾子はコンポジターによってキャッチされ、リモート デスクトップおよび仮想マシン ウィンドウに送信されません。
    • マウス ポインターはアプリケーションのウィンドウに制限されないので、仮想マシンまたはリモート デスクトップのウィンドウ内のマウス ポインターの位置がホストのマウス ポインターからずれる視差効果が発生する可能性があります。 これらの拡張のサポートは、Wayland のコンポジターに追加される必要があります。 ネイティブの Wayland クライアントの場合、使用されるウィジェット ツールキット (例: GTK, Qt) はこれらの拡張をサポートする必要があり、ウィジェット ツールキットが使用されていない場合はアプリケーション自体がサポートされている必要があります。 Xorg アプリケーションの場合、XWayland のサポートで十分なので、アプリケーションやウィジェットツールキットの変更は必要ありません。

      これらの拡張はすでに wayland-protocols に含まれており、xorg-xwayland でサポートされています。

      • XWayland keyboard grabbing protocol
      • Compositor shortcuts inhibit protocol
      • Relative pointer protocol
      • Pointer constraints protocol

      Supporting Wayland compositors:

      • Mutter, GNOME’s compositor since release 3.1.28
      • wlroots は相対ポインタとポインタ制約をサポート

      ウィジェットツールキットをサポート:

      • GTK リリース 3.22.18 以降。

      See also

      • Wayland documentation online
      • Official Wayland Git Repo
      • Fedora:Wayland の問題をデバッグする方法
      • Awesome Wayland projects
      • Cursor themes
      • Arch Linux forum discussion
      • i3 Migration Guide – Common X11 apps used on i3 with Wayland alternatives

コメントを残す

メールアドレスが公開されることはありません。