「Wayland」の版間の差分
→GUI ライブラリ: winit加筆, SDL英語版と同期, Qt については未検証のため加筆せず |
同期 |
||
| (8人の利用者による、間の154版が非表示) | |||
| 1行目: | 1行目: | ||
[[Category:Wayland]] |
|||
[[Category:グラフィカルユーザーインターフェイス]] |
|||
[[ |
[[de:Wayland]] |
||
[[en:Wayland]] |
[[en:Wayland]] |
||
[[ |
[[es:Wayland]] |
||
[[hu:Wayland]] |
|||
[[pt:Wayland]] |
|||
[[ru:Wayland]] |
[[ru:Wayland]] |
||
[[zh-hans:Wayland]] |
[[zh-hans:Wayland]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related| |
{{Related|画像処理装置}} |
||
{{Related|カーネルモード設定}} |
|||
{{Related|Xorg}} |
{{Related|Xorg}} |
||
{{Related| |
{{Related|スクリーンショットの取得#Wayland}} |
||
{{Related|カーソルテーマ}} |
|||
{{Related articles end}} |
{{Related articles end}} |
||
'''Wayland''' は Linux の新しいウィンドウプロトコルです。[[GNOME]] や [[KDE]] などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして [https://wayland.freedesktop.org/xserver.html XWayland] があります。 |
|||
[https://wayland.freedesktop.org/ Wayland] は、[[Wikipedia:Windowing system#Display server|ディスプレイサーバ]]プロトコルです。[[Xorg|X Window System]] の後継として広く確立されています[https://blogs.kde.org/2025/11/26/going-all-in-on-a-wayland-future/] [https://blogs.gnome.org/alatiera/2025/06/08/the-x11-session-removal/] [https://discourse.ubuntu.com/t/ubuntu-25-10-drops-support-for-gnome-on-xorg/62538] [https://pagure.io/fesco/issue/3408]。[[Wikipedia:Wayland (display server protocol)#Differences between Wayland and X|Wikipedia に Wayland と Xorg との比較]]があります。 |
|||
== 要件 == |
|||
今のところ Wayland は [[KMS]] を利用しているシステムでしか動作できません。 |
|||
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、'''コンポジタ''' と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。 |
|||
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[#Weston|Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。 |
|||
ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、[[#Xwayland|Xwayland]] を使うことができます。これは Wayland に X サーバを提供します。 |
|||
=== バッファ 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] です。 |
|||
Wayland というのは単なるプロトコルです。[[Xorg]] とは違い、インストールすべき共通の「ディスプレイサーバ」は存在しません。Wayland を使用するために必要になるのは、互換性のあるディスプレイドライバ (この章) とコンポジタ (次の章)、あるいは Wayland プロトコルを実装している[[デスクトップ環境]] (例: [[GNOME]]、[[Plasma]]) のみです。ほとんどの Wayland コンポジタは、[[カーネルモード設定]]を使用しているシステム上でのみ動作します。 |
|||
[[画像処理装置|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" |
||
|- |
|||
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート |
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート |
||
|- |
|- |
||
| GBM || [[NVIDIA]] 以外の全てのドライバー || 全て |
| GBM || [[NVIDIA]] < 495* 以外の全てのドライバー || 全て |
||
|- |
|||
| EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] ([https://www.phoronix.com/scan.php?page=news_item&px=EGLStreams-Merged-KWin-5.16 Plasma 5.16+]) |
|||
|- |
|- |
||
| EGLStreams || [[NVIDIA]] || [[GNOME]] |
|||
|} |
|} |
||
: * Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします。[https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-495.44-Linux-Driver] |
|||
== Weston == |
|||
Weston は Wayland コンポジタのリファレンス実装です。 |
|||
NVIDIA が GBM のサポートを導入して以来、NVIDIA ≥ 495 で多くのコンポジタ (Mutter と KWin を含む) がデフォルトで GBM を使用し始めました。GBM は一般的にベターでより幅広いサポートがあると考えられています。EGLStreams がサポートされていた理由は、NVIDIA GPU をプロプライエタリドライバで Wayland 下で使用する代替の方法を NVIDIA が提供しなかったからだけです。さらに、GBM が NVIDIA に導入された後、KWin は [https://invent.kde.org/plasma/kwin/-/merge_requests/1638 EGLStreams のサポートを打ち切りました]。 |
|||
=== インストール === |
|||
{{pkg|weston}} パッケージをインストールしてください。 |
|||
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep "renderer for"}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください: |
|||
=== 使用方法 === |
|||
Weston をインストールしたのなら Wayland をテストする環境が整っているはずです。 |
|||
GBM_BACKEND=nvidia-drm |
|||
起動中の X セッションの中で Weston を実行することができます: |
|||
__GLX_VENDOR_LIBRARY_NAME=nvidia |
|||
$ weston |
|||
== コンポジタ == |
|||
もしくは、Weston をネイティブで起動するには、端末を切り替えて次を実行して見て下さい: |
|||
$ weston-launch |
|||
'''スタック型'''、'''タイル型'''、'''ダイナミック型''' の違いについては、[[ウィンドウマネージャ#種類]] を参照してください。 |
|||
Weston の TTY からデモを実行できます。ターミナルエミュレータを起動するには: |
|||
$ weston-terminal |
|||
=== スタック型 === |
|||
画面に花を散らすには: |
|||
$ weston-flower |
|||
* {{App|[[COSMIC]] コンポジタ|COSMIC デスクトップ環境のコンポジタ。|https://github.com/pop-os/cosmic-comp|{{Pkg|cosmic-comp}}}} |
|||
画像を表示するには: |
|||
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。|http://hikari.acmelabs.space/|{{AUR|hikari}}}} |
|||
$ weston-image image1.jpg image2.jpg... |
|||
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Plasma の起動]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}} |
|||
* {{App|[[labwc]]|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/labwc/labwc|{{Pkg|labwc}}}} |
|||
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#GNOME の起動]] を参照。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}} |
|||
* {{App|waybox|Openbox をモデルとした最小主義の Wayland コンポジタ。|https://github.com/wizbright/waybox|{{AUR|waybox}}}} |
|||
* {{App|wayfire|[[Compiz]] にインスパイアされた、wlroots ベースの 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}} |
|||
* {{App|[[Weston]]|正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}} |
|||
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://gitlab.com/Rubo/wio|{{AUR|wio-wl}}}} |
|||
* {{App|wlmaker|[[Window Maker]] からインスパイアされた wlroots ベースのコンポジタ。|https://phkaeser.github.io/wlmaker/|{{AUR|wlmaker}}}} |
|||
* {{App|woodland|Wayland 用の wlroots ベースの、最小かつ軽量のウィンドウスタッキングコンポジタ。Wayfire と TinyWl にインスパイアされています。|https://github.com/DiogenesN/woodland|{{AUR|woodland}}}} |
|||
=== |
=== タイル型 === |
||
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}}}} |
|||
キーボードレイアウト・モジュール・UI の設定ファイルの例です。詳しくは {{man|5|weston.ini}} を見て下さい。Weston の出力設定は {{ic|xorg.conf}} のモニターと多少異なります: |
|||
* {{App|jay|Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。|https://github.com/mahkoh/jay|{{AUR|jay}}}} |
|||
* {{App|miracle-wm|Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。|https://github.com/miracle-wm-org/miracle-wm|{{AUR|miracle-wm}}}} |
|||
* {{App|[[niri]]|スクロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}} |
|||
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}} |
|||
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}} |
|||
* {{App|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}} |
|||
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。dwm と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}} |
|||
=== ダイナミック型 === |
|||
$ ls /sys/class/drm |
|||
card0 |
|||
card0-VGA-1 |
|||
card1 |
|||
card1-DVI-I-1 |
|||
card1-HDMI-A-1 |
|||
card1-VGA-2 |
|||
* {{App|[[cwc]]|wlroots ベースの [[awesome]] ライクな Wayland コンポジタ。|https://cudiph.github.io/cwc/apidoc/| {{AUR|cwc}}}} |
|||
{{ic|card0}} は使われていない内蔵ビデオアダプタです。追加アダプタ {{ic|card1}} は HDMI と DVI モニターに接続されており、出力名が {{ic|HDMI-A-1}} と {{ic|DVI-I-1}} です。 |
|||
* {{App|[[Mangowc]]|[[dwl]] ベースのコンポジタ。標準的な設定ファイル、オプションのスクロールレイアウト、素晴らしいデザイン構築可能。|https://github.com/DreamMaoMao/mangowc|{{AUR|mangowc}}}} |
|||
* {{App|[[dwl]]|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}} |
|||
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。|https://hypr.land|{{Pkg|hyprland}}}} |
|||
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}} |
|||
* {{App|[[river]]|dwm と [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}} |
|||
* {{App|pinnacle-comp|Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。|https://github.com/pinnacle-comp/pinnacle|{{AUR|pinnacle-comp}}}} |
|||
=== その他 === |
|||
{{hc|~/.config/weston.ini|<nowiki> |
|||
[core] |
|||
# xwayland support |
|||
xwayland=true |
|||
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}} |
|||
[libinput] |
|||
* {{App|GNOME Kiosk|Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。|https://gitlab.gnome.org/GNOME/gnome-kiosk|{{AUR|gnome-kiosk}}}} |
|||
enable_tap=true |
|||
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}} |
|||
* {{App|Wayback|Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。|https://wayback.freedesktop.org/|{{AUR|wayback-x11}}}} |
|||
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。 |
|||
[shell] |
|||
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/''compositor''.desktop}} を見て確認してください。 |
|||
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 |
|||
Wayland コンポジタの実行をサポートしている[[ディスプレイマネージャ]]は以下の表の通りです。 |
|||
### for Laptop displays ### |
|||
#[output] |
|||
#name=LVDS1 |
|||
#mode=1680x1050 |
|||
#transform=90 |
|||
{| class="wikitable sortable" |
|||
#[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 |
|||
| {{Pkg|emptty}} |
|||
| TTY |
|||
| TTY で動作するシンプルな CLI ディスプレイマネージャ。 |
|||
|- |
|||
| [[GDM]] |
|||
| Wayland |
|||
| [[GNOME]] ディスプレイマネージャ。 |
|||
|- |
|||
| [[greetd]] |
|||
| Wayland/Xorg/TTY |
|||
[[Greetd#Greeter]] を参照。 |
|||
| 最小でありながら柔軟なログインデーモン。 |
|||
|- |
|||
| {{Pkg|lemurs}} |
|||
| TTY |
|||
| Rust で書かれた TUI ディスプレイマネージャ。 |
|||
|- |
|||
| {{AUR|lidm}} |
|||
| TTY |
|||
| C で書かれた、完全にカラフルでカスタマイズ可能な TUI ディスプレイマネージャ。 |
|||
|- |
|||
| [[LightDM]] |
|||
| Xorg[https://github.com/canonical/lightdm/issues/267] |
|||
| 様々なデスクトップに対応したディスプレイマネージャ。 |
|||
|- |
|||
| {{Pkg|ly}} |
|||
| TTY |
|||
| Zig で書かれた TUI ディスプレイマネージャ。 |
|||
|- |
|||
| [[SDDM]] |
|||
| Wayland/Xorg |
|||
| QML ベースのディスプレイマネージャ。 |
|||
|- |
|||
| {{AUR|tbsm}} |
|||
| TTY |
|||
| bash のみに依存するシンプルな CLI セッションランチャー。 |
|||
|- |
|||
| [[uwsm]] |
|||
| TTY |
|||
| スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。 |
|||
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。 |
|||
|} |
|||
== Xwayland == |
|||
#[output] |
|||
#name=X1 |
|||
#mode=1024x768 |
|||
#transform=flipped-270 |
|||
{{man|1|Xwayland}} は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。 |
|||
[input-method] |
|||
#path=/usr/lib/weston/weston-keyboard |
|||
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。 |
|||
[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 |
|||
{{Note| |
|||
[terminal] |
|||
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。 |
|||
#font=DroidSansMono |
|||
* パフォーマンス: ほとんどのケースで Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。 |
|||
#font-size=14 |
|||
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}} |
|||
=== Wayback === |
|||
[launcher] |
|||
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
|||
path=/usr/bin/weston-terminal |
|||
[https://wayback.freedesktop.org/ Wayback] ({{AUR|wayback-x11}}、{{AUR|wayback-x11-git}}) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。 |
|||
[launcher] |
|||
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
|||
path=/usr/bin/gnome-terminal |
|||
=== NVIDIA ドライバ === |
|||
[launcher] |
|||
icon=/usr/share/icons/hicolor/24x24/apps/firefox.png |
|||
path=/usr/bin/firefox |
|||
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェア支援のある Xwayland をサポートしておらず、非 Wayland ネイティブなアプリケーションは Wayland セッションでのパフォーマンスが低下します。}} |
|||
[launcher] |
|||
icon=/usr/share/weston/icon_flower.png |
|||
path=/usr/bin/weston-flower |
|||
なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。 |
|||
[screensaver] |
|||
# Uncomment path to disable screensaver |
|||
path=/usr/libexec/weston-screensaver |
|||
duration=600 |
|||
</nowiki>}} |
|||
=== Xwayland アプリケーションを検出する === |
|||
最小の {{ic|weston.ini}}: |
|||
{{hc|~/.config/weston.ini|<nowiki> |
|||
[core] |
|||
xwayland=true |
|||
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。 |
|||
[keyboard] |
|||
keymap_layout=gb |
|||
他の方法として、({{Pkg|xorg-xwininfo}} の) ''xwininfo'' をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。 |
|||
[output] |
|||
name=LVDS1 |
|||
mode=1680x1050 |
|||
transform=90 |
|||
あるいは、''xlsclients'' ({{Pkg|xorg-xlsclients}} パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、{{ic|xlsclients -l}} を実行してください。 |
|||
[launcher] |
|||
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
|||
path=/usr/bin/weston-terminal |
|||
あるいは、{{AUR|extramaus}} を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。 |
|||
[launcher] |
|||
icon=/usr/share/icons/hicolor/24x24/apps/firefox.png |
|||
path=/usr/bin/firefox |
|||
</nowiki>}} |
|||
{{Tip|KDE Plasma の場合は、[[KDE#KWin デバッグコンソール]] でウィンドウを調査できます。}} |
|||
==== XWayland ==== |
|||
== GUI ライブラリ == |
|||
{{Pkg|xorg-server-xwayland}} パッケージをインストールしてください。 |
|||
=== GTK === |
|||
Weston の中で X アプリケーションを動かすには、Xwayland を使ってリクエストを処理させます。以下の設定ファイルを作成してください: |
|||
{{hc|~/.config/weston.ini| |
|||
<nowiki>[core] |
|||
xwayland=true</nowiki> |
|||
}} |
|||
{{Pkg|gtk3}} と {{Pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、[[環境変数]]を設定することで Xwayland を使うように上書きできます: {{ic|1=GDK_BACKEND=x11}}。 |
|||
{{Note|X を設定していない場合、キーマップの設定が必要です: [[Xorg でのキーボード設定]]。}} |
|||
テーマの問題は [[GTK#Wayland バックエンド]] を見てください。 |
|||
==== スクリーンキャスト録画 ==== |
|||
Weston にはスクリーンキャスト機能が備わっており、{{ic|Super+r}} キーを押すことで録画を開始・停止することができます。スクリーンキャストは Weston のカレントディレクトリ内の {{ic|capture.wcap}} ファイルに保存されます。 |
|||
=== Qt === |
|||
WCAP ファイルは Weston 専用のロスレス動画フォーマットで、フレーム間の差異だけを記録しています。記録されたスクリーンキャストを再生するには、WCAP ファイルをメディアプレイヤーが再生できるフォーマットに変換する必要があります。まず、録画した動画を YUV ピクセル形式に変換してください: |
|||
[[Qt]] 5 で Wayland のサポートを有効化するには、{{Pkg|qt5-wayland}} パッケージをインストールしてください。これで、Qt 5 アプリケーションは Wayland セッション上では Wayland で動作するようになります。 |
|||
$ wcap-decode capture.wcap --yuv4mpeg2 > capture.y4m |
|||
必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。 |
|||
作成された YUV ファイルは [[FFmpeg]] を使うことで他のフォーマットに変換できます。 |
|||
一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。 |
|||
==== HiDPI ディスプレイ ==== |
|||
また、{{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] |
|||
Retina または [[HiDPI]] のディスプレイでは以下を使用してください: |
|||
{{hc|~/.config/weston.ini|<nowiki> |
|||
[output] |
|||
name=... |
|||
scale=2 |
|||
</nowiki>}} |
|||
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、[https://keepassxc.org KeepassXC] はトレイに最小化できません。これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、{{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。 |
|||
==== シェルのフォント ==== |
|||
Qt WebEngine のバグ ([https://bugreports.qt.io/browse/QTBUG-113574 Incorrect sizing and bad text rendering with WebEngine using fractional scaling on Wayland]) のため、Qt WebEgine を使用するアプリケーション (例: [https://bugs.launchpad.net/calibre/+bug/2018658 Calibre]) では荒いフォントが表示される場合があります。 |
|||
Weston はウィンドウのタイトルバーや時計などにデフォルトの sans-serif フォントを使用します。フォントを変更する方法は[[フォント設定#フォントの置き換え]]を見て下さい。 |
|||
回避策は、{{ic|1=QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor}} [[環境変数]]を設定してアプリケーションを起動することです。 |
|||
これにより、アプリケーションのウィンドウが分数スケーリングされなくなります。 |
|||
== |
=== Clutter === |
||
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。 |
|||
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{AUR|clutter}} パッケージで有効になっています。 |
|||
=== GTK+ 3 === |
|||
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。 |
|||
公式リポジトリの {{pkg|gtk3}} パッケージは Wayland バックエンドが有効になっています。 |
|||
=== SDL === |
|||
Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND=x11}} 環境変数を設定することで Xwayland を使うように上書きできます。 |
|||
[[SDL|SDL3]] では、コンポジタが [https://wayland.app/protocols/fifo-v1 fifo-v1 プロトコル]をサポートしている場合、デフォルトで Wayland が使用されます。[https://github.com/libsdl-org/SDL/blob/8c54961de02d8f62ed155925cb334efcaa2d1f95/src/video/wayland/SDL_waylandvideo.c#L536C9-L536C20] そうでない場合、順に X11 と Wayland が試行されます。環境変数 {{ic|1=SDL_VIDEO_DRIVER=x11}} あるいは {{ic|1=SDL_VIDEO_DRIVER=wayland}} を使用することで、どちらか一方を強制することができます (あるいは、より優先度の低い、SDL2 用の環境変数もあります。下記を参照)。[https://github.com/libsdl-org/SDL/blob/8c54961de02d8f62ed155925cb334efcaa2d1f95/docs/README-migration.md?plain=1#L802]. |
|||
{{Note|GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになり、Qt の lighthouse と同じ方法でバックエンドを切り替えることができるようになりました。}} |
|||
{{Pkg|sdl2-compat}} は、[https://github.com/libsdl-org/sdl2-compat/blob/8b85f95bbcc3411c78c1f2cbd62b23b7f96093c2/src/sdl2_compat.c#L504-L538 アプリケーション固有の例外]を除いて、上記の SDL3 と同じルールに従います。SDL2 自体に関しては (例: {{AUR|sdl2}})、{{ic|1=SDL_VIDEODRIVER=wayland}} を設定してください。 |
|||
=== Qt5 === |
|||
{{ic|1=SDL_VIDEODRIVER="wayland,x11"}} とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [https://wiki.libsdl.org/SDL2/FAQUsingSDL]。ウィンドウ装飾を有効化するために {{Pkg|libdecor}} をインストールすると良いかもしれません (例えば、GNOME で)。 |
|||
{{Grp|qt5}} パッケージは Wayland をサポートしています。{{Pkg|qt5-wayland}} をインストールしてください。 |
|||
詳細は[https://wiki.libsdl.org/SDL3/README/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}} とセットします。 |
|||
=== |
=== GLFW === |
||
{{Pkg|glfw}} パッケージには Wayland に対するサポートがあります。{{ic|1=XDG_SESSION_TYPE}} が {{ic|1=wayland}} に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。 |
|||
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。 |
|||
詳細は GLFW の[https://github.com/glfw/glfw/blob/3.4/src/platform.c#L87-L99 ソースコード]を参照してください。 |
|||
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND=wayland}} を設定する必要があります。 |
|||
=== |
=== GLEW === |
||
{{AUR|glew-wayland-git}} パッケージが GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。 |
|||
SDL アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER=wayland}} を設定する必要があります。一方、XWayland を使うようにするには、{{ic|1=SDL_VIDEODRIVER=x11}} を指定します。 |
|||
=== EFL === |
|||
{{Note|Wayland 未対応の古い SDL が内部に含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を指定すると動作が壊れる場合があります。}} |
|||
Enlightenment には[https://www.enlightenment.org/about-wayland 完全な Wayland サポート]があります. |
|||
=== GLFW === |
|||
EFL ベースのアプリケーションを Wayland 上で動作させるには、{{ic|1=ELM_DISPLAY=wl}} を設定してください。 |
|||
=== |
=== winit === |
||
Winit は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます: |
|||
GLEW で Wayland バックエンドを使用するには、({{Pkg|glew}} の代わりに) {{Pkg|glew-wayland}} パッケージをインストールしてください。 |
|||
* バージョン 0.29.2 より前の場合、{{ic|1=WINIT_UNIX_BACKEND=x11}} を設定してください。 |
|||
===EFL=== |
|||
* バージョン 0.29.2 以降の場合、{{ic|1=WAYLAND_DISPLAY}} を unset してください。そうすることで、強制的に {{ic|1=DISPLAY}} 変数を使用して X にフォールバックされます。[https://github.com/rust-windowing/winit/blob/baf10de95843f156b0fbad6b10c3137f1ebd4f1e/src/changelog/v0.29.md?plain=1#L134] |
|||
=== Electron === |
|||
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。 |
|||
{{Note|[[KDE|Plasma]] では、一部の Electron アプリケーションがウィンドウに間違ったアイコン (デフォルトの Wayland アイコン) を使用することがあります (タスクバーには正しいアイコンが表示されます)。そのアプリケーションのデスクトップファイル名を強制する特殊なアプリケーション/ウィンドウルールを作成することで、解決できます。}} |
|||
=== winit === |
|||
Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。 |
|||
[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。{{ic|XINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください。 |
|||
==== コマンドラインフラグ ==== |
|||
== ディスプレイマネージャ == |
|||
{{Note|一部のパッケージは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}} |
|||
Wayland コンポジタの実行をサポートした[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。 |
|||
Wayland で動作させるために必要なコマンドラインフラグは [[Chromium#ネイティブ Wayland サポート]] を見てください。ただし、Electron 38 以降、コマンドラインフラグ {{ic|1=--ozone-platform-hint=auto}} は機能しないことに注意してください。 |
|||
{| class="wikitable sortable" |
|||
! 名前 |
|||
! 種類 |
|||
! 説明 |
|||
|- |
|||
| GDM |
|||
| Wayland/X11 上で動作 |
|||
| [[GNOME]] ディスプレイマネージャ。 |
|||
|- |
|||
| LightDM |
|||
| Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7] |
|||
| 様々なデスクトップに対応したディスプレイマネージャ。 |
|||
|- |
|||
| SDDM |
|||
| X11 上で動作 [https://github.com/sddm/sddm/pull/616] |
|||
| QML ベースのディスプレイマネージャ。 |
|||
|} |
|||
これらのフラグを手動で渡すこともできますが、[[Electron#設定ファイル|Electron の設定ファイル]]でフラグを永続化したり、[[デスクトップエントリ#desktop ファイルの変更|~/.local/share/applications の .desktop ファイル]]内の {{ic|1=Exec=}} 行にフラグを追加することでフラグを渡したりもできます。 |
|||
{{Accuracy|Old version of Electron needs {{ic|1=--enable-features=WebRTCPipeWireCapturer}} But what version is it enable by default? Also default behavior of Electron vendored by non-free software would be wrong.}} |
|||
==ウィンドウマネージャとデスクトップシェル== |
|||
Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは {{Pkg|xdg-desktop-portal}} をベースとしています。 |
|||
===GNOME=== |
|||
トップバーが表示されない場合は、{{ic|1=--enable-features=WaylandWindowDecorations}} で解決できます。これは、例として [[GNOME]] で必要となります ([https://github.com/electron/electron/pull/29618 electron17] からサポートされています)。 |
|||
{{Warning|Gnome Wayland セッションは {{pkg|xorg-server-xwayland}} をインストールしていないと起動しません。}} |
|||
==== 環境変数 ==== |
|||
バージョン 3.14 から、[[GNOME]] は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。 |
|||
バージョン 28 から 37 の間の Electron を使用するアプリケーションは、[[環境変数]] {{ic|ELECTRON_OZONE_PLATFORM_HINT}} を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。 |
|||
Gnome Wayland セッションを起動するには、GDM ログインマネージャを使用する必要があります。ログインする前に "Gnome on Wayland" セッションを選択してください。 |
|||
コマンドラインのほうが、環境変数よりも優先されます。 |
|||
===Enlightenment=== |
|||
=== Java === |
|||
E19 から Wayland に対応していましたが、現在は削除されており、E20 以上が通常の利用に耐えうるほど Wayland で安定動作するとされています。詳しくは [https://www.enlightenment.org/about-wayland] を参照。 |
|||
[[Java]] プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。 |
|||
===KDE=== |
|||
OpenJDK に Wayland を実装することを目的としたプロジェクトである [https://openjdk.java.net/projects/wakefield/ Wakefield] が実用できるようになるまでは、Xwayland を代わりに使用できます。 |
|||
[[ |
[[Debian:Wayland#Java Programs (supported since OpenJDK 16?)]] を参照してください: |
||
:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。 |
|||
=== Loliwm === |
|||
:{{ic|_JAVA_AWT_WM_NONREPARENTING}} [[環境変数]]を "1" に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。 |
|||
XWayland は機能的に Wayland と同等ではないので、Wakefield が実用的になるまでは、[https://wiki.openjdk.org/display/wakefield/Pure+Wayland+toolkit+prototype WLToolkit] で機能の差を埋めることができます。これは {{ic|1=-Dawt.toolkit.name=WLToolkit}} でアクティブ化できます。[https://blog.jetbrains.com/platform/2024/07/wayland-support-preview-in-2024-2/ JetBrains IDE] といった一部のプログラムはこれをサポートしています。 |
|||
[https://github.com/Cloudef/loliwm loliwm] は Wayland 用のタイル型ウィンドウマネージャです。 |
|||
== ヒントとテクニック == |
|||
=== sway === |
|||
=== 自動化 === |
|||
[[Sway]] は Wayland 用の i3 互換のウィンドウマネージャです。 |
|||
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotool}} を参照。 |
|||
=== Velox === |
|||
* [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] ライブラリも参照。 |
|||
* [https://git.sr.ht/~brocellous/wlrctl wlrctl] ({{AUR|wlrctl}}) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。 |
|||
=== キーボードやマウスキーのリマップ === |
|||
[[Velox]] は swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。 |
|||
[[入力リマップユーティリティ]] を見てください。 |
|||
=== Orbital === |
|||
=== スクリーンキャスト === |
|||
[https://github.com/giucam/orbital Orbital] は Qt5 と Weston を使用する Wayland コンポジタ・シェルです。このプロジェクトではシンプルでありながら柔軟性のある見た目の良い Wayland デスクトップを作成することを目標としています。Orbital は完全装備の DE ではなく、どちらかと言えば [[Awesome]] や [[Fluxbox]] のような X11 におけるウィンドウマネージャに似ています。 |
|||
[[スクリーンキャプチャ#スクリーンキャスト]] と [[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。 |
|||
=== Liri Shell === |
|||
=== アプリが閉じた後もクリップボードの内容を保持する === |
|||
[https://github.com/lirios/shell Liri Shell] は [[Liri]] のデスクトップシェルであり、Wayland のコンポジタとして QtQuick と QtCompositor を使用して作られています。 |
|||
Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。{{Pkg|wl-clip-persist}} を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。 |
|||
=== Maynard === |
|||
=== Wayland コンポジタを systemd サービスとして自動的に起動する === |
|||
[https://github.com/raspberrypi/maynard Maynard] は GTK ベースの Weston 用デスクトップシェルクライアントです。Tiago Vignatti によるプロジェクト、weston-gtk-shell に基づいています。 |
|||
{{Note|[[Universal Wayland Session Manager]] は、使用中のコンポジタの systemd ユニットを自動的に生成します。さらに、[[Universal Wayland Session Manager#アプリケーションと自動起動|グラフィカルアプリケーションを systemd と統合する]]際にも役立ちます。}} |
|||
=== Motorcar === |
|||
ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタを[[systemd]] サービスを使って自動的に起動できます。{{ic|ExecStart}} 行を使いたいコンポジタに変えて下さい。以下は [[KDE Plasma]] の例です: |
|||
[https://github.com/evil0sheep/motorcar Motorcar] は 3D ウィンドウを探検できる wayland コンポジタです。 |
|||
{{hc|/etc/systemd/system/wayland-compositor.service|2= |
|||
=== Way Cooler === |
|||
[Unit] |
|||
{{AUR|way-cooler}} は Rust で書かれた (Lua の設定ファイルによる) 豊富な設定を持つ Wayland コンポジタです。i3 と awesome の影響を受けています。 |
|||
After=graphical.target systemd-user-sessions.service modprobe@drm.service |
|||
Conflicts=getty@tty1.service |
|||
[Service] |
|||
=== Maze Compositor === |
|||
User=''username'' |
|||
WorkingDirectory=~ |
|||
PAMName=login |
|||
[https://github.com/capisce/mazecompositor Maze Compositor] は 3D の Qt ベースの Wayland コンポジタです。 |
|||
TTYPath=/dev/tty1 |
|||
UnsetEnvironment=TERM |
|||
StandardOutput=journal |
|||
=== Grefsen === |
|||
ExecStart=/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland |
|||
[Install] |
|||
[https://github.com/ec1oud/grefsen Grefsen] はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。 |
|||
WantedBy=graphical.target |
|||
}} |
|||
=== wlroots ベースのコンポジタで他のレンダラーを使用する === |
|||
==トラブルシューティング== |
|||
wlroots ベースのコンポジタに対して {{ic|WLR_RENDERER}} [[環境変数]]を設定することで vulkan などといった他の [https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/master/render wlroots レンダラー]を使用することができます。利用可能なレンダラーのリストは [https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md wlroots のドキュメント]にあります。 |
|||
=== root でグラフィカルアプリケーションを実行 === |
|||
== トラブルシューティング == |
|||
[[Root で X アプリケーションを起動#Wayland]] を見てください。 |
|||
=== |
=== 色補正 === |
||
LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで {{Pkg|mesa}} をリビルドする必要があります。 |
|||
[[バックライト#色補正]]を参照。 |
|||
これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい: |
|||
=== 動作が遅い、表示がおかしい、クラッシュする === |
|||
$ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so |
|||
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} や rc ファイルから該当箇所を削除してみてください。 |
|||
=== Electronベースのアプリケーションでは、ディスプレイ::0を開けません === |
|||
=== リモートディスプレイ === |
|||
GDK_BACKEND = waylandを設定していないことを確認してください。グローバルに設定すると、Electronアプリが機能しなくなります。 |
|||
* ([[sway]] で使用されている) {{Pkg|wlroots0.18}} と {{Pkg|wlroots0.19}} は、バージョン 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}} を見てください。 |
|||
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} などの rc ファイルから該当箇所を削除してみてください。 |
|||
* {{pkg|krfb}} は {{pkg|kwin}} に VNC サーバを提供します。{{ic|krfb-virtualmonitor}} を使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。 |
|||
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。 |
|||
* {{Pkg|waypipe}} は Wayland アプリケーションの透過プロキシです。[[SSH]] 上で動作するラッパーコマンドあり。 |
|||
** 以下は、Plasma デスクトップでリモートの KDE kcalc を起動する例です: |
|||
::{{bc|1=$ waypipe ssh example.local env QT_QPA_PLATFORM=wayland QT_QPA_PLATFORMTHEME=KDE dbus-launch kcalc}} |
|||
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 === |
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 === |
||
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 と |
Wayland と Xwayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。Xorg アプリケーションの場合、Xwayland のサポートで十分であるため、アプリケーションやウィジェット・ツールキットに変更を加える必要はありません。 |
||
これらの拡張はすでに {{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:// |
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml Xwayland keyboard grabbing protocol] |
||
* [https:// |
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol] |
||
* [https:// |
* [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] 以降)。 |
|||
* wlroots (Relative pointer protocols と Pointer constraints protocol に対応) |
|||
* Kwin |
|||
** [[KDE#Wayland で X11 のショートカットが衝突する]] |
|||
** [https://invent.kde.org/plasma/kwin/-/blob/master/src/wayland/keyboard_shortcuts_inhibit_v1_interface.cpp Keyboard shortcuts inhibit] |
|||
サポートしているウィジェットツールキット: |
サポートしているウィジェットツールキット: |
||
* GTK (リリース 3.22.18 以上)。 |
|||
* GTK (リリース 3.22.18 以降) |
|||
==参照== |
|||
* [https://fedoraproject.org/wiki/How_to_debug_Wayland_problems Fedora Wiki の Wayland のデバッグに関する記事] |
|||
=== GTK テーマが動かない === |
|||
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion] |
|||
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。 |
|||
=== NVIDIA モジュールを読み込まないようにする === |
|||
[[sway]] などの Wayland コンポジターを起動する前に {{ic|1=__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json}} を [[環境変数]] として追加します。 |
|||
=== 拡大/サーフェススケーリング === |
|||
スクリーンの拡大は、まだ解決していません。[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/145 wp-surface-scale プロトコルを提供する]プルリクエストが2022年半ばにマージされました。 |
|||
=== カーネル 6.11.2 以降、Wayland にラグ/スタッタリングが発生する (AMD) === |
|||
将来のカーネルリリースでこの問題が修正されるまで、回避策は、カーネルのコマンドラインに {{ic|1=amdgpu.dcdebugmask=0x400}} を追加することです。 |
|||
こちらを参照: https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422 |
|||
=== 仮想デスクトップの切り替え時にゲームやアプリケーションが止まる === |
|||
ワークスペースを変更した時や、{{ic|Alt+Tab}} を押した時に、ゲーム (あるいは他のグラフィカルアプリケーション) が止まる、変な状態になる、部分的に停止します。これには、VRR アプリケーションや VSync がオンのアプリケーションが含まれますが、それらに限りません。症状としては、ゲームのウィンドウがフォーカスされていないときにのみ、音声が部分的に途切れる、ゲームが進まなくなる、ping が高くなる、ネットワークが途切れるなどがあります。これは、VSync がオンのアプリケーションにのみ影響します。 |
|||
It is possible some games can work around this issue by changing to a window, but some do not. This is extremely annoying in more complex games which require heavy usage of web browsing, documentation and 3rd party tools or if the gameplay is interrupted for some reason. |
|||
回避策としては、環境変数 {{ic|1=MESA_VK_WSI_PRESENT_MODE=immediate}} と {{ic|1=vk_xwayland_wait_ready=false}} の片方/両方を設定することです。しかし、これらの変数は VSync あるいは VRR の機能を破壊します。 |
|||
== 参照 == |
|||
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント] |
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント] |
||
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ] |
|||
* [[Fedora:How to debug Wayland problems]] |
|||
* [https://wearewaylandnow.com/ We are Wayland now!] - "Are we Wayland yet?" の更新されたバージョン |
|||
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects] |
|||
* [[カーソルテーマ]] |
|||
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion] |
|||
* [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://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|2026-02-17|865727}} |
|||
2026年2月17日 (火) 08:54時点における最新版
Wayland は、ディスプレイサーバプロトコルです。X Window System の後継として広く確立されています[1] [2] [3] [4]。Wikipedia に Wayland と Xorg との比較があります。
Wayland プロトコルを使用するディスプレイサーバは、コンポジット型ウィンドウマネージャ としても機能するため、コンポジタ と呼ばれます。以下にWayland コンポジタのリストを示します。
ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、Xwayland を使うことができます。これは Wayland に X サーバを提供します。
要件
Wayland というのは単なるプロトコルです。Xorg とは違い、インストールすべき共通の「ディスプレイサーバ」は存在しません。Wayland を使用するために必要になるのは、互換性のあるディスプレイドライバ (この章) とコンポジタ (次の章)、あるいは Wayland プロトコルを実装しているデスクトップ環境 (例: GNOME、Plasma) のみです。ほとんどの Wayland コンポジタは、カーネルモード設定を使用しているシステム上でのみ動作します。
GPU ドライバと Wayland コンポジタは、同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: GBM と EGLStreams です。
| バッファ API | GPU ドライバーのサポート | Wayland コンポジタのサポート |
|---|---|---|
| GBM | NVIDIA < 495* 以外の全てのドライバー | 全て |
| EGLStreams | NVIDIA | GNOME |
- * Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします。[5]
NVIDIA が GBM のサポートを導入して以来、NVIDIA ≥ 495 で多くのコンポジタ (Mutter と KWin を含む) がデフォルトで GBM を使用し始めました。GBM は一般的にベターでより幅広いサポートがあると考えられています。EGLStreams がサポートされていた理由は、NVIDIA GPU をプロプライエタリドライバで Wayland 下で使用する代替の方法を NVIDIA が提供しなかったからだけです。さらに、GBM が NVIDIA に導入された後、KWin は EGLStreams のサポートを打ち切りました。
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: journalctl -b 0 --grep "renderer for"。GBM をバックエンドとして強制的に使用させるには、次の環境変数を設定してください:
GBM_BACKEND=nvidia-drm __GLX_VENDOR_LIBRARY_NAME=nvidia
コンポジタ
スタック型、タイル型、ダイナミック型 の違いについては、ウィンドウマネージャ#種類 を参照してください。
スタック型
- COSMIC コンポジタ — COSMIC デスクトップ環境のコンポジタ。
- hikari — FreeBSD で活発に開発されている cwm にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。
- KDE KWin — KDE#Plasma の起動 を参照。
- labwc — Openbox にインスパイアされた wlroots ベースのコンポジタ。
- Mutter — GNOME#GNOME の起動 を参照。
- waybox — Openbox をモデルとした最小主義の Wayland コンポジタ。
- wayfire — Compiz にインスパイアされた、wlroots ベースの 3D コンポジタ。
- https://wayfire.org/ || wayfireAUR
- Weston — 正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。
- wio — Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。
- wlmaker — Window Maker からインスパイアされた wlroots ベースのコンポジタ。
- woodland — Wayland 用の wlroots ベースの、最小かつ軽量のウィンドウスタッキングコンポジタ。Wayfire と TinyWl にインスパイアされています。
タイル型
- jay — Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。
- miracle-wm — Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。
- niri — スクロール可能なタイル型 Wayland コンポジタ。
- Qtile — Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。
- SwayFx — 魅力的な視覚効果機能を追加した Sway。
- Velox — swc ベースのシンプルなウィンドウマネージャです。dwm と xmonad の影響を受けています。
ダイナミック型
- Hyprland — 見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。
- japokwm — wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。
- pinnacle-comp — Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。
その他
- Cage — キオスクのような単一のフルスクリーンアプリケーションを表示します。
- GNOME Kiosk — Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。
- phoc — モバイル端末のための wlroots ベースの小さなコンポジタ。
- Wayback — Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。
上記のいくつかは ディスプレイマネージャ をサポートする場合があります。
それらがどのように開始されるかを /usr/share/wayland-sessions/compositor.desktop を見て確認してください。
ディスプレイマネージャ
Wayland コンポジタの実行をサポートしているディスプレイマネージャは以下の表の通りです。
| 名前 | 何で動作するか | 説明 |
|---|---|---|
| emptty | TTY | TTY で動作するシンプルな CLI ディスプレイマネージャ。 |
| GDM | Wayland | GNOME ディスプレイマネージャ。 |
| greetd | Wayland/Xorg/TTY
Greetd#Greeter を参照。 |
最小でありながら柔軟なログインデーモン。 |
| lemurs | TTY | Rust で書かれた TUI ディスプレイマネージャ。 |
| lidmAUR | TTY | C で書かれた、完全にカラフルでカスタマイズ可能な TUI ディスプレイマネージャ。 |
| LightDM | Xorg[6] | 様々なデスクトップに対応したディスプレイマネージャ。 |
| ly | TTY | Zig で書かれた TUI ディスプレイマネージャ。 |
| SDDM | Wayland/Xorg | QML ベースのディスプレイマネージャ。 |
| tbsmAUR | TTY | bash のみに依存するシンプルな CLI セッションランチャー。 |
| uwsm | TTY | スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。 |
Xwayland
Xwayland(1) は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな X11 アプリケーションに互換性を提供します。これを使用するには、xorg-xwayland パッケージをインストールします。
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。
- セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。
- パフォーマンス: ほとんどのケースで Xwayland は X11 とほぼ同等のパフォーマンスを発揮します。
- 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。
Wayback
Wayback (wayback-x11AUR、wayback-x11-gitAUR) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。
NVIDIA ドライバ
なお、DRM KMS を有効にする必要があります。また、お使いのディスプレイマネージャ(例: GDM)の公式ドキュメントに記載されている情報も見てください。
Xwayland アプリケーションを検出する
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、xorg-xeyes を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。
他の方法として、(xorg-xwininfo の) xwininfo をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。Ctrl+C を押すことで xwininfo を終了できます。
あるいは、xlsclients (xorg-xlsclients パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、xlsclients -l を実行してください。
あるいは、extramausAUR を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。
GUI ライブラリ
GTK
gtk3 と gtk4 パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、環境変数を設定することで Xwayland を使うように上書きできます: GDK_BACKEND=x11。
テーマの問題は GTK#Wayland バックエンド を見てください。
Qt
Qt 5 で Wayland のサポートを有効化するには、qt5-wayland パッケージをインストールしてください。これで、Qt 5 アプリケーションは Wayland セッション上では Wayland で動作するようになります。
必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[7] にあるように、-platform wayland を使用するか、環境変数 QT_QPA_PLATFORM=wayland をセットして下さい。
一方、Wayland セッション上で X11 を使用させるには、QT_QPA_PLATFORM=xcb と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
また、QT_QPA_PLATFORM="wayland;xcb" を使用すると、Qt が Wayland を利用できない場合に、代わりに xcb (X11)プラグインを使用させることができます。[8]
sway などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、KeepassXC はトレイに最小化できません。これは、アプリケーションを実行する前に qt5ct をインストールし、QT_QPA_PLATFORMTHEME=qt5ct を設定することで解決できます。
Qt WebEngine のバグ (Incorrect sizing and bad text rendering with WebEngine using fractional scaling on Wayland) のため、Qt WebEgine を使用するアプリケーション (例: Calibre) では荒いフォントが表示される場合があります。
回避策は、QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor 環境変数を設定してアプリケーションを起動することです。
これにより、アプリケーションのウィンドウが分数スケーリングされなくなります。
Clutter
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは clutterAUR パッケージで有効になっています。
Clutter アプリを Wayland 上で動作させるには、環境変数 CLUTTER_BACKEND=wayland を設定する必要があります。
SDL
SDL3 では、コンポジタが fifo-v1 プロトコルをサポートしている場合、デフォルトで Wayland が使用されます。[9] そうでない場合、順に X11 と Wayland が試行されます。環境変数 SDL_VIDEO_DRIVER=x11 あるいは SDL_VIDEO_DRIVER=wayland を使用することで、どちらか一方を強制することができます (あるいは、より優先度の低い、SDL2 用の環境変数もあります。下記を参照)。[10].
sdl2-compat は、アプリケーション固有の例外を除いて、上記の SDL3 と同じルールに従います。SDL2 自体に関しては (例: sdl2AUR)、SDL_VIDEODRIVER=wayland を設定してください。
SDL_VIDEODRIVER="wayland,x11" とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [11]。ウィンドウ装飾を有効化するために libdecor をインストールすると良いかもしれません (例えば、GNOME で)。
詳細は公式のドキュメントを参照してください。
GLFW
glfw パッケージには Wayland に対するサポートがあります。XDG_SESSION_TYPE が wayland に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。
詳細は GLFW のソースコードを参照してください。
GLEW
glew-wayland-gitAUR パッケージが GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で glew を使うことです。FS#62713 を参照してください。
EFL
Enlightenment には完全な Wayland サポートがあります.
EFL ベースのアプリケーションを Wayland 上で動作させるには、ELM_DISPLAY=wl を設定してください。
winit
Winit は Rust で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます:
- バージョン 0.29.2 より前の場合、
WINIT_UNIX_BACKEND=x11を設定してください。 - バージョン 0.29.2 以降の場合、
WAYLAND_DISPLAYを unset してください。そうすることで、強制的にDISPLAY変数を使用して X にフォールバックされます。[12]
Electron
Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。
コマンドラインフラグ
Wayland で動作させるために必要なコマンドラインフラグは Chromium#ネイティブ Wayland サポート を見てください。ただし、Electron 38 以降、コマンドラインフラグ --ozone-platform-hint=auto は機能しないことに注意してください。
これらのフラグを手動で渡すこともできますが、Electron の設定ファイルでフラグを永続化したり、~/.local/share/applications の .desktop ファイル内の Exec= 行にフラグを追加することでフラグを渡したりもできます。
Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは xdg-desktop-portal をベースとしています。
トップバーが表示されない場合は、--enable-features=WaylandWindowDecorations で解決できます。これは、例として GNOME で必要となります (electron17 からサポートされています)。
環境変数
バージョン 28 から 37 の間の Electron を使用するアプリケーションは、環境変数 ELECTRON_OZONE_PLATFORM_HINT を auto または wayland に設定することで、Wayland モードを使用することができます。
コマンドラインのほうが、環境変数よりも優先されます。
Java
Java プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。 OpenJDK に Wayland を実装することを目的としたプロジェクトである Wakefield が実用できるようになるまでは、Xwayland を代わりに使用できます。
Debian:Wayland#Java Programs (supported since OpenJDK 16?) を参照してください:
- OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この議論によると、これがサポートされているかもしれません。
_JAVA_AWT_WM_NONREPARENTING環境変数を "1" に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。
XWayland は機能的に Wayland と同等ではないので、Wakefield が実用的になるまでは、WLToolkit で機能の差を埋めることができます。これは -Dawt.toolkit.name=WLToolkit でアクティブ化できます。JetBrains IDE といった一部のプログラムはこれをサポートしています。
ヒントとテクニック
自動化
- ydotool (ydotool) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。
ydotool.serviceユーザーユニットを起動/有効化してください。ydotoold(8)、ydotool(1) を参照。 - wtype (wtype) - Wayland 用 xdotool type。wtype(1) を参照。
- keyboard - Windows と Linux で動作する Python ライブラリ。実験的な OS X サポートあり。mouse ライブラリも参照。
- wlrctl (wlrctlAUR) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。
キーボードやマウスキーのリマップ
入力リマップユーティリティ を見てください。
スクリーンキャスト
スクリーンキャプチャ#スクリーンキャスト と スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする を見てください。
アプリが閉じた後もクリップボードの内容を保持する
Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。wl-clip-persist を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。
Wayland コンポジタを systemd サービスとして自動的に起動する
ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタをsystemd サービスを使って自動的に起動できます。ExecStart 行を使いたいコンポジタに変えて下さい。以下は KDE Plasma の例です:
/etc/systemd/system/wayland-compositor.service
[Unit] After=graphical.target systemd-user-sessions.service modprobe@drm.service Conflicts=getty@tty1.service [Service] User=username WorkingDirectory=~ PAMName=login TTYPath=/dev/tty1 UnsetEnvironment=TERM StandardOutput=journal ExecStart=/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland [Install] WantedBy=graphical.target
wlroots ベースのコンポジタで他のレンダラーを使用する
wlroots ベースのコンポジタに対して WLR_RENDERER 環境変数を設定することで vulkan などといった他の wlroots レンダラーを使用することができます。利用可能なレンダラーのリストは wlroots のドキュメントにあります。
トラブルシューティング
色補正
バックライト#色補正を参照。
動作が遅い、表示がおかしい、クラッシュする
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に CLUTTER_PAINT=disable-clipped-redraws:disable-culling が設定されている可能性があります。/etc/environment や rc ファイルから該当箇所を削除してみてください。
リモートディスプレイ
- (sway で使用されている) wlroots0.18 と wlroots0.19 は、バージョン 0.10 より、wayvnc による VNC バックエンドを提供しています。RDP バックエンドは削除されました [13]。
- mutter はコンパイル時にリモートデスクトップが有効化されています。詳細は [14] と gnome-remote-desktop を見てください。
- krfb は kwin に VNC サーバを提供します。
krfb-virtualmonitorを使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。 - 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。weston パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。
- waypipe は Wayland アプリケーションの透過プロキシです。SSH 上で動作するラッパーコマンドあり。
- 以下は、Plasma デスクトップでリモートの KDE kcalc を起動する例です:
$ waypipe ssh example.local env QT_QPA_PLATFORM=wayland QT_QPA_PLATFORMTHEME=KDE dbus-launch kcalc
ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません (例: キーボード、マウス)。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
- ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
- マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
Wayland と Xwayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。Xorg アプリケーションの場合、Xwayland のサポートで十分であるため、アプリケーションやウィジェット・ツールキットに変更を加える必要はありません。
これらの拡張はすでに wayland-protocols に含まれており、xorg-xwayland によってサポートされています。
関連する拡張:
- Xwayland keyboard grabbing protocol
- Compositor shortcuts inhibit protocol
- Relative pointer protocol
- Pointer constraints protocol
サポートしている Wayland コンポジタ:
- Mutter, GNOME のコンポジタ (リリース 3.28 以降)。
- wlroots (Relative pointer protocols と Pointer constraints protocol に対応)
- Kwin
サポートしているウィジェットツールキット:
- 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 を 環境変数 として追加します。
拡大/サーフェススケーリング
スクリーンの拡大は、まだ解決していません。wp-surface-scale プロトコルを提供するプルリクエストが2022年半ばにマージされました。
カーネル 6.11.2 以降、Wayland にラグ/スタッタリングが発生する (AMD)
将来のカーネルリリースでこの問題が修正されるまで、回避策は、カーネルのコマンドラインに amdgpu.dcdebugmask=0x400 を追加することです。
こちらを参照: https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422
仮想デスクトップの切り替え時にゲームやアプリケーションが止まる
ワークスペースを変更した時や、Alt+Tab を押した時に、ゲーム (あるいは他のグラフィカルアプリケーション) が止まる、変な状態になる、部分的に停止します。これには、VRR アプリケーションや VSync がオンのアプリケーションが含まれますが、それらに限りません。症状としては、ゲームのウィンドウがフォーカスされていないときにのみ、音声が部分的に途切れる、ゲームが進まなくなる、ping が高くなる、ネットワークが途切れるなどがあります。これは、VSync がオンのアプリケーションにのみ影響します。
It is possible some games can work around this issue by changing to a window, but some do not. This is extremely annoying in more complex games which require heavy usage of web browsing, documentation and 3rd party tools or if the gameplay is interrupted for some reason.
回避策としては、環境変数 MESA_VK_WSI_PRESENT_MODE=immediate と vk_xwayland_wait_ready=false の片方/両方を設定することです。しかし、これらの変数は VSync あるいは VRR の機能を破壊します。
参照
- Wayland オンラインドキュメント
- 公式リポジトリ
- Fedora:How to debug Wayland problems
- We are Wayland now! - "Are we Wayland yet?" の更新されたバージョン
- Awesome Wayland projects
- カーソルテーマ
- Arch Linux forum discussion
- i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives
- Wayland Explorer - A better way to read Wayland documentation
- How can I tell if an application is using XWayland