「Wayland」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(5人の利用者による、間の20版が非表示)
1行目: 1行目:
[[Category:X サー]]
+
[[Category:グラフィカルユインターフェイス]]
 
[[es:Wayland]]
 
[[es:Wayland]]
 
[[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 はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[#Weston|Weston]] などの) コンポジタが必要です。
+
んどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作ます。
   
  +
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。
=== バッファ API のサポート ===
 
   
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [http://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"
26行目: 26行目:
 
| GBM || [[NVIDIA]] 以外の全てのドライバー || 全てのコンポジタ
 
| GBM || [[NVIDIA]] 以外の全てのドライバー || 全てのコンポジタ
 
|-
 
|-
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[Sway]], Grefsen
+
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] ([https://www.phoronix.com/scan.php?page=news_item&px=EGLStreams-Merged-KWin-5.16 Plasma 5.16+])
 
|-
 
|-
 
|}
 
|}
 
== 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 ライブラリ ==
[http://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。
+
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。
   
 
=== GTK+ 3 ===
 
=== GTK+ 3 ===
211行目: 37行目:
 
公式リポジトリの {{pkg|gtk3}} パッケージは Wayland バックエンドが有効になっています。
 
公式リポジトリの {{pkg|gtk3}} パッケージは Wayland バックエンドが有効になっています。
   
GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになQt lighthouse と同じ方法でバックエンドを切り替えることきるようになりした
+
Wayland X 両方のバックエンドが有効になっているときGTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND&#61;x11}} 環境変数を設定することで Xwayland を使うように上書きでき
   
Wayland X 両方のバックエンドが有効になっているときGTK+ ではデフォルトで X11 バックエンドを使いますが、{{ic|GDK_BACKEND&#61;wayland}} 環境変数を設定することでこれを上書きできま
+
{{Note|GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになQt lighthouse と同じ方法でバックエンドを切り替えることできるようになりした}}
   
 
=== Qt5 ===
 
=== Qt5 ===
   
{{Grp|qt5}} パッケージは Wayland をサポートしています ({{Pkg|qt5-wayland}} インストールが必要です)。Wayland プラグインを使って Qt 5 アプリケーションを動作させるには {{ic|1=-platform wayland}} を使用するか、環境変数 {{ic|1=QT_QPA_PLATFORM=wayland-egl}} をセットしてさい。
+
{{Grp|qt5}} パッケージは Wayland をサポートしています{{Pkg|qt5-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-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===
227行目: 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 ===
   
 
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。
 
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。
  +
  +
=== GLEW ===
  +
  +
GLEW で Wayland バックエンドを使用するには、({{Pkg|glew}} の代わりに) {{Pkg|glew-wayland}} パッケージをインストールしてください。
   
 
===EFL===
 
===EFL===
   
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [http://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 セッションランチャー。
  +
|}
   
 
==ウィンドウマネージャとデスクトップシェル==
 
==ウィンドウマネージャとデスクトップシェル==
243行目: 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 で動作します。
296行目: 169行目:
 
[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]] アプリケーションに下位互換性を提供します。
=== root でグラフィカルアプリケーションを実行 ===
 
   
  +
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。
Wayland セッションで [[su]], [[sudo]], [[polkit|pkexec]] を使って root でグラフィカルアプリケーション (例: [[GParted]] や [[Gedit]] など) を実行しようとした場合、以下のようなエラーが表示されます:
 
   
  +
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。
{{bc|$ sudo gedit
 
No protocol specified
 
Unable to init server: Could not connect: Connection refused
 
   
  +
{{Note|
(gedit:2349): Gtk-WARNING **: cannot open display: :0
 
  +
*セキュリティについて: 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 を参照してください。
 
}}
 
}}
   
  +
==トラブルシューティング==
Wayland 以前では、特権による GUI アプリケーションの実行は [[Polkit]] ポリシーを作成して正しく実装するか、あるいはターミナルでコマンドの前に {{ic|sudo}} を付けて危なっかしく実行するようになっていましたが、(X)Wayland ではデフォルトでこのようなことはできなくなっています。クライアントの接続を許可されるのは X サーバーを起動したユーザーだけです ([https://bugzilla.redhat.com/show_bug.cgi?id=1266771 バグレポート] や [https://cgit.freedesktop.org/xorg/xserver/commit/?id=c4534a3] [https://cgit.freedesktop.org/xorg/xserver/commit/?id=4b4b908], [https://cgit.freedesktop.org/xorg/xserver/commit/?id=76636ac] を参照)。
 
   
  +
=== root でグラフィカルアプリケーションを実行 ===
回避策としては [[xhost]] を使うことで root ユーザーに対して一時的にローカルユーザーの X セッションへのアクセスを許可できます。非特権ユーザーで以下のコマンドを実行してください [https://bugzilla.redhat.com/show_bug.cgi?id=1274451#c64]:
 
$ xhost si:localuser:root
 
 
アプリケーションを閉じた後に許可を取り消すには:
 
$ xhost -si:localuser:root
 
   
  +
[[Root で X アプリケーションを起動#Wayland]] を見てください。
{{Note|1=[https://bugzilla.gnome.org//show_bug.cgi?id=772875 GNOME のバグレポート] では他にも2つの方法が提案されており、片方はテキストファイルの編集で使えます。}}
 
   
 
=== LLVM assertion failure ===
 
=== LLVM assertion failure ===
325行目: 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 公式サイト]を参照してください。
  +
  +
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 ===
  +
  +
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
  +
  +
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
  +
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
  +
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
  +
  +
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。
  +
  +
関連する拡張:
  +
* [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://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]
  +
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]
  +
  +
サポートしている Wayland コンポジタ:
  +
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。
  +
* {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応)
  +
  +
サポートしているウィジェットツールキット:
  +
* GTK (リリース 3.22.18 以上)。
   
 
==参照==
 
==参照==
 
* [https://fedoraproject.org/wiki/How_to_debug_Wayland_problems Fedora Wiki の Wayland のデバッグに関する記事]
 
* [https://fedoraproject.org/wiki/How_to_debug_Wayland_problems Fedora Wiki の Wayland のデバッグに関する記事]
 
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]
 
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]
* [http://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]
+
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]

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 以上)。

参照