コンテンツにスキップ

「Wayland」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
ディスプレイマネージャ: 移動したので削除
AshMyzk (トーク | 投稿記録)
同期
 
(6人の利用者による、間の134版が非表示)
1行目: 1行目:
[[Category:Wayland]]
[[Category:グラフィカルユーザーインターフェイス]]
[[es:Wayland]]
[[de:Wayland]]
[[en:Wayland]]
[[en:Wayland]]
[[fr: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|Kernel Mode Setting}}
{{Related|画像処理装置}}
{{Related|カーネルモード設定}}
{{Related|Xorg}}
{{Related|Xorg}}
{{Related|スクリーンショットの取得}}
{{Related|スクリーンショットの取得#Wayland}}
{{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 プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、'''コンポジタ''' と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。

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


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


Wayland というのは単なるプロトコルです。[[Xorg]] とは違い、インストールすべき共通の「ディスプレイサーバ」は存在しません。Wayland を使用するために必要になるのは、互換性のあるディスプレイドライバ (この章) とコンポジタ (次の章)、あるいは Wayland プロトコルを実装している[[デスクトップ環境]] (例: [[GNOME]]、[[Plasma]]) のみです。ほとんどの Wayland コンポジタは、[[カーネルモード設定]]を使用しているシステム上でのみ動作します。
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。


GPU ドライバと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&px=XDC2016-Device-Memory-API EGLStreams] です。
[[画像処理装置|GPU ドライバ]]と Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&px=XDC2016-Device-Memory-API EGLStreams] です。


{| class="wikitable"
{| class="wikitable"
|-
! バッファ 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]
== Compositors ==

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 によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep "renderer for"}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください:

GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia

== コンポジタ ==

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

=== スタック型 ===


* {{App|[[COSMIC]] コンポジタ|COSMIC デスクトップ環境のコンポジタ。|https://github.com/pop-os/cosmic-comp|{{Pkg|cosmic-comp}}}}
See [[Window manager#Types]] for the difference between '''Tiling''' and '''Stacking'''.
* {{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}}}}


=== Tiling ===
=== タイル型 ===


* {{App|[[Cagebreak]]|Based on cage, inspired by [[ratpoison]].|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}} {{AUR|cagebreak-bin}}}}
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}}}}
* {{App|jay|Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。|https://github.com/mahkoh/jay|{{AUR|jay}}}}
* {{App|Cardboard|Scrolling compositor, inspired by PaperWM, based on wlroots.|https://gitlab.com/cardboardwm/cardboard|{{AUR|cardboard-git}}}}
* {{App|dwl|[[dwm]]-like Wayland compositor based on wlroots.|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|japokwm|Dynamic wayland tiling compositor based around creating layouts, based on wlroots.|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}
* {{App|[[niri]]|スクロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}}
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}
* {{App|river|Dynamic tiling Wayland compositor inspired by dwm and [[bspwm]].|https://github.com/ifreund/river|{{AUR|river-git}}}}
* {{App|[[Sway]]|[[i3]]-compatible Wayland compositor based on wlroots.|https://github.com/swaywm/sway|{{Pkg|sway}}}}
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}
* {{App|[[Velox]]|Simple window manager based on swc, inspired by dwm and [[xmonad]].|https://github.com/michaelforney/velox|{{AUR|velox}}}}
* {{App|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}}
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。dwm と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}}
* {{App|waymonad|Wayland compositor inspired by xmonad written in [[Haskell]].|https://github.com/waymonad/waymonad}}


=== Stacking ===
=== ダイナミック型 ===


* {{App|[[cwc]]|wlroots ベースの [[awesome]] ライクな Wayland コンポジタ。|https://cudiph.github.io/cwc/apidoc/| {{AUR|cwc}}}}
* {{App|[[Enlightenment]]|See [[Enlightenment#Manually]]. More Info: [https://git.enlightenment.org/core/enlightenment.git/tree/README] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}
* {{App|[[Mangowc]]|[[dwl]] ベースのコンポジタ。標準的な設定ファイル、オプションのスクロールレイアウト、素晴らしいデザイン構築可能。|https://github.com/DreamMaoMao/mangowc|{{AUR|mangowc}}}}
* {{App|Greenfield|Runs in a web browser and can display remote applications.|https://greenfield.app/}}
* {{App|Grefsen|Qt/Wayland compositor providing a minimal desktop environment.|https://github.com/ec1oud/grefsen}}
* {{App|[[dwl]]|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}}
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。|https://hypr.land|{{Pkg|hyprland}}}}
* {{App|hikari|wlroots-based compositor inspired by [[cwm]] which is actively developed on FreeBSD but also supports Linux.|https://hikari.acmelabs.space/|{{AUR|hikari}}}}
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}
* {{App|KDE [[w:KWin|KWin]]|See [[KDE#Starting Plasma]].|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}
* {{App|[[river]]|dwm と [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}}
* {{App|Liri Shell|Part of [[Liri]], built using QtQuick and QtCompositor as a compositor for Wayland.|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}
* {{App|pinnacle-comp|Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。|https://github.com/pinnacle-comp/pinnacle|{{AUR|pinnacle-comp}}}}
* {{App|labwc|wlroots-based compositor inspired by Openbox.|https://github.com/johanmalm/labwc|{{AUR|labwc-git}}}}
* {{App|[[w:Mutter (software)|Mutter]]|See [[GNOME#Starting]].|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}
* {{App|wayfire|3D compositor inspired by [[Compiz]] and based on wlroots.|https://wayfire.org/|{{AUR|wayfire}}}}
* {{App|[[Weston]]|reference implementation of a Wayland compositor.|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}
* {{App|wio|wlroots-based compositor that aims to replicate the look and feel of Plan 9's Rio desktop.|https://wio-project.org/}}


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


* {{App|Cage|Displays a single fullscreen application like a kiosk.|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}
* {{App|GNOME Kiosk|Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。|https://gitlab.gnome.org/GNOME/gnome-kiosk|{{AUR|gnome-kiosk}}}}
* {{App|Maze Compositor|Renders windows in a 3D maze using Qt.|https://github.com/imbavirus/mazecompositor}}
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}}
* {{App|Motorcar| Wayland compositor to explore 3D windowing using virtual reality.|https://github.com/evil0sheep/motorcar}}
* {{App|Wayback|Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。|https://wayback.freedesktop.org/|{{AUR|wayback-x11}}}}


上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。
Some of the above may support [[display manager]]s. Check {{ic|/usr/share/wayland-sessions/''compositor''.desktop}} to see how they are started.
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/''compositor''.desktop}} を見て確認してください。


== ディスプレイマネージャ ==
== ディスプレイマネージャ ==


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


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

== Xwayland ==

{{man|1|Xwayland}} は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。

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 ライブラリ ==
== GUI ライブラリ ==
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。


=== GTK+ 3 ===
=== GTK ===


公式リポジトリの {{pkg|gtk3}} パッケージは Wayland バックエンドが有効になっています。
{{Pkg|gtk3}} と {{Pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、[[環境変数]]を設定することで Xwayland を使うように上書きできます: {{ic|1=GDK_BACKEND=x11}}


テーマの問題は [[GTK#Wayland バックエンド]] を見てください。
Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND&#61;x11}} 環境変数を設定することで Xwayland を使うように上書きできます。


=== Qt ===
{{Note|GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになり、Qt の lighthouse と同じ方法でバックエンドを切り替えることができるようになりました。}}


[[Qt]] 5 で Wayland のサポートを有効化するには、{{Pkg|qt5-wayland}} パッケージをインストールしてください。これで、Qt 5 アプリケーションは Wayland セッション上では Wayland で動作するようになります。
=== Qt5 ===


必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。
{{Grp|qt5}} パッケージは Wayland をサポートしています。{{Pkg|qt5-wayland}} をインストールしてください。


一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
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}} とセットします。
また、{{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]
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。


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


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


Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{AUR|clutter}} パッケージで有効になっています。
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND&#61;wayland}} を設定する必要があります。


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


=== SDL ===
SDL アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER&#61;wayland}} を設定する必要があります。一方、XWayland を使うようにするには、{{ic|1=SDL_VIDEODRIVER=x11}} を指定します。


[[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|Wayland 未対応の古い SDL が内部に含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=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}} を設定してください。

{{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-git}} パッケージが GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。
GLEW で Wayland バックエンドを使用するには、({{Pkg|glew}} の代わりに) {{Pkg|glew-wayland}} パッケージをインストールしてください。

=== EFL ===


Enlightenment には[https://www.enlightenment.org/about-wayland 完全な Wayland サポート]があります.
===EFL===


EFL は Wayland を完全にサポトしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ]さい。
EFL スのアプリケーションを Wayland 上で作させるには、{{ic|1=ELM_DISPLAY=wl}}設定しください。


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


[https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することきます。{{ic|XINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}}してください。
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]


===GNOME===
=== Electron ===


{{Note|[[KDE|Plasma]] では、一部の Electron アプリケーションがウィンドウに間違ったアイコン (デフォルトの Wayland アイコン) を使用することがあります (タスクバーには正しいアイコンが表示されます)。そのアプリケーションのデスクトップファイル名を強制する特殊なアプリケーション/ウィンドウルールを作成することで、解決できます。}}
{{Warning|Gnome Wayland セッションは {{Pkg|xorg-xwayland}} をインストールしていないと起動しません。}}


Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。
バージョン 3.14 から、[[GNOME]] は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。


==== コマンドラインフラグ ====
Gnome Wayland セッションを起動するには、GDM ログインマネージャを使用する必要があります。ログインする前に "Gnome on Wayland" セッションを選択してください。


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


Wayland で動作させるために必要なコマンドラインフラグは [[Chromium#ネイティブ Wayland サポート]] を見てください。ただし、Electron 38 以降、コマンドラインフラグ {{ic|1=--ozone-platform-hint=auto}} は機能しないことに注意してください。
E19 から Wayland に対応していましたが、現在は削除されており、E20 以上が通常の利用に耐えうるほど Wayland で安定動作するとされています。詳しくは [https://www.enlightenment.org/about-wayland] を参照。


これらのフラグを手動で渡すこともできますが、[[Electron#設定ファイル|Electron の設定ファイル]]でフラグを永続化したり、[[デスクトップエントリ#desktop ファイルの変更|~/.local/share/applications の .desktop ファイル]]内の {{ic|1=Exec=}} 行にフラグを追加することでフラグを渡したりもできます。
===KDE===


{{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.}}
[[KDE#Wayland]] を見てください。


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


トップバーが表示されない場合は、{{ic|1=--enable-features=WaylandWindowDecorations}} で解決できます。これは、例として [[GNOME]] で必要となります ([https://github.com/electron/electron/pull/29618 electron17] からサポートされています)。
[https://github.com/Cloudef/loliwm loliwm] は Wayland 用のタイル型ウィンドウマネージャです。


=== sway ===
==== 環境変数 ====


バージョン 28 から 37 の間の Electron を使用するアプリケーションは、[[環境変数]] {{ic|ELECTRON_OZONE_PLATFORM_HINT}} を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。
[[Sway]] は Wayland 用の i3 互換のウィンドウマネージャです。


コマンドラインのほうが、環境変数よりも優先されます。
=== Velox ===


=== Java ===
[[Velox]] は swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。


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


[[Debian:Wayland#Java Programs (supported since OpenJDK 16?)]] を参照してください:
[https://github.com/giucam/orbital Orbital] は Qt5 と Weston を使用する Wayland コンポジタ・シェルです。このプロジェクトではシンプルでありながら柔軟性のある見た目の良い Wayland デスクトップを作成することを目標としています。Orbital は完全装備の DE ではなく、どちらかと言えば [[Awesome]] や [[Fluxbox]] のような X11 におけるウィンドウマネージャに似ています。


:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。
=== Liri Shell ===
:{{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/lirios/shell Liri Shell] は [[Liri]] のデスクトップシェルであり、Wayland のコンポジタとして QtQuick と QtCompositor を使用して作られています。


== ヒントとテクニック ==
=== Maynard ===


=== 自動化 ===
[https://github.com/raspberrypi/maynard Maynard] は GTK ベースの Weston 用デスクトップシェルクライアントです。Tiago Vignatti によるプロジェクト、weston-gtk-shell に基づいています。


* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotool}} を参照。
=== Motorcar ===
* [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 をサポート)。


=== キーボードやマウスキーのリマップ ===
[https://github.com/evil0sheep/motorcar Motorcar] は 3D ウィンドウを探検できる wayland コンポジタです。


[[入力リマップユーティリティ]] を見てください。
=== Way Cooler ===
{{AUR|way-cooler}} は Rust で書かれた (Lua の設定ファイルによる) 豊富な設定を持つ Wayland コンポジタです。i3 と awesome の影響を受けています。


=== Maze Compositor ===
=== スクリーンキャスト ===


[[スクリーンキャプチャ#スクリーンキャスト]] と [[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。
[https://github.com/capisce/mazecompositor Maze Compositor] は 3D の Qt ベースの Wayland コンポジタです。


=== アプリが閉じた後もクリップボードの内容を保持する ===
=== Grefsen ===


Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。{{Pkg|wl-clip-persist}} を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。
[https://github.com/ec1oud/grefsen Grefsen] はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。


=== Wayland コンポジタを systemd サービスとして自動的に起動する ===
== XWayland ==


{{Note|[[Universal Wayland Session Manager]] は、使用中のコンポジタの systemd ユニットを自動的に生成します。さらに、[[Universal Wayland Session Manager#アプリケーションと自動起動|グラフィカルアプリケーションを systemd と統合する]]際にも役立ちます。}}
[https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。


ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタを[[systemd]] サービスを使って自動的に起動できます。{{ic|ExecStart}} 行を使いたいコンポジタに変えて下さい。以下は [[KDE Plasma]] の例です:
これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。


{{hc|/etc/systemd/system/wayland-compositor.service|2=
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。
[Unit]
After=graphical.target systemd-user-sessions.service modprobe@drm.service
Conflicts=getty@tty1.service


[Service]
{{Note|
User=''username''
*セキュリティについて: XWaylandはX サーバーであるため、 Wayland のセキュリティ機能はありません。
WorkingDirectory=~
*現時点では、 Nvidia 独自のドライバーは XWayland の GPU アクセラレーションをサポートしていません。 [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6429this] または [https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/587this] の pull request を参照してください。
}}


PAMName=login
==トラブルシューティング==
TTYPath=/dev/tty1
UnsetEnvironment=TERM


StandardOutput=journal
=== root でグラフィカルアプリケーションを実行 ===
ExecStart=/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland


[Install]
[[Root で X アプリケーションを起動#Wayland]] を見てください。
WantedBy=graphical.target
}}


=== wlroots ベースのコンポジタで他のレンダラーを使用する ===
=== LLVM assertion failure ===
LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで {{Pkg|mesa}} をリビルドする必要があります。


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 のドキュメント]にあります。
これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい:


== トラブルシューティング ==
$ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so


=== 色補正 ===
=== Electron ベースのアプリケーションでは、ディスプレイ::0を開けません ===


[[バックライト#色補正]]を参照。
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。


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

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


=== リモートディスプレイ ===
=== リモートディスプレイ ===


* ([[sway]] で使用されている) {{Pkg|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}} を見てください。
* [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。
* {{pkg|krfb}} は {{pkg|kwin}} に VNC サーバを提供します。{{ic|krfb-virtualmonitor}} を使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。
* [[Weston]] には RDP バックエンドが含まれています。{{man|7|weston-rdp}} を参照してください。
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。
* {{Pkg|mutter}} ベースの場合は {{Pkg|gnome-remote-desktop}} が使えます。[https://wiki.gnome.org/Projects/Mutter/RemoteDesktop 公式サイト] を参照してください。
* {{AUR|waypipe}} や {{AUR|waypipe-git}} は Wayland アプリケーションの透過プロキシです。[[SSH]] を組み合わせること外部から操できま。詳細は[https://gitlab.freedesktop.org/mstoeckl/waypipe 公式サイト]を参照してください
* {{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 と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要
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://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml Xwayland keyboard grabbing protocol]
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]
* [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]


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

* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以降)。
* {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応)
* wlroots (Relative pointer protocols と Pointer constraints protocol に対応)
* 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 プロトコルを実装しているデスクトップ環境 (例: 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 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。