「Wayland」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
1行目: 1行目:
 
[[Category:グラフィカルユーザーインターフェイス]]
 
[[Category:グラフィカルユーザーインターフェイス]]
[[es:Wayland]]
 
 
[[en:Wayland]]
 
[[en:Wayland]]
  +
[[es:Wayland]]
 
[[fr:Wayland]]
 
[[fr:Wayland]]
 
[[pt:Wayland]]
 
[[pt:Wayland]]
19行目: 19行目:
   
 
== 要件 ==
 
== 要件 ==
ほとんどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作します。
 
   
  +
ほとんどの Wayland コンポジタは、[[Kernel Mode Setting|カーネルモードセッティング]]を利用しているシステムでのみ動作します。Wayland それ自体はグラフィカルな環境を提供しません。ゆえに、Wayland に加えてコンポジタ (以下のセクションを参照)、あるいは、コンポジタを含むデスクトップ環境 (例: [[GNOME]]、[[KDE]]) が必要となります。
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。
 
   
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&px=XDC2016-Device-Memory-API EGLStreams] です。
+
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&px=XDC2016-Device-Memory-API EGLStreams] です。
   
 
{| class="wikitable"
 
{| class="wikitable"
29行目: 28行目:
 
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート
 
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート
 
|-
 
|-
| GBM || [[NVIDIA]] < 495* 以外の全てのドライバー || 全てのコンポジタ
+
| GBM || [[NVIDIA]] < 495* 以外の全てのドライバー || 全て
 
|-
 
|-
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] [[Weston#EGLstream_support_(for_proprietary_Nvidia_Driver)|Weston]] (with a third-party patch)
+
| EGLStreams || [[NVIDIA]] || [[GNOME]][[KDE]]、(サードパーティのパッチを適用した) [[Weston#EGLstream のサポート (Nvidia 専用ドライバ)|Weston]]
 
|-
 
|-
 
|}
 
|}
   
: *: Nvidia >= 495 は EGLStreams と GBM[https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-495.44-Linux-Driver] の両方をサポートします
+
: *: Nvidia 495 は EGLStreams と GBM の両方をサポートします[https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-495.44-Linux-Driver]。
  +
  +
: GBM をバックエンドとして使うには、次の[[環境変数]]を設定してください: {{bc|<nowiki>GBM_BACKEND=nvidia-drm
  +
__GLX_VENDOR_LIBRARY_NAME=nvidia</nowiki>}}
   
 
== コンポジタ ==
 
== コンポジタ ==
   
タイル型とスタック型の違いは、[[ウィンドウマネージャ#種類]]を参照してください。
+
'''タイル型''' '''スタック型''' の違いは、[[ウィンドウマネージャ#種類]] を参照してください。
   
 
=== タイル型 ===
 
=== タイル型 ===
   
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}} {{AUR|cagebreak-bin}}}}
+
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}}}}
 
* {{App|Cardboard|スクロールコンポジタ。wlroots をベースに、PaperWM にインスパイアされています。|https://gitlab.com/cardboardwm/cardboard|{{AUR|cardboard-git}}}}
 
* {{App|Cardboard|スクロールコンポジタ。wlroots をベースに、PaperWM にインスパイアされています。|https://gitlab.com/cardboardwm/cardboard|{{AUR|cardboard-git}}}}
 
* {{App|dwl|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://github.com/djpohly/dwl|{{AUR|dwl}}}}
 
* {{App|dwl|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://github.com/djpohly/dwl|{{AUR|dwl}}}}
  +
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックタイル型 Wayland コンポジタ。|https://github.com/vaxerski/Hyprland|{{AUR|hyprland}}}}
 
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}
 
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}
  +
* {{App|newm|ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ。|https://github.com/jbuchermn/newm/|{{AUR|newm-git}}}}
 
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}
 
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}
* {{App|river|dwm [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://github.com/ifreund/river|{{AUR|river-git}}}}
+
* {{App|river|dwm [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://github.com/ifreund/river|{{AUR|river}}}}
 
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}
 
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}
* {{App|[[Velox]]|swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox}}}}
+
* {{App|[[Velox]]|swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}}
  +
* {{App|Vivarium|wlroots を使用するダイナミックタイル型 Wayland コンポジタ。[[xmonad]] にインスパイアされたデスクトップセマンティクスを持ちます。|https://github.com/inclement/vivarium|{{AUR|vivarium-git}}}}
 
* {{App|waymonad|[[Haskell]] で書かれた xmonad にインスパイアされた Wayland コンジタ。|https://github.com/waymonad/waymonad}}
 
* {{App|waymonad|[[Haskell]] で書かれた xmonad にインスパイアされた Wayland コンジタ。|https://github.com/waymonad/waymonad}}
* {{App|newm|ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ|https://github.com/jbuchermn/newm/|{{AUR|newm-git}}}}
 
   
 
=== スタック型 ===
 
=== スタック型 ===
   
* {{App|[[Enlightenment]]|[[Enlightenment#Enlightenment を手動で起動する]] を参照してください。詳細: [https://git.enlightenment.org/core/enlightenment.git/tree/README] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}
+
* {{App|[[Enlightenment]]|[[Enlightenment]]|[[Enlightenment#Enlightenment を手動で起動する]] を参照してください。詳細: [https://git.enlightenment.org/core/enlightenment.git/tree/README] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}
* {{App|Greenfield|Web ブラウザーで実行され、リモートアプリケーションを表示できます。|https://greenfield.app/}}
+
* {{App|Greenfield|Web ブラウザーで実行され、リモートアプリケーションを表示できます。|https://greenfield.app/}}
 
* {{App|Grefsen|最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。|https://github.com/ec1oud/grefsen}}
 
* {{App|Grefsen|最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。|https://github.com/ec1oud/grefsen}}
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしてい。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}
+
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Starting Plasma]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}
+
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Plasma の起動]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}
 
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}
 
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}
* {{App|labwc|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/johanmalm/labwc|{{AUR|labwc-git}}}}
+
* {{App|labwc|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/labwc/labwc|{{AUR|labwc-git}}}}
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#Starting]] を参照してください。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}
+
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#GNOME の起動]] を参照。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}
 
* {{App|wayfire|[[Compiz]] にインスパイアされ、wlroots に基づく 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}
 
* {{App|wayfire|[[Compiz]] にインスパイアされ、wlroots に基づく 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}
 
* {{App|[[Weston]]|Wayland コンポジタのリファレンス実装。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}
 
* {{App|[[Weston]]|Wayland コンポジタのリファレンス実装。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}
70行目: 74行目:
 
=== その他 ===
 
=== その他 ===
   
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。 |https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}
+
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}
 
* {{App|Maze Compositor|Qt を使用して 3D 迷路ウィンドウをレンダリングします。|https://github.com/imbavirus/mazecompositor}}
 
* {{App|Maze Compositor|Qt を使用して 3D 迷路ウィンドウをレンダリングします。|https://github.com/imbavirus/mazecompositor}}
 
* {{App|Motorcar|バーチャルリアリティを使用して 3D ウィンドウを探索する Wayland コンポジタ。|https://github.com/evil0sheep/motorcar}}
 
* {{App|Motorcar|バーチャルリアリティを使用して 3D ウィンドウを探索する Wayland コンポジタ。|https://github.com/evil0sheep/motorcar}}
  +
* {{App|nwg-shell|sway Wayland コンポジタのための、GTK ベースのシェル。|https://github.com/nwg-piotr/nwg-shell|{{AUR|nwg-shell}}}}
  +
* {{App|kiwmi|完全にプログラミング可能な Wayland コンポジタ。|https://github.com/buffet/kiwmi|{{AUR|kiwmi-git}}}}
   
 
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。
 
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。
79行目: 85行目:
 
== ディスプレイマネージャ ==
 
== ディスプレイマネージャ ==
   
Wayland コンポジタの実行をサポートし[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。
+
Wayland コンポジタの実行をサポートしている[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。
   
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
87行目: 93行目:
 
|-
 
|-
 
| [[GDM]]
 
| [[GDM]]
| Wayland/X11 上で動作
+
| Wayland 上で動作
 
| [[GNOME]] ディスプレイマネージャ。
 
| [[GNOME]] ディスプレイマネージャ。
 
|-
 
|-
| {{AUR|greetd}}
+
| [[greetd]]
 
| ログインデーモン
 
| ログインデーモン
 
| 最小でありながら柔軟なログインデーモン。
 
| 最小でありながら柔軟なログインデーモン。
 
|-
 
|-
 
| [[LightDM]]
 
| [[LightDM]]
  +
| X11 上で動作
| Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7]
 
 
| 様々なデスクトップに対応したディスプレイマネージャ。
 
| 様々なデスクトップに対応したディスプレイマネージャ。
 
|-
 
|-
| {{AUR|Ly}}
+
| [[Ly]]
 
| コンソール上で動作
 
| コンソール上で動作
| TUI ディスプレイマネージャ。
+
| C で書かれた TUI ディスプレイマネージャ。
 
|-
 
|-
 
| [[SDDM]]
 
| [[SDDM]]
| X11 上で動作 [https://github.com/sddm/sddm/pull/616]
+
| X11 上で動作
 
| QML ベースのディスプレイマネージャ。
 
| QML ベースのディスプレイマネージャ。
 
|-
 
|-
| {{AUR|tbsm}}
+
| [[tbsm]]
 
| コンソール上で動作
 
| コンソール上で動作
 
| bash のみに依存するシンプルな CLI セッションランチャー。
 
| bash のみに依存するシンプルな CLI セッションランチャー。
112行目: 118行目:
   
 
== GUI ライブラリ ==
 
== GUI ライブラリ ==
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。
 
   
  +
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] で詳細を確認してください。
=== GTK ===
 
   
  +
=== GTK ===
{{pkg|gtk3}} と {{pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。
 
   
WaylandX 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND&#61;x11}} 環境変数を設定することで Xwayland を使うように上書きできます。
+
{{Pkg|gtk3}}{{Pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、[[環境変数]]を設定することで Xwayland を使うように上書きできます: {{ic|1=GDK_BACKEND=x11}}
   
 
=== Qt ===
 
=== Qt ===
   
[[Qt]] 5 または 6 Wayland サポートしています。{{Pkg|qt5-wayland}} または {{Pkg|qt6-wayland}} パッケージをインストールしてください。
+
[[Qt]] 5 または 6 Wayland サポートを有効化するには、Qt 5 と 6 に対してそれぞれ {{Pkg|qt5-wayland}} または {{Pkg|qt6-wayland}} パッケージをインストールしてください。
   
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} とセットます
+
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定てください
 
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
 
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
また、{{ic|1=QT_QPA_PLATFORM="wayland;xcb"}} を使用すると、QtがWayland利用できない場合、代わりにxcb (X11)プラグインを使用させることができます。[https://www.qt.io/blog/2018/05/29/whats-new-in-qt-5-11-for-the-wayland-platform-plugin]
+
また、{{ic|1=QT_QPA_PLATFORM="wayland;xcb"}} を使用すると、Qt Wayland利用できない場合、代わりに xcb (X11)プラグインを使用させることができます。[https://www.qt.io/blog/2018/05/29/whats-new-in-qt-5-11-for-the-wayland-platform-plugin]
   
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 [https://keepassxc.org KeepassXC] はトレイに最小化できません。 これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、 {{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。
+
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、[https://keepassxc.org KeepassXC] はトレイに最小化できません。これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、{{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。
   
===Clutter===
+
=== Clutter ===
   
 
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。
 
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。
   
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND&#61;wayland}} を設定する必要があります。
+
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。
   
===SDL2 ===
+
=== SDL2 ===
   
SDL2 アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&#61;wayland}} を設定します
+
SDL2 アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|1=SDL_VIDEODRIVER=wayland}} を設定してください
   
{{Note|Wayland 未対応の古い SDL が内部に含またゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を定すると動作が壊れる場合があり。アプリケーションを XWayland で強制的に実行するには、{{ic|1=SDL_VIDEODRIVER=x11}} を設定します。}}
+
{{Note|多くプロプライエタリなゲームが古いバージョンの SDL を使用しており、こ Wayland に対応しておらず、{{ic|1=SDL_VIDEODRIVER=wayland}} を定するとゲーム完全に壊れてしうかもしれません。アプリケーションを XWayland で強制的に実行するには、{{ic|1=SDL_VIDEODRIVER=x11}} を設定してください。}}
   
 
=== GLFW ===
 
=== GLFW ===
   
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。
+
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} ではなく) {{Pkg|glfw-wayland}} パッケージをインストールしてください。
   
 
=== GLEW ===
 
=== GLEW ===
150行目: 155行目:
 
{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。
 
{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。
   
===EFL===
+
=== EFL ===
   
 
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。
 
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。
156行目: 161行目:
 
=== winit ===
 
=== winit ===
   
[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することできます{{ic|WINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください
+
Winit は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます: {{ic|1=WINIT_UNIX_BACKEND=x11}}。
   
 
=== Electron ===
 
=== Electron ===
   
  +
{{Accuracy|Where is the bug report about flags from config have more priority over command line flags? And what version was meant under "currently"?}}
{{Pkg|electron}} ベースのアプリケーションを Wayland でネイティブに使用するには、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} を作成または編集して、次のオプションを追加します。
 
  +
  +
{{Note|残念ながら、Electron で Wayland を有効化させる環境変数は存在しません。アプリケーションごとにコマンドラインフラグや設定ファイルを使用しなければならないのです。Electron にこのサポートを追加する [https://github.com/electron/electron/issues/30897 open feature request] があります。}}
  +
  +
Wayland サポートは、アプリケーションごとにコマンドラインフラグを使うことでも可能ですし、あるいは設定ファイルを使ってよりグローバルに有効化させることもできます。現在、設定ファイルで渡されるフラグは、コマンドラインで渡されるフラグよりも優先されます。もし一部のアプリケーションが別の引数を必要とするのであれば、設定ファイルでフラグが重複しないように注意しなければなりません。
  +
  +
==== コマンドラインフラグ ====
  +
  +
Wayland で {{Pkg|electron}} ベースのアプリケーションをネイティブに使用するには、次のフラグをアプリケーションの exec コマンドラインに追加する必要があります: {{ic|1=--enable-features=UseOzonePlatform --ozone-platform=wayland}}。
  +
  +
トップバーが消失する問題は、代わりに次のフラグを使用することで解決できます: {{ic|1=--enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform=wayland}}。このフラグは通常、[[GNOME]] ([https://github.com/electron/electron/pull/29618 electron17] より対応) で必要となります。
  +
  +
コマンドラインフラグの設定は、例えば [[デスクトップエントリ#desktop ファイルの変更|.desktop ファイルを変更]]し、{{ic|1=Exec=}} 行の最後にフラグを追加することで可能です。
  +
  +
{{Warning|[[Visual Studio Code]] のような ([https://github.com/microsoft/vscode/issues/134612 バグレポート]) 一部のアプリケーションは Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}}
  +
  +
==== 設定ファイル ====
  +
  +
ファイル {{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} ({{ic|${XDG_CONFIG_HOME} }} が設定されていない場合、{{ic|1=.config/electron-flags.conf}} がデフォルトです) を作成/編集し、先に説明したフラグを追加してください (1行につき1オプションです):
   
 
{{hc|1=~/.config/electron-flags.conf|2=
 
{{hc|1=~/.config/electron-flags.conf|2=
--enable-features=UseOzonePlatform
+
--enable-features=UseOzonePlatform,WaylandWindowDecorations
 
--ozone-platform=wayland
 
--ozone-platform=wayland
 
}}
 
}}
   
古いバージョンの electron は独自の {{ic|electron-flags.conf}} ファイルが必であることに注意てください''electron12'' パッケージがイストールされている場合は、次のようます。
+
{{Note|古いバージョンの Electron独自の {{ic|electron<version>-flags.conf}} ファイルますージ付けされたファイルは、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} ソフトリンクすることができます。}}
 
$ ln -s electron-flags.conf ~/.config/electron12-flags.conf
 
 
{{ic|${XDG_CONFIG_HOME} }} 内にコピーしてください、または、異なる {{Pkg|electron}} バージョンで異なるランタイムオプションを使用したい場合は、別の {{ic|${XDG_CONFIG_HOME}/electron12-flags.conf}} ファイルを使用する必要があります。
 
   
  +
{{Warning|一部のアプリケーションは設定ファイルを読み込まないため、そのアプリケーションの開発者が解決策を実装する必要があります。}}
{{Tip|Electron-flags をグローバルに上書きする代わりに、[[デスクトップエントリ]] を変更するとよいでしょう。}}
 
   
 
=== Java ===
 
=== Java ===
182行目: 201行目:
 
== XWayland ==
 
== XWayland ==
   
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。
+
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。レガシー [[X11]] アプリケーションに下位互換性を提供します。
   
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。
+
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。
   
XWaylandはコンポジタを介して開始されるため、選択したコンポジタを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。
+
XWayland はコンポジタを介して開始されるため、選択したコンポジタを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。
   
{{Note|セキュリティについて: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。
+
{{Note|セキュリティについて: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。}}
}}
 
   
 
=== NVIDIA ドライバ ===
 
=== NVIDIA ドライバ ===
   
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェアアクセラレーションされた XWayland をサポートしておらず、Wayland 以外のアプリケーション Wayland セッションのパフォーマンスが低下します。}}
+
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェア支援のある XWayland をサポートしておらず、Wayland ネイティブなアプリケーション Wayland セッションのパフォーマンスが低下します。}}
   
なお、[[NVIDIA#DRM kernel mode setting|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://us.download.nvidia.com/XFree86/Linux-x86_64/470.42.01/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。
+
なお、[[NVIDIA#DRM カーネルモードセッティング|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
  +
  +
=== 自動化 ===
  +
  +
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{AUR|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold|url=https://github.com/ReimuNotMoe/ydotool/blob/master/manpage/ydotoold.8.scd}}、{{man|1|ydotoold|url=https://github.com/ReimuNotMoe/ydotool/blob/master/manpage/ydotool.1.scd}} を参照。
  +
* [https://github.com/atx/wtype wtype] ({{Pkg|wtype}}) - Wayland 用 xdotool type。{{man|1|wtype}} を参照。
  +
* [https://github.com/boppreh/keyboard keyboard] - Windows と Linux で動作する Python ライブラリ。実験的な OS X サポートあり。[https://github.com/boppreh/mouse mouse] ライブラリも参照。
   
 
=== Kwin Wayland デバッグコンソール ===
 
=== Kwin Wayland デバッグコンソール ===
212行目: 236行目:
 
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。
 
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。
   
  +
他の方法として、({{Pkg|xorg-xwininfo}} の) ''xwininfo'' をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。
=== キーボードのリマップ ===
 
  +
  +
=== キーボードやマウスキーのリマップ ===
   
 
[[入力リマップユーティリティ]] を見てください。
 
[[入力リマップユーティリティ]] を見てください。
224行目: 250行目:
 
=== 動作が遅い、表示がおかしい、クラッシュする ===
 
=== 動作が遅い、表示がおかしい、クラッシュする ===
   
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} などの rc ファイルから該当箇所を削除してみてください。
+
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} rc ファイルから該当箇所を削除してみてください。
   
  +
=== Cannot open display: :0 with Electron-based applications ===
=== Electron ベースのアプリケーションでは、ディスプレイ::0を開けません ===
 
   
  +
{{Accuracy|Why does it break Electron applications? This needs some links to relevant issues}}
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。
 
  +
  +
{{ic|1=GDK_BACKEND=wayland}} を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。
   
 
=== リモートディスプレイ ===
 
=== リモートディスプレイ ===
   
  +
* ([[sway]] で使用されている) {{pkg|wlroots}} は、バージョン 0.10 より、{{Pkg|wayvnc}} を使って VNC バックエンドを提供しています。RDP バックエンドは削除されました [https://github.com/swaywm/wlroots/releases/tag/0.10.0]。
いくつか選択肢が考えられます:
 
  +
* {{pkg|mutter}} はコンパイル時にリモートデスクトップが有効化されています。詳細は [https://wiki.gnome.org/Projects/Mutter/RemoteDesktop] と {{Pkg|gnome-remote-desktop}} を見てください。
* [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。
 
* [[Weston]] RDP バックエンドまれています。{{man|7|weston-rdp}} を参照してください。
+
* 2013年FreeRDP Weston にマージされした。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化れてます
  +
* {{AUR|waypipe}} (や {{AUR|waypipe-git}}) は Wayland アプリケーションの透過プロキシです。[[SSH]] 上で動作するラッパーコマンドあり。
* {{Pkg|mutter}} ベースの場合は {{Pkg|gnome-remote-desktop}} が使えます。[https://wiki.gnome.org/Projects/Mutter/RemoteDesktop 公式サイト] を参照してください。
 
* {{AUR|waypipe}} や {{AUR|waypipe-git}} は Wayland アプリケーションの透過プロキシです。[[SSH]] を組み合わせることで外部から操作できます。詳細は[https://gitlab.freedesktop.org/mstoeckl/waypipe 公式サイト]を参照してください。
 
   
 
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===
 
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===
   
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
+
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません (例: [https://tronche.com/gui/x/xlib/input/XGrabKeyboard.html キーボード]、[https://tronche.com/gui/x/xlib/input/XGrabPointer.html マウス])。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
   
 
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
 
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
  +
 
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
 
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
 
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
 
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
   
 
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。
 
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。
  +
  +
これらの拡張はすでに {{pkg|wayland-protocols}} に含まれており、{{pkg|xorg-xwayland}} によってサポートされています。
   
 
関連する拡張:
 
関連する拡張:
  +
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing protocol] (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [https://lists.x.org/archives/xorg-devel/2017-August/054231.html])
 
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]
+
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing protocol]
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]
+
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]
+
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]
  +
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]
   
 
サポートしている Wayland コンポジタ:
 
サポートしている Wayland コンポジタ:
  +
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。
 
  +
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以降)。
* {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応)
 
  +
* wlroots (Relative pointer protocols と Pointer constraints protocol に対応)
   
 
サポートしているウィジェットツールキット:
 
サポートしているウィジェットツールキット:
  +
* GTK (リリース 3.22.18 以上)。
 
  +
* GTK (リリース 3.22.18 以降)。
   
 
=== GTK テーマが動かない ===
 
=== GTK テーマが動かない ===
272行目: 305行目:
   
 
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]
 
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]
* [https://gitlab.freedesktop.org/wayland Official Wayland Git Repo]
+
* [https://gitlab.freedesktop.org/wayland 公式 Wayland Git リポジトリ]
* [[Fedora:How to debug Wayland problems|Fedora Wiki の Wayland のデバッグに関する記事]]
+
* [[Fedora:How to debug Wayland problems]]
 
* [https://arewewaylandyet.com/ Are we Wayland yet?]
 
* [https://arewewaylandyet.com/ Are we Wayland yet?]
 
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]
 
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]
280行目: 313行目:
 
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]
 
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]
 
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]
 
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]
  +
* [https://askubuntu.com/questions/1393618/how-can-i-tell-if-an-application-is-using-xwayland How can I tell if an application is using XWayland]
  +
  +
{{TranslationStatus|Wayland|2022-08-13|739189}}

2022年8月13日 (土) 06:37時点における版

関連記事

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

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

レガシーな X11 アプリケーションをシームレスに動かすための後方互換性として、XWayland を使うことができます。これは Wayland に X サーバを提供します。

要件

ほとんどの Wayland コンポジタは、カーネルモードセッティングを利用しているシステムでのみ動作します。Wayland それ自体はグラフィカルな環境を提供しません。ゆえに、Wayland に加えてコンポジタ (以下のセクションを参照)、あるいは、コンポジタを含むデスクトップ環境 (例: GNOMEKDE) が必要となります。

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

バッファ API GPU ドライバーのサポート Wayland コンポジタのサポート
GBM NVIDIA < 495* 以外の全てのドライバー 全て
EGLStreams NVIDIA GNOMEKDE、(サードパーティのパッチを適用した) Weston
*: Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします[1]
GBM をバックエンドとして使うには、次の環境変数を設定してください:
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia

コンポジタ

タイル型スタック型 の違いは、ウィンドウマネージャ#種類 を参照してください。

タイル型

https://github.com/project-repo/cagebreak || cagebreakAUR
  • Cardboard — スクロールコンポジタ。wlroots をベースに、PaperWM にインスパイアされています。
https://gitlab.com/cardboardwm/cardboard || cardboard-gitAUR
  • dwl — wlroots ベースの dwm ライクな Wayland コンポジタ。
https://github.com/djpohly/dwl || dwlAUR
  • Hyprland — 見た目を犠牲にしないダイナミックタイル型 Wayland コンポジタ。
https://github.com/vaxerski/Hyprland || hyprlandAUR
  • japokwm — wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。
https://github.com/werererer/japokwm || japokwm-gitAUR
  • newm — ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ。
https://github.com/jbuchermn/newm/ || newm-gitAUR
  • Qtile — Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。
https://github.com/qtile/qtile || qtile
  • river — dwm bspwm にインスパイアされた動的なタイル型 Wayland コンポジタ。
https://github.com/ifreund/river || riverAUR
  • Sway — wlroots ベースの i3 互換 Wayland コンポジタ。
https://github.com/swaywm/sway || sway
  • Velox — swc ベースのシンプルなウィンドウマネージャです。dwmxmonad の影響を受けています。
https://github.com/michaelforney/velox || velox-gitAUR
  • Vivarium — wlroots を使用するダイナミックタイル型 Wayland コンポジタ。xmonad にインスパイアされたデスクトップセマンティクスを持ちます。
https://github.com/inclement/vivarium || vivarium-gitAUR
  • waymonadHaskell で書かれた xmonad にインスパイアされた Wayland コンジタ。
https://github.com/waymonad/waymonad || パッケージが存在しないか AUR で検索

スタック型

Enlightenment#Enlightenment を手動で起動する を参照してください。詳細: [2] [3] || https://www.enlightenment.org/
  • Greenfield — Web ブラウザーで実行され、リモートのアプリケーションを表示できます。
https://greenfield.app/ || パッケージが存在しないか AUR で検索
  • Grefsen — 最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。
https://github.com/ec1oud/grefsen || パッケージが存在しないか AUR で検索
  • hikari — FreeBSD で活発に開発されている cwm にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。
https://hikari.acmelabs.space/ || hikariAUR
https://userbase.kde.org/KWin || kwin
  • Liri ShellLiri の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。
https://github.com/lirios/shell || liri-shell-gitAUR
  • labwc — Openbox にインスパイアされた wlroots ベースのコンポジタ。
https://github.com/labwc/labwc || labwc-gitAUR
https://gitlab.gnome.org/GNOME/mutter || mutter
  • wayfireCompiz にインスパイアされ、wlroots に基づく 3D コンポジタ。
https://wayfire.org/ || wayfireAUR
  • Weston — Wayland コンポジタのリファレンス実装。
https://gitlab.freedesktop.org/wayland/weston || weston
  • wio — Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。
https://wio-project.org/ || パッケージが存在しないか AUR で検索

その他

  • Cage — キオスクのような単一のフルスクリーンアプリケーションを表示します。
https://www.hjdskes.nl/projects/cage/ || cage
  • Maze Compositor — Qt を使用して 3D 迷路ウィンドウをレンダリングします。
https://github.com/imbavirus/mazecompositor || パッケージが存在しないか AUR で検索
  • Motorcar — バーチャルリアリティを使用して 3D ウィンドウを探索する Wayland コンポジタ。
https://github.com/evil0sheep/motorcar || パッケージが存在しないか AUR で検索
  • nwg-shell — sway Wayland コンポジタのための、GTK ベースのシェル。
https://github.com/nwg-piotr/nwg-shell || nwg-shellAUR
  • kiwmi — 完全にプログラミング可能な Wayland コンポジタ。
https://github.com/buffet/kiwmi || kiwmi-gitAUR

上記のいくつかは ディスプレイマネージャ をサポートする場合があります。 それらがどのように開始されるかを /usr/share/wayland-sessions/compositor.desktop を見て確認してください。

ディスプレイマネージャ

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

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

GUI ライブラリ

公式ウェブサイト で詳細を確認してください。

GTK

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

Qt

Qt 5 または 6 で Wayland のサポートを有効化するには、Qt 5 と 6 に対してそれぞれ qt5-wayland または qt6-wayland パッケージをインストールしてください。

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

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

Clutter

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

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

SDL2

SDL2 アプリケーションを Wayland 上で動作させるには、環境変数 SDL_VIDEODRIVER=wayland を設定してください。

ノート: 多くのプロプライエタリなゲームが古いバージョンの SDL を使用しており、これらは Wayland に対応しておらず、SDL_VIDEODRIVER=wayland を設定するとゲームが完全に壊れてしまうかもしれません。アプリケーションを XWayland で強制的に実行するには、SDL_VIDEODRIVER=x11 を設定してください。

GLFW

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

GLEW

glew-waylandAUR パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で glew を使うことです。FS#62713 を参照してください。

EFL

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

winit

Winit は Rust で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます: WINIT_UNIX_BACKEND=x11

Electron

この記事またはセクションの正確性には問題があります。
理由: Where is the bug report about flags from config have more priority over command line flags? And what version was meant under "currently"? (議論: トーク:Wayland#)
ノート: 残念ながら、Electron で Wayland を有効化させる環境変数は存在しません。アプリケーションごとにコマンドラインフラグや設定ファイルを使用しなければならないのです。Electron にこのサポートを追加する open feature request があります。

Wayland サポートは、アプリケーションごとにコマンドラインフラグを使うことでも可能ですし、あるいは設定ファイルを使ってよりグローバルに有効化させることもできます。現在、設定ファイルで渡されるフラグは、コマンドラインで渡されるフラグよりも優先されます。もし一部のアプリケーションが別の引数を必要とするのであれば、設定ファイルでフラグが重複しないように注意しなければなりません。

コマンドラインフラグ

Wayland で electron ベースのアプリケーションをネイティブに使用するには、次のフラグをアプリケーションの exec コマンドラインに追加する必要があります: --enable-features=UseOzonePlatform --ozone-platform=wayland

トップバーが消失する問題は、代わりに次のフラグを使用することで解決できます: --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform=wayland。このフラグは通常、GNOME (electron17 より対応) で必要となります。

コマンドラインフラグの設定は、例えば .desktop ファイルを変更し、Exec= 行の最後にフラグを追加することで可能です。

警告: Visual Studio Code のような (バグレポート) 一部のアプリケーションは Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。

設定ファイル

ファイル ${XDG_CONFIG_HOME}/electron-flags.conf (${XDG_CONFIG_HOME} が設定されていない場合、.config/electron-flags.conf がデフォルトです) を作成/編集し、先に説明したフラグを追加してください (1行につき1オプションです):

~/.config/electron-flags.conf
--enable-features=UseOzonePlatform,WaylandWindowDecorations
--ozone-platform=wayland
ノート: 古いバージョンの Electron は、独自の electron<version>-flags.conf ファイルを要求します。バージョン付けされたファイルは、${XDG_CONFIG_HOME}/electron-flags.conf にソフトリンクすることができます。
警告: 一部のアプリケーションは設定ファイルを読み込まないため、そのアプリケーションの開発者が解決策を実装する必要があります。

Java

Java プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。 OpenJDK に Wayland を実装することを目的としたプロジェクトである Wakefield が実用できるようになるまで、XWayland を使用して下さい。

XWayland

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

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

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

ノート: セキュリティについて: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。

NVIDIA ドライバ

ノート: バージョン 470 より前の Nvidia ドライバ(例: nvidia-390xx-dkmsAUR) はハードウェア支援のある XWayland をサポートしておらず、非 Wayland ネイティブなアプリケーションは Wayland セッションでのパフォーマンスが低下します。

なお、DRM KMS を有効にする必要があります。また、お使いのディスプレイマネージャ(例: GDM)の公式ドキュメントに記載されている情報も見てください。

ヒントとテクニック

自動化

Kwin Wayland デバッグコンソール

kwin を使用している場合、以下を実行すると、どのウィンドウが Xwayland とネイティブ Wayland を使用しているか、表面、入力イベント、クリップボードの内容などを確認することができます。

$ qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole

Xwayland アプリケーションであることを視認する

アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、extramausAUR を使用します。 アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。

または、xorg-xeyes を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。

他の方法として、(xorg-xwininfo の) xwininfo をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。Ctrl+C を押すことで xwininfo を終了できます。

キーボードやマウスキーのリマップ

入力リマップユーティリティ を見てください。

トラブルシューティング

色補正

バックライト#色補正を参照。

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

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

Cannot open display: :0 with Electron-based applications

この記事またはセクションの正確性には問題があります。
理由: Why does it break Electron applications? This needs some links to relevant issues (議論: トーク:Wayland#)

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

リモートディスプレイ

  • (sway で使用されている) wlroots は、バージョン 0.10 より、wayvnc を使って VNC バックエンドを提供しています。RDP バックエンドは削除されました [6]
  • mutter はコンパイル時にリモートデスクトップが有効化されています。詳細は [7]gnome-remote-desktop を見てください。
  • 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。weston パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。
  • waypipeAUR (や waypipe-gitAUR) は Wayland アプリケーションの透過プロキシです。SSH 上で動作するラッパーコマンドあり。

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

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

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

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

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

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

関連する拡張:

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

  • Mutter, GNOME のコンポジタ (リリース 3.28 以降)。
  • wlroots (Relative pointer protocols と Pointer constraints protocol に対応)

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

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

GTK テーマが動かない

https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。

NVIDIA モジュールを読み込まないようにする

sway などの Wayland コンポジターを起動する前に __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json環境変数 として追加します。

参照

翻訳ステータス: このページは en:Wayland の翻訳バージョンです。最後の翻訳日は 2022-08-13 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。