コンテンツにスキップ

「Wayland」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
AshMyzk (トーク | 投稿記録)
同期
AshMyzk (トーク | 投稿記録)
同期
 
(5人の利用者による、間の43版が非表示)
1行目: 1行目:
[[Category:Wayland]]
[[Category:グラフィカルユーザーインターフェイス]]
[[de:Wayland]]
[[en:Wayland]]
[[en:Wayland]]
[[es:Wayland]]
[[es:Wayland]]
[[hu:Wayland]]
[[pt:Wayland]]
[[pt:Wayland]]
[[ru:Wayland]]
[[ru:Wayland]]
[[zh-hans:Wayland]]
[[zh-hans:Wayland]]
{{Related articles start}}
{{Related articles start}}
{{Related|KMS}}
{{Related|画像処理装置}}
{{Related|カーネルモード設定}}
{{Related|Xorg}}
{{Related|Xorg}}
{{Related|スクリーンショットの取得#Wayland}}
{{Related|スクリーンショットの取得#Wayland}}
{{Related articles end}}
{{Related articles end}}


[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバプロトコルです。[[Xorg|X Window System]] の後継となることを目指しています。[[Wikipedia:Wayland_(display_server_protocol)#Differences_between_Wayland_and_X|Wikipedia に Wayland と Xorg の比較]] 掲載されています。
[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 プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、'''コンポジタ''' と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、'''コンポジタ''' と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。


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


== 要件 ==
== 要件 ==


ほとんどの Wayland コンポジタ[[Kernel Mode Setting|カーネルモードセッティング]]を利用してるシテムでのみ動作しま。Wayland それ自体グラフィカルな環境を提供しません。ゆえに、Wayland に加えてコンポジタ (以下セクションを参照)、あるいはンポジタ含むデスクトップ環境 (例: [[GNOME]]、[[KDE]]) が必要なります。
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] です。
[[画像処理装置|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]] < 495* 以外の全てのドライバー || 全て
| GBM || [[NVIDIA]] < 495* 以外の全てのドライバー || 全て
|-
|-
| EGLStreams || [[NVIDIA]] || [[GNOME]]、(サードパーティのパッチを適用した) [[Weston#EGLstream のサポート (Nvidia 専用ドライバ)|Weston]]
| EGLStreams || [[NVIDIA]] || [[GNOME]]
|-
|}
|}


: *: 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]


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 のサポートを打ち切りました]。
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 のサポートを打ち切りました]。
39行目: 40行目:
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep "renderer for"}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください:
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep "renderer for"}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください:


GBM_BACKEND=nvidia-drm
{{bc|<nowiki>
__GLX_VENDOR_LIBRARY_NAME=nvidia
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia
</nowiki>}}


== コンポジタ ==
== コンポジタ ==


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

=== スタック型 ===

* {{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}}}}
* {{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}}}}
* {{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|jay|Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は宣言型の TOML ファルか、コポジタにンジェクトされる共有ライブラリで設定できます。|https://github.com/mahkoh/jay|{{AUR|jay}}}}
* {{App|dwl|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://github.com/djpohly/dwl|{{AUR|dwl}}}}
* {{App|miracle-wm|Mir ベースの Wayland コンポジた。i3 や sway のスイルですが、swayfs のように、これらよりも派手で機能に富んでいます。|https://github.com/miracle-wm-org/miracle-wm|{{AUR|miracle-wm}}}}
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックタイル型 Wayland コンポジタ。|https://hyprland.org|{{AUR|hyprland}}}}
* {{App|[[niri]]|ロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}}
* {{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|{{Pkg|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-git}}}}
* {{App|SwayFx|魅力的視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}}
* {{App|Vivarium|wlroots を使用するダイナミックタイ型 Wayland コ。[[xmonad]] にインスパイアされたデスクトップセマンティクス持ちます。|https://github.com/inclement/vivarium|{{AUR|vivarium-git}}}}
* {{App|Velox|swc ベースのシンプなウィドウマネーャですdwm と [[xmonad]] の影響受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}}
* {{App|waymonad|[[Haskell]] で書かれた xmonad にインスパイアされた Wayland コンジタ。|https://github.com/waymonad/waymonad}}


=== スタック型 ===
=== ダイナミック型 ===


* {{App|[[cwc]]|wlroots ベースの [[awesome]] ライクな Wayland コンポジタ。|https://cudiph.github.io/cwc/apidoc/| {{AUR|cwc}}}}
* {{App|[[Enlightenment]]|[[Enlightenment]]|[[Enlightenment#Enlightenment を手動で起動する]] を参照してください。詳細: [https://git.enlightenment.org/core/enlightenment.git/tree/README]{{Dead link|2022|09|23|status=404}} [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}
* {{App|[[Mangowc]]|[[dwl]] ベースのコンポジタ。標準的な設定ファイル、オプションのスクロールレイアウト、素晴らしいデザイン構築可能。|https://github.com/DreamMaoMao/mangowc|{{AUR|mangowc}}}}
* {{App|Greenfield|Web ブラウザーで実行され、リモートのアプリケーションを表示できます。|https://greenfield.app/}}
* {{App|Grefsen|最小限のデスクトップ環境を提供する Qt/Wayland コンポジタ。|https://github.com/ec1oud/grefsen}}
* {{App|[[dwl]]|wlroots ベーの [[dwm]] ライ Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}}
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}
* {{App|[[Hyprland]]|見た目を犠牲しないダナミックなタイリ Wayland コンポジタ。|https://hypr.land|{{Pkg|hyprland}}}}
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Plasma の起動]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuickQtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}
* {{App|[[river]]|dwm[[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}}
* {{App|labwc|Openbox にインスパイアされ wlroots ベースのコンポジタ。|https://github.com/labwc/labwc|{{AUR|labwc-git}}}}
* {{App|pinnacle-comp|Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。|https://github.com/pinnacle-comp/pinnacle|{{AUR|pinnacle-comp}}}}
* {{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|[[Weston]]|正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://wio-project.org/{{Dead link|2022|09|23|status=SSL error}}|{{AUR|wio-wl}}}}


=== その他 ===
=== その他 ===


* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}
* {{App|nwg-shell|sway Wayland コンポジタのための、GTK ベースのシェル。|https://github.com/nwg-piotr/nwg-shell|{{AUR|nwg-shell}}}}
* {{App|GNOME Kiosk|Mutter ベースのコンポジタ。特定用途みに使用する場合やウォルディプレイや POS システムなど単一アプリケーョンの環境に最適です。|https://gitlab.gnome.org/GNOME/gnome-kiosk|{{AUR|gnome-kiosk}}}}
* {{App|kiwmi|完全にプログラミング可能な Wayland コンポジタ。|https://github.com/buffet/kiwmi|{{AUR|kiwmi-git}}}}
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}}
* {{App|Wayback|Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。|https://wayback.freedesktop.org/|{{AUR|wayback-x11}}}}


上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。
92行目: 98行目:
{| class="wikitable sortable"
{| class="wikitable sortable"
! 名前
! 名前
! それ自体は Wayland で動作するか?
! で動作するか
! 説明
! 説明
|-
| {{Pkg|emptty}}
| TTY
| TTY で動作するシンプルな CLI ディスプレイマネージャ。
|-
|-
| [[GDM]]
| [[GDM]]
| {{Yes}}
| Wayland
| [[GNOME]] ディスプレイマネージャ。
| [[GNOME]] ディスプレイマネージャ。
|-
|-
| [[greetd]]
| [[greetd]]
| {{Y|Wayland の greeter が利用可能}}
| Wayland/Xorg/TTY
[[Greetd#Greeter]] を参照。
| 最小でありながら柔軟なログインデーモン。
| 最小でありながら柔軟なログインデーモン。
|-
| {{Pkg|lemurs}}
| TTY
| Rust で書かれた TUI ディスプレイマネージャ。
|-
| {{AUR|lidm}}
| TTY
| C で書かれた、完全にカラフルでカスタマイズ可能な TUI ディスプレイマネージャ。
|-
|-
| [[LightDM]]
| [[LightDM]]
| Xorg[https://github.com/canonical/lightdm/issues/267]
| {{No}}
| 様々なデスクトップに対応したディスプレイマネージャ。
| 様々なデスクトップに対応したディスプレイマネージャ。
|-
|-
| {{Pkg|ly}}
| [[Ly]]
| {{No}}
| TTY
| C で書かれた TUI ディスプレイマネージャ。
| Zig で書かれた TUI ディスプレイマネージャ。
|-
|-
| [[SDDM]]
| [[SDDM]]
| Wayland/Xorg
| {{Y|{{AUR|sddm-git}} でのみ}}
| QML ベースのディスプレイマネージャ。
| QML ベースのディスプレイマネージャ。
|-
|-
| [[tbsm]]
| {{AUR|tbsm}}
| {{No}}
| TTY
| bash のみに依存するシンプルな CLI セッションランチャー。
| bash のみに依存するシンプルな CLI セッションランチャー。
|-
| [[uwsm]]
| TTY
| スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。
|}
|}


== GUI ライブラリ ==
== Xwayland ==


{{man|1|Xwayland}} は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] で詳細を確認してください。

Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。

{{Note|
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。
* パフォーマンス: ほとんどのケースで Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}}

=== Wayback ===

[https://wayback.freedesktop.org/ Wayback] ({{AUR|wayback-x11}}、{{AUR|wayback-x11-git}}) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。

=== NVIDIA ドライバ ===

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

なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。

=== Xwayland アプリケーションを検出する ===

アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。

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

あるいは、''xlsclients'' ({{Pkg|xorg-xlsclients}} パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、{{ic|xlsclients -l}} を実行してください。

あるいは、{{AUR|extramaus}} を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。

{{Tip|KDE Plasma の場合は、[[KDE#KWin デバッグコンソール]] でウィンドウを調査できます。}}

== GUI ライブラリ ==


=== GTK ===
=== GTK ===
132行目: 187行目:
=== Qt ===
=== Qt ===


[[Qt]] 5 または 6 で Wayland のサポートを有効化するには、Qt 5 と 6 に対してそれぞれ {{Pkg|qt5-wayland}} または {{Pkg|qt6-wayland}} パッケージをインストールしてください。
[[Qt]] 5 で Wayland のサポートを有効化するには、{{Pkg|qt5-wayland}} パッケージをインストールしてください。これで、Qt 5 アプリケーションは Wayland セッション上では 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 プラグインを使って 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 セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの 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}} を設定することで解決できます。

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]) では荒いフォントが表示される場合があります。
回避策は、{{ic|1=QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor}} [[環境変数]]を設定してアプリケーションを起動することです。
これにより、アプリケーションのウィンドウが分数スケーリングされなくなります。


=== Clutter ===
=== Clutter ===


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


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


=== SDL2 ===
=== SDL ===


[[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].
SDL2 バージョン 2.0.22 の時点で、SDL [https://github.com/libsdl-org/SDL/pull/4306 デフォルトでは、X11 よりも Wayland が優先されます]。


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

{{ic|1=SDL_VIDEODRIVER="wayland,x11"}} とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [https://wiki.libsdl.org/SDL2/FAQUsingSDL]。ウィンドウ装飾を有効化するために {{Pkg|libdecor}} をインストールすると良いかもしれません (例えば、GNOME で)。

詳細は[https://wiki.libsdl.org/SDL3/README/wayland 公式のドキュメント]を参照してください。


=== GLFW ===
=== GLFW ===


{{Pkg|glfw}} パッケージには Wayland に対するサポートがあります。{{ic|1=XDG_SESSION_TYPE}} が {{ic|1=wayland}} に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。
GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} ではなく) {{Pkg|glfw-wayland}} パッケージをインストールしてください。

詳細は GLFW の[https://github.com/glfw/glfw/blob/3.4/src/platform.c#L87-L99 ソースコード]を参照してください。


=== GLEW ===
=== GLEW ===


{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。
{{AUR|glew-wayland-git}} パッケージ GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。


=== EFL ===
=== EFL ===


Enlightenment には[https://www.enlightenment.org/about-wayland 完全な Wayland サポート]があります.
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。

EFL ベースのアプリケーションを Wayland 上で動作させるには、{{ic|1=ELM_DISPLAY=wl}} を設定してください。


=== winit ===
=== winit ===


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

* バージョン 0.29.2 より前の場合、{{ic|1=WINIT_UNIX_BACKEND=x11}} を設定してください。
* バージョン 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 ===
=== Electron ===


{{Note|[[KDE|Plasma]] では、一部の Electron アプリケーションがウィンドウに間違ったアイコン (デフォルトの Wayland アイコン) を使用することがあります (タスクバーには正しいアイコンが表示されます)。そのアプリケーションのデスクトップファイル名を強制する特殊なアプリケーション/ウィンドウルールを作成することで、解決できます。}}
Wayland サポートを有効化する方法は次の2つです: アプリケーションごとのコマンドラインフラグを使って有効化するか、設定ファイルを使ってグローバルに有効化するかです。

Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。


==== コマンドラインフラグ ====
==== コマンドラインフラグ ====


Wayland で {{Pkg|electron}} ベースアプリケーションをネイティブに使用するには、次のフラグをアプリケーションの exec コマンドラインに追加する必要があります (Electron 20 の場合): {{ic|1=--ozone-platform-hint=auto}}
{{Note|一部パッケーは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります}}


Wayland で動作させるために必要なコマンドラインフラグは [[Chromium#ネイティブ Wayland サポート]] を見てください。ただし、Electron 38 以降、コマンドラインフラグ {{ic|1=--ozone-platform-hint=auto}} は機能しないことに注意してください。
トップバーが消失する問題は、追加で次のフラグを使用することで解決できます: {{ic|1=--enable-features=WaylandWindowDecorations}}。このフラグは通常、[[GNOME]] ([https://github.com/electron/electron/pull/29618 electron17] より対応) で必要となります。


これらのフラグを手動で渡すこともできますが、[[Electron#設定ファイル|Electron の設定ファイル]]でフラグを永続化したり、[[デスクトップエントリ#desktop ファイルの変更|~/.local/share/applications の .desktop ファイル]]内の {{ic|1=Exec=}} 行にフラグを追加することでフラグを渡したりもできます。
Wayland での electon 画面キャプチャの問題を解決するには {{ic|1=--enable-webrtc-pipewire-capturer}} を使用してください。このキャプチャは {{Pkg|xdg-desktop-portal}} をベースにしています。


{{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.}}
fcitx の入力問題を解決するには、{{ic|1=--gtk-version=4}} を使用します。


Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは {{Pkg|xdg-desktop-portal}} をベースとしています。
コマンドラインフラグの設定は、例えば [[デスクトップエントリ#desktop ファイルの変更|.desktop ファイルを変更]]し、{{ic|1=Exec=}} 行の最後にフラグを追加することで可能です。


トップバーが表示されない場合は、{{ic|1=--enable-features=WaylandWindowDecorations}} で解決できます。これは、例として [[GNOME]] で必要となります ([https://github.com/electron/electron/pull/29618 electron17] からサポートされています)。
{{Note|{{AUR|visual-studio-code-bin}} のような ([https://github.com/microsoft/vscode/issues/134612 バグレポート]) 一部のアプリケーションは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}}


==== 設定ファイル ====
==== 環境変数 ====


バージョン 28 から 37 の間の Electron を使用するアプリケーションは、[[環境変数]] {{ic|ELECTRON_OZONE_PLATFORM_HINT}} を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。
ファイル {{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} ({{ic|${XDG_CONFIG_HOME} }} が設定されていない場合、{{ic|1=~/config/electron-flags.conf}} がデフォルトです) を作成/編集し、先に説明したフラグを追加してください (1行につき1オプション、空の行は無し):


コマンドラインのほうが、環境変数よりも優先されます。
{{hc|~/.config/electron-flags.conf|2=
--enable-features=WaylandWindowDecorations
--ozone-platform-hint=auto
}}

{{Note|このような設定ファイルは、公式リポジトリ内の Electron のパッケージと、それらの設定ファイルを使用するパッケージでのみ機能します。{{AUR|slack-desktop}} などのような Electron の独自のビルドをバンドルしているパッケージでは機能しません。{{AUR|slack-electron}} のように代替のパッケージが存在する場合があります。}}

==== 古い Electron バージョン ====

{{ic|electron-flags.conf}} は、Electron の最新バージョンに対してのみ適用されます。古いバージョンの Electron は独自の {{ic|electron<version>-flags.conf}} ファイルを使用して設定することができます。バージョン管理されたファイルは、{{ic|${XDG_CONFIG_HOME}/electron-flags.conf}} にソフトリンクを貼ることができます。

古いバージョンでは、対応する Chromium バージョンによって異なるフラグが必要になる場合があります。例えば、以下のフラグは Electron 13 で機能します:

{{hc|~/.config/electron13-flags.conf|2=
--enable-features=UseOzonePlatform
--ozone-platform=wayland
}}


=== Java ===
=== Java ===


[[Java]] プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。
[[Java]] プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。
OpenJDK に Wayland を実装することを目的としたプロジェクトである [https://openjdk.java.net/projects/wakefield/ Wakefield] が実用できるようになるまでは、XWayland を代わりに使用できます。
OpenJDK に Wayland を実装することを目的としたプロジェクトである [https://openjdk.java.net/projects/wakefield/ Wakefield] が実用できるようになるまでは、Xwayland を代わりに使用できます。


[[Debian:Wayland#Java Programs (supported since OpenJDK 16?)]] を参照してください:
:OpenJDK 16から、JRE は GTK3(Wayland をサポートしている)を動的にロードできるようになりました。この [https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland discussion] によると、これがサポートされるかもしれません。
:{{ic|_JAVA_AWT_WM_NONREPARENTING}} [[環境変数]]を設定することで、Wayland をサポートする GTK3 を動的にロードすることができます。[[環境変数]]を "1" に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。


:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。
== XWayland ==
:{{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://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。

XWayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、XWayland との互換性についてや、XWayland の起動方法に関する指示を確認しておく必要があります。

{{Note|
* セキュリティ: XWayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。
* パフォーマンス: XWayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。しかし、一部のケースで (特に NVIDIA カード上で) パフォーマンスの低下を感じるかもしれません。
* 互換性: XWayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは XWayland 下では正しく動作しない場合があります。}}

=== NVIDIA ドライバ ===

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

なお、[[NVIDIA#DRM カーネルモードセッティング|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。


== ヒントとテクニック ==
== ヒントとテクニック ==
237行目: 281行目:
=== 自動化 ===
=== 自動化 ===


* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotoold|url=https://github.com/ReimuNotMoe/ydotool/blob/master/manpage/ydotool.1.scd}} を参照。
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotool}} を参照。
* [https://github.com/atx/wtype wtype] ({{Pkg|wtype}}) - Wayland 用 xdotool type。{{man|1|wtype}} を参照。
* [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://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 をサポート)。
* [https://git.sr.ht/~brocellous/wlrctl wlrctl] ({{AUR|wlrctl}}) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。


=== キーボードやマウスキーのリマップ ===
=== Kwin Wayland デバッグコンソール ===


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


=== スクリーンキャスト ===
$ qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole


[[スクリーンキャプチャ#スクリーンキャスト]] と [[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。
=== Xwayland アプリケーションであることを視認する ===


=== アプリが閉じた後もクリップボードの内容を保持する ===
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。


Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。{{Pkg|wl-clip-persist}} を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。


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


{{Note|[[Universal Wayland Session Manager]] は、使用中のコンポジタの systemd ユニットを自動的に生成します。さらに、[[Universal Wayland Session Manager#アプリケーションと自動起動|グラフィカルアプリケーションを systemd と統合する]]際にも役立ちます。}}
=== キーボードやマウスキーのリマップ ===


ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタを[[systemd]] サービスを使って自動的に起動できます。{{ic|ExecStart}} 行を使いたいコンポジタに変えて下さい。以下は [[KDE Plasma]] の例です:
[[入力リマップユーティリティ]] を見てください。

{{hc|/etc/systemd/system/wayland-compositor.service|2=
[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 ベースのコンポジタに対して {{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 のドキュメント]にあります。


==トラブルシューティング==
== トラブルシューティング ==


=== 色補正 ===
=== 色補正 ===
273行目: 340行目:
=== リモートディスプレイ ===
=== リモートディスプレイ ===


* ([[sway]] で使用されている) {{pkg|wlroots}} は、バージョン 0.10 より、{{Pkg|wayvnc}} を使って VNC バックエンドを提供しています。RDP バックエンドは削除されました [https://github.com/swaywm/wlroots/releases/tag/0.10.0]。
* ([[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}} を見てください。
* {{pkg|mutter}} はコンパイル時にリモートデスクトップが有効化されています。詳細は [https://wiki.gnome.org/Projects/Mutter/RemoteDesktop] と {{Pkg|gnome-remote-desktop}} を見てください。
* {{pkg|krfb}} は {{pkg|kwin}} に VNC サーバを提供します。{{ic|krfb-virtualmonitor}} を使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。
* {{AUR|waypipe}} (や {{AUR|waypipe-git}}) は Wayland アプリケーションの透過プロキシです。[[SSH]] 上で動作するラッパーコマンドあり。
* {{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}}


=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 ===
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 ===
287行目: 357行目:
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。


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


これらの拡張はすでに {{pkg|wayland-protocols}} に含まれており、{{pkg|xorg-xwayland}} によってサポートされています。
これらの拡張はすでに {{pkg|wayland-protocols}} に含まれており、{{pkg|xorg-xwayland}} によってサポートされています。
293行目: 363行目:
関連する拡張:
関連する拡張:


* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing 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://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit 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://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/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]
304行目: 374行目:
* Kwin
* Kwin
** [[KDE#Wayland で X11 のショートカットが衝突する]]
** [[KDE#Wayland で X11 のショートカットが衝突する]]
** [https://invent.kde.org/plasma/kwin/-/blob/master/src/wayland/keyboard_shortcuts_inhibit_v1_interface.cpp Keybord shortcuts inhibit]
** [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 以降)


=== GTK テーマが動かない ===
=== GTK テーマが動かない ===
321行目: 391行目:


スクリーンの拡大は、まだ解決していません。[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/145 wp-surface-scale プロトコルを提供する]プルリクエストが2022年半ばにマージされました。
スクリーンの拡大は、まだ解決していません。[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 公式 Wayland Git リポジトリ]
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ]
* [[Fedora:How to debug Wayland problems]]
* [[Fedora:How to debug Wayland problems]]
* [https://arewewaylandyet.com/ Are we Wayland yet?]
* [https://wearewaylandnow.com/ We are Wayland now!] - "Are we Wayland yet?" の更新されたバージョン
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]
* [[カーソルテーマ]]
* [[カーソルテーマ]]
335行目: 419行目:
* [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]
* [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|2023-03-11|770242}}
{{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 プロトコルを実装しているデスクトップ環境 (例: GNOMEPlasma) のみです。ほとんどの Wayland コンポジタは、カーネルモード設定を使用しているシステム上でのみ動作します。

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

バッファ 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 デスクトップ環境のコンポジタ。
https://github.com/pop-os/cosmic-comp || cosmic-comp
  • hikari — FreeBSD で活発に開発されている cwm にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。
http://hikari.acmelabs.space/ || hikariAUR
https://userbase.kde.org/KWin || kwin
  • labwc — Openbox にインスパイアされた wlroots ベースのコンポジタ。
https://github.com/labwc/labwc || labwc
https://gitlab.gnome.org/GNOME/mutter || mutter
  • waybox — Openbox をモデルとした最小主義の Wayland コンポジタ。
https://github.com/wizbright/waybox || wayboxAUR
  • wayfireCompiz にインスパイアされた、wlroots ベースの 3D コンポジタ。
https://wayfire.org/ || wayfireAUR
  • Weston — 正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。
https://gitlab.freedesktop.org/wayland/weston || weston
  • wio — Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。
https://gitlab.com/Rubo/wio || wio-wlAUR
  • wlmakerWindow Maker からインスパイアされた wlroots ベースのコンポジタ。
https://phkaeser.github.io/wlmaker/ || wlmakerAUR
  • woodland — Wayland 用の wlroots ベースの、最小かつ軽量のウィンドウスタッキングコンポジタ。Wayfire と TinyWl にインスパイアされています。
https://github.com/DiogenesN/woodland || woodlandAUR

タイル型

https://github.com/project-repo/cagebreak || cagebreakAUR
  • jay — Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。
https://github.com/mahkoh/jay || jayAUR
  • miracle-wm — Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。
https://github.com/miracle-wm-org/miracle-wm || miracle-wmAUR
  • niri — スクロール可能なタイル型 Wayland コンポジタ。
https://github.com/YaLTeR/niri/ || niri
  • Qtile — Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。
https://github.com/qtile/qtile || qtile
  • Sway — wlroots ベースの i3 互換 Wayland コンポジタ。
https://github.com/swaywm/sway || sway
  • SwayFx — 魅力的な視覚効果機能を追加した Sway
https://github.com/WillPower3309/swayfx || swayfxAUR
  • Velox — swc ベースのシンプルなウィンドウマネージャです。dwm と xmonad の影響を受けています。
https://github.com/michaelforney/velox || velox-gitAUR

ダイナミック型

  • cwc — wlroots ベースの awesome ライクな Wayland コンポジタ。
https://cudiph.github.io/cwc/apidoc/ || cwcAUR
  • Mangowcdwl ベースのコンポジタ。標準的な設定ファイル、オプションのスクロールレイアウト、素晴らしいデザイン構築可能。
https://github.com/DreamMaoMao/mangowc || mangowcAUR
  • dwl — wlroots ベースの dwm ライクな Wayland コンポジタ。
https://codeberg.org/dwl/dwl || dwlAUR
  • Hyprland — 見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。
https://hypr.land || hyprland
  • japokwm — wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。
https://github.com/werererer/japokwm || japokwm-gitAUR
  • river — dwm と bspwm にインスパイアされた動的なタイル型 Wayland コンポジタ。
https://codeberg.org/river/river || river
  • pinnacle-comp — Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。
https://github.com/pinnacle-comp/pinnacle || pinnacle-compAUR

その他

  • Cage — キオスクのような単一のフルスクリーンアプリケーションを表示します。
https://www.hjdskes.nl/projects/cage/ || cage
  • GNOME Kiosk — Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。
https://gitlab.gnome.org/GNOME/gnome-kiosk || gnome-kioskAUR
  • phoc — モバイル端末のための wlroots ベースの小さなコンポジタ。
https://gitlab.gnome.org/World/Phosh/phoc || phoc
  • Wayback — Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。
https://wayback.freedesktop.org/ || wayback-x11AUR

上記のいくつかは ディスプレイマネージャ をサポートする場合があります。 それらがどのように開始されるかを /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-x11AURwayback-x11-gitAUR) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。

NVIDIA ドライバ

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

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

Xwayland アプリケーションを検出する

アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、xorg-xeyes を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。

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

あるいは、xlsclients (xorg-xlsclients パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、xlsclients -l を実行してください。

あるいは、extramausAUR を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。

ヒント KDE Plasma の場合は、KDE#KWin デバッグコンソール でウィンドウを調査できます。

GUI ライブラリ

GTK

gtk3gtk4 パッケージは 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_TYPEwayland に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、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

ノート Plasma では、一部の Electron アプリケーションがウィンドウに間違ったアイコン (デフォルトの Wayland アイコン) を使用することがあります (タスクバーには正しいアイコンが表示されます)。そのアプリケーションのデスクトップファイル名を強制する特殊なアプリケーション/ウィンドウルールを作成することで、解決できます。

Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。

コマンドラインフラグ

ノート 一部のパッケージは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。

Wayland で動作させるために必要なコマンドラインフラグは Chromium#ネイティブ Wayland サポート を見てください。ただし、Electron 38 以降、コマンドラインフラグ --ozone-platform-hint=auto は機能しないことに注意してください。

これらのフラグを手動で渡すこともできますが、Electron の設定ファイルでフラグを永続化したり、~/.local/share/applications の .desktop ファイル内の Exec= 行にフラグを追加することでフラグを渡したりもできます。

この記事またはセクションの正確性には問題があります。
理由: Old version of Electron needs --enable-features=WebRTCPipeWireCapturer But what version is it enable by default? Also default behavior of Electron vendored by non-free software would be wrong. (議論: トーク:Wayland#)

Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは xdg-desktop-portal をベースとしています。

トップバーが表示されない場合は、--enable-features=WaylandWindowDecorations で解決できます。これは、例として GNOME で必要となります (electron17 からサポートされています)。

環境変数

バージョン 28 から 37 の間の Electron を使用するアプリケーションは、環境変数 ELECTRON_OZONE_PLATFORM_HINTauto または 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 サービスとして自動的に起動する

ノート Universal Wayland Session Manager は、使用中のコンポジタの systemd ユニットを自動的に生成します。さらに、グラフィカルアプリケーションを 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.18wlroots0.19 は、バージョン 0.10 より、wayvnc による VNC バックエンドを提供しています。RDP バックエンドは削除されました [13]
  • mutter はコンパイル時にリモートデスクトップが有効化されています。詳細は [14]gnome-remote-desktop を見てください。
  • krfbkwin に 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 によってサポートされています。

関連する拡張:

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

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

  • 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=immediatevk_xwayland_wait_ready=false の片方/両方を設定することです。しかし、これらの変数は VSync あるいは VRR の機能を破壊します。

参照

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