「Wayland」の版間の差分
(ページの作成:「Category:X サーバー es:Wayland en:Wayland fr:Wayland ru:Wayland zh-CN:Wayland {{Related articles start (日本語)}} {{Related2|Kernel Mode Se...」) |
(→トラブルシューティング: 翻訳を修正) |
||
(5人の利用者による、間の32版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:グラフィカルユーザーインターフェイス]] |
[[es:Wayland]] |
[[es:Wayland]] |
||
[[en:Wayland]] |
[[en:Wayland]] |
||
[[fr:Wayland]] |
[[fr:Wayland]] |
||
+ | [[pt:Wayland]] |
||
[[ru:Wayland]] |
[[ru:Wayland]] |
||
− | [[zh- |
+ | [[zh-hans:Wayland]] |
− | {{Related articles start |
+ | {{Related articles start}} |
− | {{ |
+ | {{Related|Kernel Mode Setting}} |
{{Related|Xorg}} |
{{Related|Xorg}} |
||
− | {{Related| |
+ | {{Related|スクリーンショットの取得}} |
− | {{Related|カーソルテーマ}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | '''Wayland''' は Linux の新しいウィンドウプロトコルです。Wayland |
+ | '''Wayland''' は Linux の新しいウィンドウプロトコルです。[[GNOME]] や [[KDE]] などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして [https://wayland.freedesktop.org/xserver.html XWayland] があります。 |
− | |||
− | {{Warning|Wayland は開発途上です。サポートはありませんし、あなたの期待通りに動作するとは限りません。}} |
||
== 要件 == |
== 要件 == |
||
− | + | ほとんどの Wayland コンポジタは [[KMS]] を利用しているシステムで動作します。 |
|
+ | また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。 |
||
− | == インストール == |
||
− | ほとんどの場合 {{pkg|gtk2}} や {{pkg|gtk3}} の依存パッケージとして既に間接的に Wayland がインストールされているはずです。インストールされていない場合、[[公式リポジトリ]]から {{pkg|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] です。 |
||
− | == 使用方法 == |
||
− | Wayland はただのライブラリなので、それだけでは使い物になりません。利用するには、(Weston などの) コンポジタ、Weston デモアプリケーション、Wayland プラグインの入った Qt5、Wayland をサポートした GTK+ などが必要です。 |
||
+ | {| class="wikitable" |
||
− | == Weston == |
||
+ | |- |
||
− | === インストール === |
||
+ | ! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート |
||
− | 公式リポジトリから {{pkg|weston}} をインストールする必要があります。 |
||
+ | |- |
||
+ | | GBM || [[NVIDIA]] 以外の全てのドライバー || 全てのコンポジタ |
||
+ | |- |
||
+ | | EGLStreams || [[NVIDIA]] || [[GNOME]], [[KDE]] ([https://www.phoronix.com/scan.php?page=news_item&px=EGLStreams-Merged-KWin-5.16 Plasma 5.16+]) |
||
+ | |- |
||
+ | |} |
||
− | + | == GUI ライブラリ == |
|
+ | [https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください。 |
||
− | Weston をインストールしたのなら Wayland をテストする環境が整っているはずです。 |
||
+ | === GTK+ 3 === |
||
− | 起動中の X セッションの中で Weston を実行することができます: |
||
− | $ weston |
||
+ | 公式リポジトリの {{pkg|gtk3}} パッケージは Wayland バックエンドが有効になっています。 |
||
− | もしくは、Weston をネイティブで起動するには、端末を切り替えて次を実行して見て下さい: |
||
− | $ weston-launch |
||
+ | Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、{{ic|GDK_BACKEND=x11}} 環境変数を設定することで Xwayland を使うように上書きできます。 |
||
− | Weston の TTY からデモを実行できます。ターミナルエミュレータを起動するには: |
||
− | $ weston-terminal |
||
+ | {{Note|GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになり、Qt の lighthouse と同じ方法でバックエンドを切り替えることができるようになりました。}} |
||
− | 画面に花を散らすには: |
||
− | $ weston-flower |
||
+ | === Qt5 === |
||
− | フレームプロトコルをテストするには ({{ic|glxgears}} を実行): |
||
− | $ weston-gears |
||
+ | {{Grp|qt5}} パッケージは Wayland をサポートしています。{{Pkg|qt5-wayland}} をインストールしてください。 |
||
− | 画像を表示するには: |
||
− | $ weston-image image1.jpg image2.jpg... |
||
+ | 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}} とセットします。 |
||
− | PDF ファイルを表示するには: |
||
+ | これは、{{AUR|zoom}} など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。 |
||
− | $ weston-view doc1.pdf doc2.pdf... |
||
+ | [[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 [https://keepassxc.org KeepassXC] はトレイに最小化できません。 これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、 {{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。 |
||
− | === 設定 === |
||
+ | ===Clutter=== |
||
− | キーボードレイアウト・モジュール・UI の設定ファイルの例です。詳しくは {{ic|man weston.ini}} を見て下さい。 |
||
− | {{hc|~/.config/weston.ini| |
||
− | <nowiki>[core] |
||
− | ### uncomment this line for xwayland support ### |
||
− | #modules=desktop-shell.so,xwayland.so |
||
+ | Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。 |
||
− | [shell] |
||
− | background-image=/usr/share/backgrounds/gnome/Aqua.jpg |
||
− | background-color=0xff002244 |
||
− | panel-color=0x90ff0000 |
||
− | locking=true |
||
− | animation=zoom |
||
− | #binding-modifier=ctrl |
||
− | #num-workspaces=6 |
||
− | ### for cursor themes install xcursor-themes pkg from Extra. ### |
||
− | #cursor-theme=whiteglass |
||
− | #cursor-size=24 |
||
+ | Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND=wayland}} を設定する必要があります。 |
||
− | ### tablet options ### |
||
− | #lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png |
||
− | #lockscreen=/usr/share/backgrounds/gnome/Garden.jpg |
||
− | #homescreen=/usr/share/backgrounds/gnome/Blinds.jpg |
||
− | #animation=fade |
||
+ | ===SDL=== |
||
− | [keyboard] |
||
− | keymap_rules=evdev |
||
− | #keymap_layout=gb |
||
− | #keymap_options=caps:ctrl_modifier,shift:both_capslock_cancel |
||
− | ### keymap_options from /usr/share/X11/xkb/rules/base.lst ### |
||
+ | SDL アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER=wayland}} を設定する必要があります。一方、XWayland を使うようにするには、{{ic|1=SDL_VIDEODRIVER=x11}} を指定します。 |
||
− | [terminal] |
||
− | #font=DroidSansMono |
||
− | #font-size=14 |
||
+ | {{Note|Wayland 未対応の古い SDL が内部に含まれたゲームでは、{{ic|1=SDL_VIDEODRIVER=wayland}} を指定すると動作が壊れる場合があります。}} |
||
− | [launcher] |
||
− | icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
||
− | path=/usr/bin/gnome-terminal |
||
+ | === GLFW === |
||
− | [launcher] |
||
− | icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
||
− | path=/usr/bin/weston-terminal |
||
+ | GLFW で Wayland バックエンドを使用するには、({{Pkg|glfw-x11}} の代わりに) {{Pkg|glfw-wayland}} パッケージをインストールしてください。 |
||
− | [launcher] |
||
− | icon=/usr/share/icons/hicolor/24x24/apps/firefox.png |
||
− | path=/usr/bin/firefox |
||
+ | === GLEW === |
||
− | [launcher] |
||
− | icon=/usr/share/icons/gnome/24x24/apps/arts.png |
||
− | path=./clients/flower |
||
+ | GLEW で Wayland バックエンドを使用するには、({{Pkg|glew}} の代わりに) {{Pkg|glew-wayland}} パッケージをインストールしてください。 |
||
− | [screensaver] |
||
− | # Uncomment path to disable screensaver |
||
− | path=/usr/libexec/weston-screensaver |
||
− | duration=600 |
||
+ | ===EFL=== |
||
− | [input-method] |
||
− | path=/usr/libexec/weston-keyboard |
||
+ | EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。 |
||
− | ### for Laptop displays ### |
||
− | #[output] |
||
− | #name=LVDS1 |
||
− | #mode=1680x1050 |
||
− | #transform=90 |
||
+ | === winit === |
||
− | #[output] |
||
− | #name=VGA1 |
||
− | # The following sets the mode with a modeline, you can get modelines for your preffered resolutions using the cvt utility |
||
− | #mode=173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync |
||
− | #transform=flipped |
||
+ | [https://github.com/rust-windowing/winit Winit] は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。{{ic|XINIT_UNIX_BACKEND}} 環境変数の値を {{ic|x11}} や {{ic|wayland}} としてください。 |
||
− | #[output] |
||
− | #name=X1 |
||
− | #mode=1024x768 |
||
− | #transform=flipped-270</nowiki> |
||
− | }} |
||
+ | == ディスプレイマネージャ == |
||
− | 最小設定の {{ic|weston.ini}}: |
||
− | {{hc|~/.config/weston.ini| |
||
− | <nowiki>[core] |
||
− | modules=desktop-shell.so,xwayland.so |
||
+ | Wayland コンポジタの実行をサポートした[[ディスプレイマネージャ]]は以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。 |
||
− | [keyboard] |
||
− | keymap_layout=gb |
||
+ | {| class="wikitable sortable" |
||
− | [launcher] |
||
+ | ! 名前 |
||
− | icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
||
+ | ! 種類 |
||
− | path=/usr/bin/weston-terminal |
||
+ | ! 説明 |
||
+ | |- |
||
+ | | [[GDM]] |
||
+ | | Wayland/X11 上で動作 |
||
+ | | [[GNOME]] ディスプレイマネージャ。 |
||
+ | |- |
||
+ | | {{AUR|greetd}} |
||
+ | | ログインデーモン |
||
+ | | 最小でありながら柔軟なログインデーモン。 |
||
+ | |- |
||
+ | | [[LightDM]] |
||
+ | | Wayland/X11 上で動作 [https://github.com/CanonicalLtd/lightdm/commit/f4f681f7b4209a634b021ba731addec1e081e5c7] |
||
+ | | 様々なデスクトップに対応したディスプレイマネージャ。 |
||
+ | |- |
||
+ | | {{AUR|Ly}} |
||
+ | | コンソール上で動作 |
||
+ | | TUI ディスプレイマネージャ。 |
||
+ | |- |
||
+ | | [[SDDM]] |
||
+ | | X11 上で動作 [https://github.com/sddm/sddm/pull/616] |
||
+ | | QML ベースのディスプレイマネージャ。 |
||
+ | |- |
||
+ | | {{AUR|tbsm}} |
||
+ | | コンソール上で動作 |
||
+ | | bash のみに依存するシンプルな CLI セッションランチャー。 |
||
+ | |} |
||
+ | ==ウィンドウマネージャとデスクトップシェル== |
||
− | [launcher] |
||
− | icon=/usr/share/icons/hicolor/24x24/apps/firefox.png |
||
− | path=/usr/bin/firefox |
||
+ | ===GNOME=== |
||
− | [output] |
||
− | name=LVDS1 |
||
− | mode=1680x1050 |
||
− | transform=90</nowiki> |
||
− | }} |
||
+ | {{Warning|Gnome Wayland セッションは {{Pkg|xorg-xwayland}} をインストールしていないと起動しません。}} |
||
− | ==== XWayland ==== |
||
+ | バージョン 3.14 から、[[GNOME]] は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。 |
||
− | [[公式リポジトリ]]から {{Pkg|xorg-server-xwayland}} をインストールしてください。 |
||
+ | Gnome Wayland セッションを起動するには、GDM ログインマネージャを使用する必要があります。ログインする前に "Gnome on Wayland" セッションを選択してください。 |
||
− | Weston の中で X アプリケーションを動かすには、Xwayland を使ってリクエストを処理します。 |
||
+ | ===Enlightenment=== |
||
− | {{Note|Weston 1.4 以前では新しい Xwayland をサポートしていません。また、GNOME 3.12 もまだ対応していません。}} |
||
+ | E19 から Wayland に対応していましたが、現在は削除されており、E20 以上が通常の利用に耐えうるほど Wayland で安定動作するとされています。詳しくは [https://www.enlightenment.org/about-wayland] を参照。 |
||
− | Wayland の中でネイティブの X アプリケーションを動かしたい場合、以下の設定ファイルを作成・修正してください: |
||
− | {{hc|~/.config/weston.ini| |
||
− | <nowiki>[core] |
||
− | modules=xwayland.so,desktop-shell.so</nowiki> |
||
− | }} |
||
− | これで X アプリケーションを weston で動作させることができます。 |
||
+ | ===KDE=== |
||
− | wayland で GNOME 3.12 を動かしたい場合は、多少のハックが必要です。[http://www.reddit.com/r/LinuxActionShow/comments/254hwo/howto_run_gnome_312_on_wayland_on_arch/ このガイド] を参照してください。 |
||
+ | [[KDE#Wayland]] を見てください。 |
||
− | == GUI ライブラリ == |
||
− | ([http://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] も参照してください) |
||
− | === |
+ | === Loliwm === |
+ | [https://github.com/Cloudef/loliwm loliwm] は Wayland 用のタイル型ウィンドウマネージャです。 |
||
− | 公式リポジトリから {{pkg|gtk3}} をインストールしてください、Wayland のバックエンドが有効になっています。 |
||
+ | === sway === |
||
− | GTK+ 3.0 から、GTK+ は実行時に複数のバックエンドをサポートできるようになり、Qt の lighthouse と同じ方法でバックエンドを切り替えることができるようになりました。 |
||
+ | [[Sway]] は Wayland 用の i3 互換のウィンドウマネージャです。 |
||
− | Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで X11 バックエンドを使いますが、{{ic|GDK_BACKEND=wayland}} 環境変数を設定することでこれを上書きできます。 |
||
− | === |
+ | === Velox === |
+ | [[Velox]] は swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。 |
||
− | <strike>{{Pkg|qt5-base}} を ''-opengl es2'' でリビルドする</strike>か (現在は使えません、http://lists.qt-project.org/pipermail/development/2013-December/014789.html を参照) もしくは {{AUR|qt5-base-git}} を使う必要があります。それから wayland のプラグイン {{AUR|qt5-wayland-git}} をビルドしてください。 |
||
+ | === Orbital === |
||
− | Wayland プラグインを使って Qt5 アプリケーションを動作させるには環境変数 {{ic|1=QT_QPA_PLATFORM=wayland-egl}} をセットして下さい。 |
||
+ | [https://github.com/giucam/orbital Orbital] は Qt5 と Weston を使用する Wayland コンポジタ・シェルです。このプロジェクトではシンプルでありながら柔軟性のある見た目の良い Wayland デスクトップを作成することを目標としています。Orbital は完全装備の DE ではなく、どちらかと言えば [[Awesome]] や [[Fluxbox]] のような X11 におけるウィンドウマネージャに似ています。 |
||
− | ===Clutter=== |
||
+ | === Liri Shell === |
||
− | Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは extra に入っている公式パッケージで有効になっています。 |
||
+ | [https://github.com/lirios/shell Liri Shell] は [[Liri]] のデスクトップシェルであり、Wayland のコンポジタとして QtQuick と QtCompositor を使用して作られています。 |
||
− | Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|CLUTTER_BACKEND=wayland}} を設定する必要があります。 |
||
− | === |
+ | === Maynard === |
+ | [https://github.com/raspberrypi/maynard Maynard] は GTK ベースの Weston 用デスクトップシェルクライアントです。Tiago Vignatti によるプロジェクト、weston-gtk-shell に基づいています。 |
||
− | SDL 2.0.2 から実験的に wayland がサポートされており、Arch Linux ではデフォルトで有効になっています。 |
||
+ | === Motorcar === |
||
− | SDL アプリケーションを Wayland 上で動作させるには、環境変数 {{ic|SDL_VIDEODRIVER=wayland}} を設定する必要があります。 |
||
+ | [https://github.com/evil0sheep/motorcar Motorcar] は 3D ウィンドウを探検できる wayland コンポジタです。 |
||
− | === glfw === |
||
+ | === Way Cooler === |
||
− | バージョン 3.1 から wayland をサポートする予定です。コンパイルフラグで有効にします。それまでは AUR からパッケージ {{AUR|glfw3-git}} をインストールして cmake のフラグに {{ic|-DGLFW_USE_WAYLAND=ON}} を追加してください。 |
||
+ | {{AUR|way-cooler}} は Rust で書かれた (Lua の設定ファイルによる) 豊富な設定を持つ Wayland コンポジタです。i3 と awesome の影響を受けています。 |
||
− | === |
+ | === Maze Compositor === |
+ | [https://github.com/capisce/mazecompositor Maze Compositor] は 3D の Qt ベースの Wayland コンポジタです。 |
||
− | EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [http://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。 |
||
+ | === Grefsen === |
||
− | ==ウィンドウマネージャとデスクトップシェル== |
||
+ | [https://github.com/ec1oud/grefsen Grefsen] はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。 |
||
− | ===KDE=== |
||
+ | == XWayland == |
||
− | KDE 4.11 beta から [http://blog.martin-graesslin.com/blog/2013/06/starting-a-full-kde-plasma-session-in-wayland/ Wayland システムコンポジタの下で KWin を動かせるように] なっています。今の所 KWin をセッションコンポジタとして使うためのサポートはありません。 |
||
+ | [https://wayland.freedesktop.org/xserver.html XWayland] は、Wayland の下で実行される X サーバーです。 レガシー [[X11]] アプリケーションに下位互換性を提供します。 |
||
− | ===GNOME=== |
||
− | + | これを使用するには、{{Pkg|xorg-xwayland}} パッケージを [[インストール]] します。 |
|
− | また、新しい Xwayland DDX を使用する mutter-wayland スナップショットをインストールしてください。以下の2つのファイルを使って makepkg でパッケージをリビルドできます。 |
||
− | |||
− | [https://gist.github.com/blackout24/9e1e255962a007ae6482 PKGBUILD] |
||
− | |||
− | [https://gist.github.com/blackout24/84eca898dd3c2e9360e2 mutter-wayland.install] |
||
+ | XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。 |
||
− | オープンソースドライバーならどれを使っていても、GDM から特別セッションとして "Gnome on Wayland" を起動できます。 |
||
+ | {{Note| |
||
− | === i3 === |
||
+ | *セキュリティについて: XWaylandはX サーバーであるため、 Wayland のセキュリティ機能はありません。 |
||
+ | *現時点では、 Nvidia 独自のドライバーは XWayland の GPU アクセラレーションをサポートしていません。 [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6429this] または [https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/587this] の pull request を参照してください。 |
||
+ | }} |
||
+ | ==トラブルシューティング== |
||
− | i3 の開発者によって Weston 用に i3 と同じ機能・スタイルを実装するシェルプラグインを作成する[http://www.i3way.org/ 全く新しいプロジェクトが始められています] 。 |
||
+ | === root でグラフィカルアプリケーションを実行 === |
||
− | ===Hawaii=== |
||
− | [[Hawaii (日本語)|Hawaii]] の記事を見て下さい。 |
||
+ | [[Root で X アプリケーションを起動#Wayland]] を見てください。 |
||
− | === Pure Wayland === |
||
+ | === LLVM assertion failure === |
||
− | {{Warning|Arch Linux で純粋な (X11 を使わない) Wayland システムをインストールする手順です。ソースからコンパイルして {{ic|/usr/local}} にインストールします。あなたのシステムを破壊するかもしれませんので注意してください。}} |
||
+ | LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで {{Pkg|mesa}} をリビルドする必要があります。 |
||
+ | これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい: |
||
− | まず初めに、基本的な Arch Linux のインストールを行い、base と base-devel をインストールして下さい。xorg やそのライブラリはインストールしないで下さい。 |
||
+ | $ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so |
||
− | ==== Wayland, DRM, Pixman, libxkbcommon ==== |
||
+ | === Electron ベースのアプリケーションでは、ディスプレイ::0を開けません === |
||
− | $ pacman -S wayland libdrm pixman libxkbcommon |
||
+ | GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。 |
||
− | ==== Mesa ==== |
||
+ | === 動作が遅い、表示がおかしい、クラッシュする === |
||
− | $ sudo pacman -S python2 libxml2 llvm |
||
+ | Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} などの rc ファイルから該当箇所を削除してみてください。 |
||
− | $ git clone <nowiki>git://anongit.freedesktop.org/mesa/mesa</nowiki> |
||
− | $ cd mesa |
||
− | $ CFLAGS=-DMESA_EGL_NO_X11_HEADERS ./autogen.sh --prefix=/usr/local --enable-gles2 --disable-gallium-egl --with-egl-platforms=wayland,drm --enable-gbm --enable-shared-glapi --with-gallium-drivers=r300,r600,swrast,nouveau --disable-glx --disable-xlib |
||
− | $ make |
||
− | $ sudo make install |
||
+ | === リモートディスプレイ === |
||
− | ==== cairo ==== |
||
+ | いくつか選択肢が考えられます: |
||
− | {{Note|glx/gl や xcb ではなく、EGL だけです。}} |
||
+ | * [[Sway]] など {{Pkg|wlroots}} ベースのコンポジタでは {{AUR|wayvnc}} VNC サーバーが利用できます。 |
||
+ | * [[Weston]] には RDP バックエンドが含まれています。{{man|7|weston-rdp}} を参照してください。 |
||
+ | * {{Pkg|mutter}} ベースの場合は {{Pkg|gnome-remote-desktop}} が使えます。[https://wiki.gnome.org/Projects/Mutter/RemoteDesktop 公式サイト] を参照してください。 |
||
+ | * {{AUR|waypipe}} や {{AUR|waypipe-git}} は Wayland アプリケーションの透過プロキシです。[[SSH]] を組み合わせることで外部から操作できます。詳細は[https://gitlab.freedesktop.org/mstoeckl/waypipe 公式サイト]を参照してください。 |
||
+ | === ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力 === |
||
− | $ pacman -S libpng |
||
− | $ git clone <nowiki>git://anongit.freedesktop.org/cairo</nowiki> |
||
− | $ cd cairo |
||
− | $ CFLAGS=-DMESA_EGL_NO_X11_HEADERS ./autogen.sh --prefix=/usr/local/ --disable-xcb --enable-glesv2 |
||
− | $ make |
||
− | $ sudo make install |
||
+ | Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。 |
||
− | ==== weston ==== |
||
− | $ sudo pacman -S gegl mtdev |
||
− | ''(libgl にはオプションから mesa-gl を選択して下さい)'' |
||
− | $ git clone <nowiki>git://anongit.freedesktop.org/wayland/weston</nowiki> |
||
− | $ cd weston/ |
||
− | $ CFLAGS="-DMESA_EGL_NO_X11_HEADERS" ./autogen.sh --prefix=/usr/local/ --with-cairo-glesv2 --disable-xwayland --disable-x11-compositor --disable-xwayland-test |
||
− | $ make |
||
− | $ sudo make install |
||
+ | 入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します: |
||
− | ==トラブルシューティング== |
||
+ | * ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。 |
||
+ | * マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。 |
||
+ | Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。 |
||
− | === LLVM assertion failure === |
||
− | LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで {{Pkg|mesa}} をリビルドする必要があります。 |
||
+ | 関連する拡張: |
||
− | これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい: |
||
+ | * [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml XWayland keyboard grabbing protocol] (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [https://lists.x.org/archives/xorg-devel/2017-August/054231.html]) |
||
+ | * [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol] |
||
+ | * [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol] |
||
+ | * [https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol] |
||
+ | サポートしている Wayland コンポジタ: |
||
− | $ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so |
||
+ | * Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以上)。 |
||
+ | * {{Pkg|wlroots}} (Relative pointer protocols と Pointer constraints protocol に対応) |
||
+ | |||
+ | サポートしているウィジェットツールキット: |
||
+ | * GTK (リリース 3.22.18 以上)。 |
||
==参照== |
==参照== |
||
+ | * [https://fedoraproject.org/wiki/How_to_debug_Wayland_problems Fedora Wiki の Wayland のデバッグに関する記事] |
||
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion] |
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion] |
||
− | * [ |
+ | * [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント] |
− | * [http://www.chaosreigns.com/wiki/Wayland_State Wayland usability wiki] |
2021年2月17日 (水) 00:02時点における版
Wayland は Linux の新しいウィンドウプロトコルです。GNOME や KDE などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして XWayland があります。
要件
ほとんどの Wayland コンポジタは KMS を利用しているシステムで動作します。
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、(Weston や Sway などの) コンポジタあるいは (GNOME や KDE など) デスクトップ環境が必要です。
GPU ドライバーと Wayland コンポジタは同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: GBM と EGLStreams です。
バッファ API | GPU ドライバーのサポート | Wayland コンポジタのサポート |
---|---|---|
GBM | NVIDIA 以外の全てのドライバー | 全てのコンポジタ |
EGLStreams | NVIDIA | GNOME, KDE (Plasma 5.16+) |
GUI ライブラリ
公式ウェブサイト も参照してください。
GTK+ 3
公式リポジトリの gtk3 パッケージは Wayland バックエンドが有効になっています。
Wayland と X 両方のバックエンドが有効になっているとき、GTK+ ではデフォルトで Wayland バックエンドを使いますが、GDK_BACKEND=x11
環境変数を設定することで Xwayland を使うように上書きできます。
Qt5
qt5 パッケージは Wayland をサポートしています。qt5-wayland をインストールしてください。
Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[1] にあるように、-platform wayland
を使用するか、環境変数 QT_QPA_PLATFORM=wayland-egl
をセットして下さい。一方、Wayland セッション上で X11 を使用させるには、QT_QPA_PLATFORM=xcb
とセットします。
これは、zoomAUR など、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。
sway などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。 たとえば、 KeepassXC はトレイに最小化できません。 これは、アプリケーションを実行する前に qt5ct をインストールし、 QT_QPA_PLATFORMTHEME=qt5ct
を設定することで解決できます。
Clutter
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは clutter パッケージで有効になっています。
Clutter アプリを Wayland 上で動作させるには、環境変数 CLUTTER_BACKEND=wayland
を設定する必要があります。
SDL
SDL アプリケーションを Wayland 上で動作させるには、環境変数 SDL_VIDEODRIVER=wayland
を設定する必要があります。一方、XWayland を使うようにするには、SDL_VIDEODRIVER=x11
を指定します。
GLFW
GLFW で Wayland バックエンドを使用するには、(glfw-x11 の代わりに) glfw-wayland パッケージをインストールしてください。
GLEW
GLEW で Wayland バックエンドを使用するには、(glew の代わりに) glew-wayland パッケージをインストールしてください。
EFL
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の プロジェクトページ を見て下さい。
winit
Winit は Rust で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、明示的に設定することもできます。XINIT_UNIX_BACKEND
環境変数の値を x11
や wayland
としてください。
ディスプレイマネージャ
Wayland コンポジタの実行をサポートしたディスプレイマネージャは以下の表の通りです。種類の列にはディスプレイマネージャが Wayland 上での実行をサポートしているかどうかが示されています。
名前 | 種類 | 説明 |
---|---|---|
GDM | Wayland/X11 上で動作 | GNOME ディスプレイマネージャ。 |
greetdAUR | ログインデーモン | 最小でありながら柔軟なログインデーモン。 |
LightDM | Wayland/X11 上で動作 [2] | 様々なデスクトップに対応したディスプレイマネージャ。 |
LyAUR | コンソール上で動作 | TUI ディスプレイマネージャ。 |
SDDM | X11 上で動作 [3] | QML ベースのディスプレイマネージャ。 |
tbsmAUR | コンソール上で動作 | bash のみに依存するシンプルな CLI セッションランチャー。 |
ウィンドウマネージャとデスクトップシェル
GNOME
バージョン 3.14 から、GNOME は Wayland を使ってデスクトップを動作させることができるようになりました。Gnome コンポジタは X を使用しなくても動かすことができ、Wayland のシステムコンポジタとして動作します。本番環境で使えるほど安定しているとされていますが、まだサポートされていない機能もいくつか存在します (Gnome のドキュメントを参照)。Gnome デスクトップでは、X を使用するアプリケーションは XWayland で動作します。
Gnome Wayland セッションを起動するには、GDM ログインマネージャを使用する必要があります。ログインする前に "Gnome on Wayland" セッションを選択してください。
Enlightenment
E19 から Wayland に対応していましたが、現在は削除されており、E20 以上が通常の利用に耐えうるほど Wayland で安定動作するとされています。詳しくは [4] を参照。
KDE
KDE#Wayland を見てください。
Loliwm
loliwm は Wayland 用のタイル型ウィンドウマネージャです。
sway
Sway は Wayland 用の i3 互換のウィンドウマネージャです。
Velox
Velox は swc ベースのシンプルなウィンドウマネージャです。dwm と xmonad の影響を受けています。
Orbital
Orbital は Qt5 と Weston を使用する Wayland コンポジタ・シェルです。このプロジェクトではシンプルでありながら柔軟性のある見た目の良い Wayland デスクトップを作成することを目標としています。Orbital は完全装備の DE ではなく、どちらかと言えば Awesome や Fluxbox のような X11 におけるウィンドウマネージャに似ています。
Liri Shell
Liri Shell は Liri のデスクトップシェルであり、Wayland のコンポジタとして QtQuick と QtCompositor を使用して作られています。
Maynard
Maynard は GTK ベースの Weston 用デスクトップシェルクライアントです。Tiago Vignatti によるプロジェクト、weston-gtk-shell に基づいています。
Motorcar
Motorcar は 3D ウィンドウを探検できる wayland コンポジタです。
Way Cooler
way-coolerAUR は Rust で書かれた (Lua の設定ファイルによる) 豊富な設定を持つ Wayland コンポジタです。i3 と awesome の影響を受けています。
Maze Compositor
Maze Compositor は 3D の Qt ベースの Wayland コンポジタです。
Grefsen
Grefsen はミニマルなデスクトップ環境を実現する Qt/Wayland コンポジタです。
XWayland
XWayland は、Wayland の下で実行される X サーバーです。 レガシー X11 アプリケーションに下位互換性を提供します。
これを使用するには、xorg-xwayland パッケージを インストール します。
XWaylandはコンポジターを介して開始されるため、選択したコンポジターを使用して、XWayland の互換性と XWayland の開始方法の説明を確認して下さい。
トラブルシューティング
root でグラフィカルアプリケーションを実行
Root で X アプリケーションを起動#Wayland を見てください。
LLVM assertion failure
LLVM assertion failure になるときは、この問題が修正されるまで Gallium LLVM なしで mesa をリビルドする必要があります。
これは LLVM を必要とするドライバを無効にしてしまう可能性があります。ハードウェアドライバに問題が発生するときは、以下の export を試して下さい:
$ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so
Electron ベースのアプリケーションでは、ディスプレイ::0を開けません
GDK_BACKEND = wayland を設定していないことを確認してください。グローバルに設定すると、 Electron アプリが機能しなくなります。
動作が遅い、表示がおかしい、クラッシュする
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に CLUTTER_PAINT=disable-clipped-redraws:disable-culling
が設定されている可能性があります。/etc/environment
などの rc ファイルから該当箇所を削除してみてください。
リモートディスプレイ
いくつか選択肢が考えられます:
- Sway など wlroots ベースのコンポジタでは wayvncAUR VNC サーバーが利用できます。
- Weston には RDP バックエンドが含まれています。weston-rdp(7) を参照してください。
- mutter ベースの場合は gnome-remote-desktop が使えます。公式サイト を参照してください。
- waypipeAUR や waypipe-gitAUR は Wayland アプリケーションの透過プロキシです。SSH を組み合わせることで外部から操作できます。詳細は公式サイトを参照してください。
ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
- ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
- マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。X上で動作するアプリケーションの場合、対応は不要です。
関連する拡張:
- XWayland keyboard grabbing protocol (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [7])
- Compositor shortcuts inhibit protocol
- Relative pointer protocol
- Pointer constraints protocol
サポートしている Wayland コンポジタ:
- Mutter, GNOME のコンポジタ (リリース 3.28 以上)。
- wlroots (Relative pointer protocols と Pointer constraints protocol に対応)
サポートしているウィジェットツールキット:
- GTK (リリース 3.22.18 以上)。