「Wayland」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎GUI ライブラリ: 英語版と同期)
(3人の利用者による、間の14版が非表示)
3行目: 3行目:
 
[[en:Wayland]]
 
[[en:Wayland]]
 
[[fr:Wayland]]
 
[[fr:Wayland]]
  +
[[pt:Wayland]]
 
[[ru:Wayland]]
 
[[ru:Wayland]]
 
[[zh-hans:Wayland]]
 
[[zh-hans:Wayland]]
8行目: 9行目:
 
{{Related|Kernel Mode Setting}}
 
{{Related|Kernel Mode Setting}}
 
{{Related|Xorg}}
 
{{Related|Xorg}}
{{Related|Mir}}
+
{{Related|スクリーンショットの取得}}
{{Related|カーソルテーマ}}
 
 
{{Related articles end}}
 
{{Related articles end}}
 
'''Wayland''' は Linux の新しいウィンドウプロトコルです。[[GNOME]] や [[KDE]] などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして [https://wayland.freedesktop.org/xserver.html XWayland] があります。
 
'''Wayland''' は Linux の新しいウィンドウプロトコルです。[[GNOME]] や [[KDE]] などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして [https://wayland.freedesktop.org/xserver.html XWayland] があります。
   
 
== 要件 ==
 
== 要件 ==
今のころ Wayland は [[KMS]] を利用しているシステムでしか動作できせん
+
んどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作
   
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[#Weston|Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。
+
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。
 
=== バッファ API のサポート ===
 
   
 
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] です。
31行目: 29行目:
 
|-
 
|-
 
|}
 
|}
 
== Weston ==
 
Weston は Wayland コンポジタのリファレンス実装です。
 
 
=== インストール ===
 
{{pkg|weston}} パッケージをインストールしてください。
 
 
=== 使用方法 ===
 
Weston をインストールしたのなら Wayland をテストする環境が整っているはずです。
 
 
起動中の X セッションの中で Weston を実行することができます:
 
$ weston
 
 
もしくは、Weston をネイティブで起動するには、端末を切り替えて次を実行して見て下さい:
 
$ weston-launch
 
 
Weston の TTY からデモを実行できます。ターミナルエミュレータを起動するには:
 
$ weston-terminal
 
 
画面に花を散らすには:
 
$ weston-flower
 
 
画像を表示するには:
 
$ weston-image image1.jpg image2.jpg...
 
 
=== 設定 ===
 
 
キーボードレイアウト・モジュール・UI の設定ファイルの例です。詳しくは {{man|5|weston.ini}} を見て下さい。Weston の出力設定は {{ic|xorg.conf}} のモニターと多少異なります:
 
 
$ ls /sys/class/drm
 
card0
 
card0-VGA-1
 
card1
 
card1-DVI-I-1
 
card1-HDMI-A-1
 
card1-VGA-2
 
 
{{ic|card0}} は使われていない内蔵ビデオアダプタです。追加アダプタ {{ic|card1}} は HDMI と DVI モニターに接続されており、出力名が {{ic|HDMI-A-1}} と {{ic|DVI-I-1}} です。
 
 
{{hc|~/.config/weston.ini|<nowiki>
 
[core]
 
# xwayland support
 
xwayland=true
 
 
[libinput]
 
enable_tap=true
 
 
[shell]
 
background-image=/usr/share/backgrounds/gnome/Aqua.jpg
 
background-color=0xff002244
 
panel-color=0x90ff0000
 
locking=true
 
animation=zoom
 
close-animation=fade
 
focus-animation=dim-layer
 
#binding-modifier=ctrl
 
#num-workspaces=6
 
### for cursor themes install xcursor-themes pkg from Extra. ###
 
#cursor-theme=whiteglass
 
#cursor-size=24
 
 
### tablet options ###
 
#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
 
#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
 
#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
 
#animation=fade
 
 
### for Laptop displays ###
 
#[output]
 
#name=LVDS1
 
#mode=1680x1050
 
#transform=90
 
 
#[output]
 
#name=VGA1
 
# The following sets the mode with a modeline, you can get modelines for your preffered resolutions using the cvt utility
 
#mode=173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
 
#transform=flipped
 
 
#[output]
 
#name=X1
 
#mode=1024x768
 
#transform=flipped-270
 
 
[input-method]
 
#path=/usr/lib/weston/weston-keyboard
 
 
[keyboard]
 
keymap_rules=evdev
 
#keymap_layout=gb,de
 
#keymap_options=caps:ctrl_modifier,shift:both_capslock_cancel
 
### keymap_options from /usr/share/X11/xkb/rules/base.lst ###
 
numlock-on=true
 
 
[terminal]
 
#font=DroidSansMono
 
#font-size=14
 
 
[launcher]
 
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
 
path=/usr/bin/weston-terminal
 
 
[launcher]
 
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
 
path=/usr/bin/gnome-terminal
 
 
[launcher]
 
icon=/usr/share/icons/hicolor/24x24/apps/firefox.png
 
path=/usr/bin/firefox
 
 
[launcher]
 
icon=/usr/share/weston/icon_flower.png
 
path=/usr/bin/weston-flower
 
 
[screensaver]
 
# Uncomment path to disable screensaver
 
path=/usr/libexec/weston-screensaver
 
duration=600
 
</nowiki>}}
 
 
最小の {{ic|weston.ini}}:
 
{{hc|~/.config/weston.ini|<nowiki>
 
[core]
 
xwayland=true
 
 
[keyboard]
 
keymap_layout=gb
 
 
[output]
 
name=LVDS1
 
mode=1680x1050
 
transform=90
 
 
[launcher]
 
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
 
path=/usr/bin/weston-terminal
 
 
[launcher]
 
icon=/usr/share/icons/hicolor/24x24/apps/firefox.png
 
path=/usr/bin/firefox
 
</nowiki>}}
 
 
==== XWayland ====
 
 
{{Pkg|xorg-server-xwayland}} パッケージをインストールしてください。
 
 
Weston の中で X アプリケーションを動かすには、Xwayland を使ってリクエストを処理させます。以下の設定ファイルを作成してください:
 
{{hc|~/.config/weston.ini|
 
<nowiki>[core]
 
xwayland=true</nowiki>
 
}}
 
 
{{Note|X を設定していない場合、キーマップの設定が必要です: [[Xorg でのキーボード設定]]。}}
 
 
==== スクリーンキャスト録画 ====
 
Weston にはスクリーンキャスト機能が備わっており、{{ic|Super+r}} キーを押すことで録画を開始・停止することができます。スクリーンキャストは Weston のカレントディレクトリ内の {{ic|capture.wcap}} ファイルに保存されます。
 
 
WCAP ファイルは Weston 専用のロスレス動画フォーマットで、フレーム間の差異だけを記録しています。記録されたスクリーンキャストを再生するには、WCAP ファイルをメディアプレイヤーが再生できるフォーマットに変換する必要があります。まず、録画した動画を YUV ピクセル形式に変換してください:
 
 
$ wcap-decode capture.wcap --yuv4mpeg2 > capture.y4m
 
 
作成された YUV ファイルは [[FFmpeg]] を使うことで他のフォーマットに変換できます。
 
 
==== HiDPI ディスプレイ ====
 
Retina または [[HiDPI]] のディスプレイでは以下を使用してください:
 
{{hc|~/.config/weston.ini|<nowiki>
 
[output]
 
name=...
 
scale=2
 
</nowiki>}}
 
 
==== シェルのフォント ====
 
 
Weston はウィンドウのタイトルバーや時計などにデフォルトの sans-serif フォントを使用します。フォントを変更する方法は[[フォント設定#フォントの置き換え]]を見て下さい。
 
   
 
== GUI ライブラリ ==
 
== GUI ライブラリ ==
222行目: 46行目:
   
 
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、環境変数 {{ic|1=QT_QPA_PLATFORM=wayland-egl}} をセットして下さい。一方、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-egl}} をセットして下さい。一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} とセットします。
  +
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
  +
  +
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 [https://keepassxc.org KeepassXC] はトレイに最小化できません。 これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、 {{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。
   
 
===Clutter===
 
===Clutter===
231行目: 58行目:
 
===SDL===
 
===SDL===
   
  +
SDL アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&#61;wayland}} を設定する必要があります。一方、XWayland を使うようにするには、{{ic|1=SDL_VIDEODRIVER=x11}} を指定します。
SDL 2.0.2 から実験的に wayland がサポートされており、Arch Linux ではデフォルトで有効になっています。
 
   
SDL アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&#61;wayland}} を定する必要があります。
+
{{Note|Wayland 未対応の古い SDL が内部含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を定すると動作が壊れる場合があります。}}
   
 
=== GLFW ===
 
=== GLFW ===
246行目: 73行目:
   
 
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。
 
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。
  +
  +
=== winit ===
  +
  +
[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。{{ic|XINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください。
  +
  +
== ディスプレイマネージャ ==
  +
  +
Wayland コンポジタの実行をサポートした[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。
  +
  +
{| class="wikitable sortable"
  +
! 名前
  +
! 種類
  +
! 説明
  +
|-
  +
| [[GDM]]
  +
| Wayland/X11 上で動作
  +
| [[GNOME]] ディスプレイマネージャ。
  +
|-
  +
| {{AUR|greetd}}
  +
| ログインデーモン
  +
| 最小でありながら柔軟なログインデーモン。
  +
|-
  +
| [[LightDM]]
  +
| Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7]
  +
| 様々なデスクトップに対応したディスプレイマネージャ。
  +
|-
  +
| {{AUR|Ly}}
  +
| コンソール上で動作
  +
| TUI ディスプレイマネージャ。
  +
|-
  +
| [[SDDM]]
  +
| X11 上で動作 [https://github.com/sddm/sddm/pull/616]
  +
| QML ベースのディスプレイマネージャ。
  +
|-
  +
| {{AUR|tbsm}}
  +
| コンソール上で動作
  +
| bash のみに依存するシンプルな CLI セッションランチャー。
  +
|}
   
 
==ウィンドウマネージャとデスクトップシェル==
 
==ウィンドウマネージャとデスクトップシェル==
251行目: 116行目:
 
===GNOME===
 
===GNOME===
   
{{Warning|Gnome Wayland セッションは {{pkg|xorg-server-xwayland}} をインストールしていないと起動しません。}}
+
{{Warning|Gnome Wayland セッションは {{Pkg|xorg-xwayland}} をインストールしていないと起動しません。}}
   
 
バージョン 3.14 から、[[GNOME]] は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。
 
バージョン 3.14 から、[[GNOME]] は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。
303行目: 168行目:
   
 
[https://github.com/ec1oud/grefsen Grefsen] はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。
 
[https://github.com/ec1oud/grefsen Grefsen] はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。
  +
  +
== XWayland ==
  +
  +
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。
  +
  +
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。
  +
  +
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。
  +
  +
{{Note|
  +
*セキュリティについて: XWaylandはX サーバーであるため、 Wayland のセキュリティ機能はありません。
  +
*現時点では、 Nvidia 独自のドライバーは XWayland の GPU アクセラレーションをサポートしていません。 [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6429this] または [https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/587this] の pull request を参照してください。
  +
}}
   
 
==トラブルシューティング==
 
==トラブルシューティング==
316行目: 194行目:
   
 
$ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so
 
$ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so
  +
  +
=== Electron ベースのアプリケーションでは、ディスプレイ::0を開けません ===
  +
  +
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。
   
 
=== 動作が遅い、表示がおかしい、クラッシュする ===
 
=== 動作が遅い、表示がおかしい、クラッシュする ===
 
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 ファイルから該当箇所を削除してみてください。
  +
  +
=== リモートディスプレイ ===
  +
  +
いくつか選択肢が考えられます:
  +
* [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。
  +
* [[Weston]] には RDP バックエンドが含まれています。{{man|7|weston-rdp}} を参照してください。
  +
* {{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 公式サイト]を参照してください。
   
 
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===
 
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===
328行目: 218行目:
 
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
 
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
   
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。
+
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です
   
 
関連する拡張:
 
関連する拡張:
338行目: 228行目:
 
サポートしている 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 に対応)
   
 
サポートしているウィジェットツールキット:
 
サポートしているウィジェットツールキット:

2021年2月17日 (水) 00:02時点における版

関連記事

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

要件

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

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

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

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

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 アプリケーションを動作させるには、[1] にあるように、-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

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

ディスプレイマネージャ

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

名前 種類 説明
GDM Wayland/X11 上で動作 GNOME ディスプレイマネージャ。
greetdAUR ログインデーモン 最小でありながら柔軟なログインデーモン。
LightDM Wayland/X11 上で動作 [2] 様々なデスクトップに対応したディスプレイマネージャ。
LyAUR コンソール上で動作 TUI ディスプレイマネージャ。
SDDM X11 上で動作 [3] 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 で安定動作するとされています。詳しくは [4] を参照。

KDE

KDE#Wayland を見てください。

Loliwm

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

sway

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

Velox

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

Orbital

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

Liri Shell

Liri ShellLiri のデスクトップシェルであり、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 アクセラレーションをサポートしていません。 [5] または [6] の 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 以上)。

参照