「Wayland」の版間の差分
同期 |
同期 |
||
| (4人の利用者による、間の26版が非表示) | |||
| 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|画像処理装置}} |
|||
{{Related|カーネルモード設定}} |
{{Related|カーネルモード設定}} |
||
{{Related|Xorg}} |
{{Related|Xorg}} |
||
| 11行目: | 14行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバ |
[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 サーバを提供します。 |
||
== 要件 == |
== 要件 == |
||
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 コンポジタのサポート |
||
|- |
|- |
||
| 30行目: | 32行目: | ||
|- |
|- |
||
| EGLStreams || [[NVIDIA]] || [[GNOME]] |
| EGLStreams || [[NVIDIA]] || [[GNOME]] |
||
|- |
|||
|} |
|} |
||
| 44行目: | 45行目: | ||
== コンポジタ == |
== コンポジタ == |
||
'''タイル型''' |
'''スタック型'''、'''タイル型'''、'''ダイナミック型''' の違いについては、[[ウィンドウマネージャ#種類]] を参照してください。 |
||
=== スタック型 === |
|||
* {{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| |
* {{App|jay|Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。|https://github.com/mahkoh/jay|{{AUR|jay}}}} |
||
* {{App|miracle-wm|Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。|https://github.com/miracle-wm-org/miracle-wm|{{AUR|miracle-wm}}}} |
|||
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックタイル型 Wayland コンポジタ。|https://hyprland.org|{{Pkg|hyprland}}}} |
|||
* {{App| |
* {{App|[[niri]]|スクロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}} |
||
* {{App|newm|ラップトップとタッチパッドを念頭に置いて作成された Wayland コンポジタ ''(現在、メンテナンスされていません)''。|https://github.com/jbuchermn/newm/|{{AUR|newm-git}}}} |
|||
* {{App|Polonium|Bismuth のフォークであり、後継。[[KDE]] のためのタイル型ウィンドウマネージャ。|https://github.com/zeroxoneafour/polonium|{{AUR|kwin-polonium}}}} |
|||
* {{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|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}} |
* {{App|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}} |
||
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。 |
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。dwm と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}} |
||
* {{App|Vivarium|wlroots を使用するダイナミックタイル型 Wayland コンポジタ。[[xmonad]] にインスパイアされたデスクトップセマンティクスを持ちます。|https://github.com/inclement/vivarium|{{AUR|vivarium-git}}}} |
|||
=== |
=== ダイナミック型 === |
||
* {{App|[[cwc]]|wlroots ベースの [[awesome]] ライクな Wayland コンポジタ。|https://cudiph.github.io/cwc/apidoc/| {{AUR|cwc}}}} |
|||
* {{App|[[Enlightenment]]|[[Enlightenment]]|[[Enlightenment#手動]] を参照してください。詳細: [https://git.enlightenment.org/enlightenment/enlightenment/src/branch/master/README.md] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}} |
|||
* {{App| |
* {{App|[[Mangowc]]|[[dwl]] ベースのコンポジタ。標準的な設定ファイル、オプションのスクロールレイアウト、素晴らしいデザイン構築可能。|https://github.com/DreamMaoMao/mangowc|{{AUR|mangowc}}}} |
||
* {{App| |
* {{App|[[dwl]]|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}} |
||
* {{App |
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。|https://hypr.land|{{Pkg|hyprland}}}} |
||
* {{App| |
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}} |
||
* {{App|[[ |
* {{App|[[river]]|dwm と [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}} |
||
* {{App| |
* {{App|pinnacle-comp|Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。|https://github.com/pinnacle-comp/pinnacle|{{AUR|pinnacle-comp}}}} |
||
* {{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| |
* {{App|GNOME Kiosk|Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。|https://gitlab.gnome.org/GNOME/gnome-kiosk|{{AUR|gnome-kiosk}}}} |
||
* {{App| |
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}} |
||
* {{App|Wayback|Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。|https://wayback.freedesktop.org/|{{AUR|wayback-x11}}}} |
|||
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{AUR|phoc-embedded-wlroots}}}} |
|||
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。 |
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。 |
||
| 89行目: | 98行目: | ||
{| class="wikitable sortable" |
{| class="wikitable sortable" |
||
! 名前 |
! 名前 |
||
! |
! 何で動作するか |
||
! 説明 |
! 説明 |
||
|- |
|||
| {{Pkg|emptty}} |
|||
| TTY |
|||
| TTY で動作するシンプルな CLI ディスプレイマネージャ。 |
|||
|- |
|- |
||
| [[GDM]] |
| [[GDM]] |
||
| |
| Wayland |
||
| [[GNOME]] ディスプレイマネージャ。 |
| [[GNOME]] ディスプレイマネージャ。 |
||
|- |
|- |
||
| [[greetd]] |
| [[greetd]] |
||
| |
| 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] |
||
| 様々なデスクトップに対応したディスプレイマネージャ。 |
| 様々なデスクトップに対応したディスプレイマネージャ。 |
||
|- |
|- |
||
| {{Pkg|ly}} |
|||
| [[Ly]] |
|||
| |
| TTY |
||
| |
| Zig で書かれた TUI ディスプレイマネージャ。 |
||
|- |
|- |
||
| [[SDDM]] |
| [[SDDM]] |
||
| Wayland/Xorg |
|||
| {{Yes}} |
|||
| QML ベースのディスプレイマネージャ。 |
| QML ベースのディスプレイマネージャ。 |
||
|- |
|- |
||
| |
| {{AUR|tbsm}} |
||
| |
| TTY |
||
| bash のみに依存するシンプルな CLI セッションランチャー。 |
| bash のみに依存するシンプルな CLI セッションランチャー。 |
||
|- |
|||
| [[uwsm]] |
|||
| TTY |
|||
| スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。 |
|||
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。 |
|||
|} |
|} |
||
== Xwayland == |
== Xwayland == |
||
{{man|1|Xwayland}} は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。 |
|||
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。 |
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。 |
||
| 125行目: | 152行目: | ||
{{Note| |
{{Note| |
||
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。 |
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。 |
||
* パフォーマンス: Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します |
* パフォーマンス: ほとんどのケースで Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。 |
||
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}} |
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}} |
||
=== Wayback === |
|||
[https://wayback.freedesktop.org/ Wayback] ({{AUR|wayback-x11}}、{{AUR|wayback-x11-git}}) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。 |
|||
=== NVIDIA ドライバ === |
=== NVIDIA ドライバ === |
||
| 134行目: | 165行目: | ||
なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。 |
なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。 |
||
=== |
=== Xwayland アプリケーションを検出する === |
||
{{pkg| |
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。 |
||
他の方法として、({{Pkg|xorg-xwininfo}} の) ''xwininfo'' をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。 |
|||
$ qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole |
|||
あるいは、''xlsclients'' ({{Pkg|xorg-xlsclients}} パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、{{ic|xlsclients -l}} を実行してください。 |
|||
=== Xwayland アプリケーションであることを視認する === |
|||
あるいは、{{AUR|extramaus}} を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。 |
|||
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。 |
|||
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。 |
|||
{{Tip|KDE Plasma の場合は、[[KDE#KWin デバッグコンソール]] でウィンドウを調査できます。}} |
|||
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。 |
|||
他の方法として、({{Pkg|xorg-xwininfo}} の) ''xwininfo'' をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。 |
|||
== GUI ライブラリ == |
== GUI ライブラリ == |
||
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] で詳細を確認してください。 |
|||
=== GTK === |
=== GTK === |
||
| 161行目: | 187行目: | ||
=== Qt === |
=== Qt === |
||
[[Qt]] 5 |
[[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}} をセットして下さい。 |
||
これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。 |
|||
一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの 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 のクライアントとして動作させることが可能です。このバックエンドは {{ |
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{AUR|clutter}} パッケージで有効になっています。 |
||
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。 |
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。 |
||
=== |
=== 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]. |
|||
{{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 で)。 |
|||
SDL2 アプリケーションを Wayland 上で動作させるには、{{ic|1=SDL_VIDEODRIVER=wayland}} を設定してください。 |
|||
詳細は[https://wiki.libsdl.org/SDL3/README/wayland 公式のドキュメント]を参照してください。 |
|||
{{ic|1=SDL_VIDEODRIVER="wayland,x11"}} とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます。[https://wiki.libsdl.org/SDL2/FAQUsingSDL] |
|||
=== 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}} パッケージ |
{{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 を使うように上書きすることができます: |
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 サポートは、コマンドラインフラグか環境変数で有効化できます。 |
|||
アプリケーションがどの electron バージョンを使用しているか確認する方法については [https://stackoverflow.com/q/50345957] を見てください。 |
|||
{{Note|KDE では、Wayland が有効化された一部の electron アプリケーションは依然として自身のアイコンをウィンドウのアイコンに表示できず、汎用の Wayland アイコンが表示されます (ただし、タスクバーのアイコンは正しく表示されます)。この問題は、デスクトップファイルの名前を強制する特殊なアプリケーション/ウィンドウルールを作成することで解決できます。}} |
|||
==== コマンドラインフラグ ==== |
==== コマンドラインフラグ ==== |
||
{{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.}} |
|||
コマンドラインフラグの設定は、例えば [[デスクトップエントリ#desktop ファイルの変更|.desktop ファイルを変更]]し、{{ic|1=Exec=}} 行の最後にフラグを追加することで可能です。 |
|||
Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは {{Pkg|xdg-desktop-portal}} をベースとしています。 |
|||
{{Note|{{AUR|visual-studio-code-bin}} のような ([https://github.com/microsoft/vscode/issues/134612 バグレポート]) 一部のアプリケーションは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}} |
|||
トップバーが表示されない場合は、{{ic|1=--enable-features=WaylandWindowDecorations}} で解決できます。これは、例として [[GNOME]] で必要となります ([https://github.com/electron/electron/pull/29618 electron17] からサポートされています)。 |
|||
==== 設定ファイル ==== |
|||
==== 環境変数 ==== |
|||
ファイル {{ic|${XDG_CONFIG_HOME}/electron25-flags.conf}} ({{ic|${XDG_CONFIG_HOME} }} が設定されていない場合、{{ic|1=~/.config/electron25-flags.conf}} がデフォルトです) を作成/編集し、先に説明したフラグを追加してください (1行につき1オプション、空の行は無し): |
|||
バージョン 28 から 37 の間の Electron を使用するアプリケーションは、[[環境変数]] {{ic|ELECTRON_OZONE_PLATFORM_HINT}} を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。 |
|||
{{hc|~/.config/electron25-flags.conf|2= |
|||
--enable-features=WaylandWindowDecorations |
|||
--ozone-platform-hint=auto |
|||
}} |
|||
コマンドラインのほうが、環境変数よりも優先されます。 |
|||
{{Note|このような設定ファイルは、公式リポジトリ内の Electron のパッケージと、それらの設定ファイルを使用するパッケージでのみ機能します。{{AUR|slack-desktop}} などのような Electron の独自のビルドをバンドルしているパッケージでは機能しません。{{AUR|slack-electron}} のように代替のパッケージが存在する場合があります。}} |
|||
==== 古い Electron バージョン ==== |
|||
{{ic|electron25-flags.conf}} は Electron バージョン 25 に対してだけ適用されます。それより古い Electron のバージョンは {{ic|electron<バージョン>-flags.conf}} ファイルで設定できます。 |
|||
古いバージョンでは、対応する Chromium バージョンによって異なるフラグが必要になる場合があります。例えば、以下のフラグは Electron 13 で機能します: |
|||
{{hc|~/.config/electron13-flags.conf|2= |
|||
--enable-features=UseOzonePlatform |
|||
--ozone-platform=wayland |
|||
}} |
|||
=== Java === |
=== Java === |
||
| 248行目: | 274行目: | ||
:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。 |
:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。 |
||
:{{ic|_JAVA_AWT_WM_NONREPARENTING}} [[環境変数]]を "1" に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。 |
:{{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] といった一部のプログラムはこれをサポートしています。 |
|||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
| 253行目: | 281行目: | ||
=== 自動化 === |
=== 自動化 === |
||
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - |
* [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] ライブラリも参照。 |
||
| 262行目: | 290行目: | ||
[[入力リマップユーティリティ]] を見てください。 |
[[入力リマップユーティリティ]] を見てください。 |
||
=== |
=== スクリーンキャスト === |
||
[[スクリーンキャプチャ#スクリーンキャスト]] と [[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。 |
|||
=== アプリが閉じた後もクリップボードの内容を保持する === |
|||
==トラブルシューティング== |
|||
Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。{{Pkg|wl-clip-persist}} を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。 |
|||
=== Wayland コンポジタを systemd サービスとして自動的に起動する === |
|||
{{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 のドキュメント]にあります。 |
|||
== トラブルシューティング == |
|||
=== 色補正 === |
=== 色補正 === |
||
| 278行目: | 340行目: | ||
=== リモートディスプレイ === |
=== リモートディスプレイ === |
||
* ([[sway]] で使用されている) {{ |
* ([[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 が有効化されています。 |
||
* {{ |
* {{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}} |
|||
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 === |
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 === |
||
| 313行目: | 378行目: | ||
サポートしているウィジェットツールキット: |
サポートしているウィジェットツールキット: |
||
* GTK (リリース 3.22.18 以降) |
* GTK (リリース 3.22.18 以降) |
||
=== GTK テーマが動かない === |
=== GTK テーマが動かない === |
||
| 326行目: | 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 の機能を破壊します。 |
|||
== 参照 == |
== 参照 == |
||
| 332行目: | 411行目: | ||
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ] |
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ] |
||
* [[Fedora:How to debug Wayland problems]] |
* [[Fedora:How to debug Wayland problems]] |
||
* [https:// |
* [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] |
||
* [[カーソルテーマ]] |
* [[カーソルテーマ]] |
||
| 340行目: | 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| |
{{TranslationStatus|Wayland|2026-02-17|865727}} |
||
2026年2月17日 (火) 08:54時点における最新版
Wayland は、ディスプレイサーバプロトコルです。X Window System の後継として広く確立されています[1] [2] [3] [4]。Wikipedia に Wayland と Xorg との比較があります。
Wayland プロトコルを使用するディスプレイサーバは、コンポジット型ウィンドウマネージャ としても機能するため、コンポジタ と呼ばれます。以下にWayland コンポジタのリストを示します。
ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、Xwayland を使うことができます。これは Wayland に X サーバを提供します。
要件
Wayland というのは単なるプロトコルです。Xorg とは違い、インストールすべき共通の「ディスプレイサーバ」は存在しません。Wayland を使用するために必要になるのは、互換性のあるディスプレイドライバ (この章) とコンポジタ (次の章)、あるいは Wayland プロトコルを実装しているデスクトップ環境 (例: GNOME、Plasma) のみです。ほとんどの Wayland コンポジタは、カーネルモード設定を使用しているシステム上でのみ動作します。
GPU ドライバと Wayland コンポジタは、同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: GBM と EGLStreams です。
| バッファ API | GPU ドライバーのサポート | Wayland コンポジタのサポート |
|---|---|---|
| GBM | NVIDIA < 495* 以外の全てのドライバー | 全て |
| EGLStreams | NVIDIA | GNOME |
- * Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします。[5]
NVIDIA が GBM のサポートを導入して以来、NVIDIA ≥ 495 で多くのコンポジタ (Mutter と KWin を含む) がデフォルトで GBM を使用し始めました。GBM は一般的にベターでより幅広いサポートがあると考えられています。EGLStreams がサポートされていた理由は、NVIDIA GPU をプロプライエタリドライバで Wayland 下で使用する代替の方法を NVIDIA が提供しなかったからだけです。さらに、GBM が NVIDIA に導入された後、KWin は EGLStreams のサポートを打ち切りました。
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: journalctl -b 0 --grep "renderer for"。GBM をバックエンドとして強制的に使用させるには、次の環境変数を設定してください:
GBM_BACKEND=nvidia-drm __GLX_VENDOR_LIBRARY_NAME=nvidia
コンポジタ
スタック型、タイル型、ダイナミック型 の違いについては、ウィンドウマネージャ#種類 を参照してください。
スタック型
- COSMIC コンポジタ — COSMIC デスクトップ環境のコンポジタ。
- hikari — FreeBSD で活発に開発されている cwm にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。
- KDE KWin — KDE#Plasma の起動 を参照。
- labwc — Openbox にインスパイアされた wlroots ベースのコンポジタ。
- Mutter — GNOME#GNOME の起動 を参照。
- waybox — Openbox をモデルとした最小主義の Wayland コンポジタ。
- wayfire — Compiz にインスパイアされた、wlroots ベースの 3D コンポジタ。
- https://wayfire.org/ || wayfireAUR
- Weston — 正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。
- wio — Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。
- wlmaker — Window Maker からインスパイアされた wlroots ベースのコンポジタ。
- woodland — Wayland 用の wlroots ベースの、最小かつ軽量のウィンドウスタッキングコンポジタ。Wayfire と TinyWl にインスパイアされています。
タイル型
- jay — Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。
- miracle-wm — Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。
- niri — スクロール可能なタイル型 Wayland コンポジタ。
- Qtile — Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。
- SwayFx — 魅力的な視覚効果機能を追加した Sway。
- Velox — swc ベースのシンプルなウィンドウマネージャです。dwm と xmonad の影響を受けています。
ダイナミック型
- Hyprland — 見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。
- japokwm — wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。
- pinnacle-comp — Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。
その他
- Cage — キオスクのような単一のフルスクリーンアプリケーションを表示します。
- GNOME Kiosk — Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。
- phoc — モバイル端末のための wlroots ベースの小さなコンポジタ。
- Wayback — Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。
上記のいくつかは ディスプレイマネージャ をサポートする場合があります。
それらがどのように開始されるかを /usr/share/wayland-sessions/compositor.desktop を見て確認してください。
ディスプレイマネージャ
Wayland コンポジタの実行をサポートしているディスプレイマネージャは以下の表の通りです。
| 名前 | 何で動作するか | 説明 |
|---|---|---|
| emptty | TTY | TTY で動作するシンプルな CLI ディスプレイマネージャ。 |
| GDM | Wayland | GNOME ディスプレイマネージャ。 |
| greetd | Wayland/Xorg/TTY
Greetd#Greeter を参照。 |
最小でありながら柔軟なログインデーモン。 |
| lemurs | TTY | Rust で書かれた TUI ディスプレイマネージャ。 |
| lidmAUR | TTY | C で書かれた、完全にカラフルでカスタマイズ可能な TUI ディスプレイマネージャ。 |
| LightDM | Xorg[6] | 様々なデスクトップに対応したディスプレイマネージャ。 |
| ly | TTY | Zig で書かれた TUI ディスプレイマネージャ。 |
| SDDM | Wayland/Xorg | QML ベースのディスプレイマネージャ。 |
| tbsmAUR | TTY | bash のみに依存するシンプルな CLI セッションランチャー。 |
| uwsm | TTY | スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。 |
Xwayland
Xwayland(1) は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな X11 アプリケーションに互換性を提供します。これを使用するには、xorg-xwayland パッケージをインストールします。
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。
- セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。
- パフォーマンス: ほとんどのケースで Xwayland は X11 とほぼ同等のパフォーマンスを発揮します。
- 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。
Wayback
Wayback (wayback-x11AUR、wayback-x11-gitAUR) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。
NVIDIA ドライバ
なお、DRM KMS を有効にする必要があります。また、お使いのディスプレイマネージャ(例: GDM)の公式ドキュメントに記載されている情報も見てください。
Xwayland アプリケーションを検出する
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、xorg-xeyes を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。
他の方法として、(xorg-xwininfo の) xwininfo をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。Ctrl+C を押すことで xwininfo を終了できます。
あるいは、xlsclients (xorg-xlsclients パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、xlsclients -l を実行してください。
あるいは、extramausAUR を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。
GUI ライブラリ
GTK
gtk3 と gtk4 パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、環境変数を設定することで Xwayland を使うように上書きできます: GDK_BACKEND=x11。
テーマの問題は GTK#Wayland バックエンド を見てください。
Qt
Qt 5 で Wayland のサポートを有効化するには、qt5-wayland パッケージをインストールしてください。これで、Qt 5 アプリケーションは Wayland セッション上では Wayland で動作するようになります。
必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[7] にあるように、-platform wayland を使用するか、環境変数 QT_QPA_PLATFORM=wayland をセットして下さい。
一方、Wayland セッション上で X11 を使用させるには、QT_QPA_PLATFORM=xcb と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
また、QT_QPA_PLATFORM="wayland;xcb" を使用すると、Qt が Wayland を利用できない場合に、代わりに xcb (X11)プラグインを使用させることができます。[8]
sway などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、KeepassXC はトレイに最小化できません。これは、アプリケーションを実行する前に qt5ct をインストールし、QT_QPA_PLATFORMTHEME=qt5ct を設定することで解決できます。
Qt WebEngine のバグ (Incorrect sizing and bad text rendering with WebEngine using fractional scaling on Wayland) のため、Qt WebEgine を使用するアプリケーション (例: Calibre) では荒いフォントが表示される場合があります。
回避策は、QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor 環境変数を設定してアプリケーションを起動することです。
これにより、アプリケーションのウィンドウが分数スケーリングされなくなります。
Clutter
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは clutterAUR パッケージで有効になっています。
Clutter アプリを Wayland 上で動作させるには、環境変数 CLUTTER_BACKEND=wayland を設定する必要があります。
SDL
SDL3 では、コンポジタが fifo-v1 プロトコルをサポートしている場合、デフォルトで Wayland が使用されます。[9] そうでない場合、順に X11 と Wayland が試行されます。環境変数 SDL_VIDEO_DRIVER=x11 あるいは SDL_VIDEO_DRIVER=wayland を使用することで、どちらか一方を強制することができます (あるいは、より優先度の低い、SDL2 用の環境変数もあります。下記を参照)。[10].
sdl2-compat は、アプリケーション固有の例外を除いて、上記の SDL3 と同じルールに従います。SDL2 自体に関しては (例: sdl2AUR)、SDL_VIDEODRIVER=wayland を設定してください。
SDL_VIDEODRIVER="wayland,x11" とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [11]。ウィンドウ装飾を有効化するために libdecor をインストールすると良いかもしれません (例えば、GNOME で)。
詳細は公式のドキュメントを参照してください。
GLFW
glfw パッケージには Wayland に対するサポートがあります。XDG_SESSION_TYPE が wayland に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。
詳細は GLFW のソースコードを参照してください。
GLEW
glew-wayland-gitAUR パッケージが GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で glew を使うことです。FS#62713 を参照してください。
EFL
Enlightenment には完全な Wayland サポートがあります.
EFL ベースのアプリケーションを Wayland 上で動作させるには、ELM_DISPLAY=wl を設定してください。
winit
Winit は Rust で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます:
- バージョン 0.29.2 より前の場合、
WINIT_UNIX_BACKEND=x11を設定してください。 - バージョン 0.29.2 以降の場合、
WAYLAND_DISPLAYを unset してください。そうすることで、強制的にDISPLAY変数を使用して X にフォールバックされます。[12]
Electron
Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。
コマンドラインフラグ
Wayland で動作させるために必要なコマンドラインフラグは Chromium#ネイティブ Wayland サポート を見てください。ただし、Electron 38 以降、コマンドラインフラグ --ozone-platform-hint=auto は機能しないことに注意してください。
これらのフラグを手動で渡すこともできますが、Electron の設定ファイルでフラグを永続化したり、~/.local/share/applications の .desktop ファイル内の Exec= 行にフラグを追加することでフラグを渡したりもできます。
Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは xdg-desktop-portal をベースとしています。
トップバーが表示されない場合は、--enable-features=WaylandWindowDecorations で解決できます。これは、例として GNOME で必要となります (electron17 からサポートされています)。
環境変数
バージョン 28 から 37 の間の Electron を使用するアプリケーションは、環境変数 ELECTRON_OZONE_PLATFORM_HINT を auto または wayland に設定することで、Wayland モードを使用することができます。
コマンドラインのほうが、環境変数よりも優先されます。
Java
Java プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。 OpenJDK に Wayland を実装することを目的としたプロジェクトである Wakefield が実用できるようになるまでは、Xwayland を代わりに使用できます。
Debian:Wayland#Java Programs (supported since OpenJDK 16?) を参照してください:
- OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この議論によると、これがサポートされているかもしれません。
_JAVA_AWT_WM_NONREPARENTING環境変数を "1" に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。
XWayland は機能的に Wayland と同等ではないので、Wakefield が実用的になるまでは、WLToolkit で機能の差を埋めることができます。これは -Dawt.toolkit.name=WLToolkit でアクティブ化できます。JetBrains IDE といった一部のプログラムはこれをサポートしています。
ヒントとテクニック
自動化
- ydotool (ydotool) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。
ydotool.serviceユーザーユニットを起動/有効化してください。ydotoold(8)、ydotool(1) を参照。 - wtype (wtype) - Wayland 用 xdotool type。wtype(1) を参照。
- keyboard - Windows と Linux で動作する Python ライブラリ。実験的な OS X サポートあり。mouse ライブラリも参照。
- wlrctl (wlrctlAUR) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。
キーボードやマウスキーのリマップ
入力リマップユーティリティ を見てください。
スクリーンキャスト
スクリーンキャプチャ#スクリーンキャスト と スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする を見てください。
アプリが閉じた後もクリップボードの内容を保持する
Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。wl-clip-persist を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。
Wayland コンポジタを systemd サービスとして自動的に起動する
ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタをsystemd サービスを使って自動的に起動できます。ExecStart 行を使いたいコンポジタに変えて下さい。以下は KDE Plasma の例です:
/etc/systemd/system/wayland-compositor.service
[Unit] After=graphical.target systemd-user-sessions.service modprobe@drm.service Conflicts=getty@tty1.service [Service] User=username WorkingDirectory=~ PAMName=login TTYPath=/dev/tty1 UnsetEnvironment=TERM StandardOutput=journal ExecStart=/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland [Install] WantedBy=graphical.target
wlroots ベースのコンポジタで他のレンダラーを使用する
wlroots ベースのコンポジタに対して WLR_RENDERER 環境変数を設定することで vulkan などといった他の wlroots レンダラーを使用することができます。利用可能なレンダラーのリストは wlroots のドキュメントにあります。
トラブルシューティング
色補正
バックライト#色補正を参照。
動作が遅い、表示がおかしい、クラッシュする
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に CLUTTER_PAINT=disable-clipped-redraws:disable-culling が設定されている可能性があります。/etc/environment や rc ファイルから該当箇所を削除してみてください。
リモートディスプレイ
- (sway で使用されている) wlroots0.18 と wlroots0.19 は、バージョン 0.10 より、wayvnc による VNC バックエンドを提供しています。RDP バックエンドは削除されました [13]。
- mutter はコンパイル時にリモートデスクトップが有効化されています。詳細は [14] と gnome-remote-desktop を見てください。
- krfb は kwin に VNC サーバを提供します。
krfb-virtualmonitorを使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。 - 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。weston パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。
- waypipe は Wayland アプリケーションの透過プロキシです。SSH 上で動作するラッパーコマンドあり。
- 以下は、Plasma デスクトップでリモートの KDE kcalc を起動する例です:
$ waypipe ssh example.local env QT_QPA_PLATFORM=wayland QT_QPA_PLATFORMTHEME=KDE dbus-launch kcalc
ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません (例: キーボード、マウス)。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
- ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
- マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
Wayland と Xwayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。Xorg アプリケーションの場合、Xwayland のサポートで十分であるため、アプリケーションやウィジェット・ツールキットに変更を加える必要はありません。
これらの拡張はすでに wayland-protocols に含まれており、xorg-xwayland によってサポートされています。
関連する拡張:
- Xwayland keyboard grabbing protocol
- Compositor shortcuts inhibit protocol
- Relative pointer protocol
- Pointer constraints protocol
サポートしている Wayland コンポジタ:
- Mutter, GNOME のコンポジタ (リリース 3.28 以降)。
- wlroots (Relative pointer protocols と Pointer constraints protocol に対応)
- Kwin
サポートしているウィジェットツールキット:
- GTK (リリース 3.22.18 以降)
GTK テーマが動かない
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。
NVIDIA モジュールを読み込まないようにする
sway などの Wayland コンポジターを起動する前に __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json を 環境変数 として追加します。
拡大/サーフェススケーリング
スクリーンの拡大は、まだ解決していません。wp-surface-scale プロトコルを提供するプルリクエストが2022年半ばにマージされました。
カーネル 6.11.2 以降、Wayland にラグ/スタッタリングが発生する (AMD)
将来のカーネルリリースでこの問題が修正されるまで、回避策は、カーネルのコマンドラインに amdgpu.dcdebugmask=0x400 を追加することです。
こちらを参照: https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422
仮想デスクトップの切り替え時にゲームやアプリケーションが止まる
ワークスペースを変更した時や、Alt+Tab を押した時に、ゲーム (あるいは他のグラフィカルアプリケーション) が止まる、変な状態になる、部分的に停止します。これには、VRR アプリケーションや VSync がオンのアプリケーションが含まれますが、それらに限りません。症状としては、ゲームのウィンドウがフォーカスされていないときにのみ、音声が部分的に途切れる、ゲームが進まなくなる、ping が高くなる、ネットワークが途切れるなどがあります。これは、VSync がオンのアプリケーションにのみ影響します。
It is possible some games can work around this issue by changing to a window, but some do not. This is extremely annoying in more complex games which require heavy usage of web browsing, documentation and 3rd party tools or if the gameplay is interrupted for some reason.
回避策としては、環境変数 MESA_VK_WSI_PRESENT_MODE=immediate と vk_xwayland_wait_ready=false の片方/両方を設定することです。しかし、これらの変数は VSync あるいは VRR の機能を破壊します。
参照
- Wayland オンラインドキュメント
- 公式リポジトリ
- Fedora:How to debug Wayland problems
- We are Wayland now! - "Are we Wayland yet?" の更新されたバージョン
- Awesome Wayland projects
- カーソルテーマ
- Arch Linux forum discussion
- i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives
- Wayland Explorer - A better way to read Wayland documentation
- How can I tell if an application is using XWayland