「Wayland」の版間の差分
(Westonへ分割) |
|||
16行目: | 16行目: | ||
今のところ Wayland は [[KMS]] を利用しているシステムでしか動作できません。 |
今のところ Wayland は [[KMS]] を利用しているシステムでしか動作できません。 |
||
− | また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[ |
+ | また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、([[Weston]] や [[Sway]] などの) コンポジタあるいは ([[GNOME]] や [[KDE]] など) デスクトップ環境が必要です。 |
=== バッファ API のサポート === |
=== バッファ API のサポート === |
||
31行目: | 31行目: | ||
|- |
|- |
||
|} |
|} |
||
− | |||
− | == Weston == |
||
− | Weston は Wayland コンポジタのリファレンス実装です。 |
||
− | |||
− | === インストール === |
||
− | {{pkg|weston}} パッケージをインストールしてください。 |
||
− | |||
− | === 使用方法 === |
||
− | Weston をインストールしたのなら Wayland をテストする環境が整っているはずです。 |
||
− | |||
− | 起動中の X セッションの中で Weston を実行することができます: |
||
− | $ weston |
||
− | |||
− | もしくは、Weston をネイティブで起動するには、端末を切り替えて次を実行して見て下さい: |
||
− | $ weston-launch |
||
− | |||
− | Weston の TTY からデモを実行できます。ターミナルエミュレータを起動するには: |
||
− | $ weston-terminal |
||
− | |||
− | 画面に花を散らすには: |
||
− | $ weston-flower |
||
− | |||
− | 画像を表示するには: |
||
− | $ weston-image image1.jpg image2.jpg... |
||
− | |||
− | === 設定 === |
||
− | |||
− | キーボードレイアウト・モジュール・UI の設定ファイルの例です。詳しくは {{man|5|weston.ini}} を見て下さい。Weston の出力設定は {{ic|xorg.conf}} のモニターと多少異なります: |
||
− | |||
− | $ ls /sys/class/drm |
||
− | card0 |
||
− | card0-VGA-1 |
||
− | card1 |
||
− | card1-DVI-I-1 |
||
− | card1-HDMI-A-1 |
||
− | card1-VGA-2 |
||
− | |||
− | {{ic|card0}} は使われていない内蔵ビデオアダプタです。追加アダプタ {{ic|card1}} は HDMI と DVI モニターに接続されており、出力名が {{ic|HDMI-A-1}} と {{ic|DVI-I-1}} です。 |
||
− | |||
− | {{hc|~/.config/weston.ini|<nowiki> |
||
− | [core] |
||
− | # xwayland support |
||
− | xwayland=true |
||
− | |||
− | [libinput] |
||
− | enable_tap=true |
||
− | |||
− | [shell] |
||
− | background-image=/usr/share/backgrounds/gnome/Aqua.jpg |
||
− | background-color=0xff002244 |
||
− | panel-color=0x90ff0000 |
||
− | locking=true |
||
− | animation=zoom |
||
− | close-animation=fade |
||
− | focus-animation=dim-layer |
||
− | #binding-modifier=ctrl |
||
− | #num-workspaces=6 |
||
− | ### for cursor themes install xcursor-themes pkg from Extra. ### |
||
− | #cursor-theme=whiteglass |
||
− | #cursor-size=24 |
||
− | |||
− | ### tablet options ### |
||
− | #lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png |
||
− | #lockscreen=/usr/share/backgrounds/gnome/Garden.jpg |
||
− | #homescreen=/usr/share/backgrounds/gnome/Blinds.jpg |
||
− | #animation=fade |
||
− | |||
− | ### for Laptop displays ### |
||
− | #[output] |
||
− | #name=LVDS1 |
||
− | #mode=1680x1050 |
||
− | #transform=90 |
||
− | |||
− | #[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 |
||
− | |||
− | #[output] |
||
− | #name=X1 |
||
− | #mode=1024x768 |
||
− | #transform=flipped-270 |
||
− | |||
− | [input-method] |
||
− | #path=/usr/lib/weston/weston-keyboard |
||
− | |||
− | [keyboard] |
||
− | keymap_rules=evdev |
||
− | #keymap_layout=gb,de |
||
− | #keymap_options=caps:ctrl_modifier,shift:both_capslock_cancel |
||
− | ### keymap_options from /usr/share/X11/xkb/rules/base.lst ### |
||
− | numlock-on=true |
||
− | |||
− | [terminal] |
||
− | #font=DroidSansMono |
||
− | #font-size=14 |
||
− | |||
− | [launcher] |
||
− | icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
||
− | path=/usr/bin/weston-terminal |
||
− | |||
− | [launcher] |
||
− | icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
||
− | path=/usr/bin/gnome-terminal |
||
− | |||
− | [launcher] |
||
− | icon=/usr/share/icons/hicolor/24x24/apps/firefox.png |
||
− | path=/usr/bin/firefox |
||
− | |||
− | [launcher] |
||
− | icon=/usr/share/weston/icon_flower.png |
||
− | path=/usr/bin/weston-flower |
||
− | |||
− | [screensaver] |
||
− | # Uncomment path to disable screensaver |
||
− | path=/usr/libexec/weston-screensaver |
||
− | duration=600 |
||
− | </nowiki>}} |
||
− | |||
− | 最小の {{ic|weston.ini}}: |
||
− | {{hc|~/.config/weston.ini|<nowiki> |
||
− | [core] |
||
− | xwayland=true |
||
− | |||
− | [keyboard] |
||
− | keymap_layout=gb |
||
− | |||
− | [output] |
||
− | name=LVDS1 |
||
− | mode=1680x1050 |
||
− | transform=90 |
||
− | |||
− | [launcher] |
||
− | icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png |
||
− | path=/usr/bin/weston-terminal |
||
− | |||
− | [launcher] |
||
− | icon=/usr/share/icons/hicolor/24x24/apps/firefox.png |
||
− | path=/usr/bin/firefox |
||
− | </nowiki>}} |
||
− | |||
− | ==== XWayland ==== |
||
− | |||
− | {{Pkg|xorg-server-xwayland}} パッケージをインストールしてください。 |
||
− | |||
− | Weston の中で X アプリケーションを動かすには、Xwayland を使ってリクエストを処理させます。以下の設定ファイルを作成してください: |
||
− | {{hc|~/.config/weston.ini| |
||
− | <nowiki>[core] |
||
− | xwayland=true</nowiki> |
||
− | }} |
||
− | |||
− | {{Note|X を設定していない場合、キーマップの設定が必要です: [[Xorg でのキーボード設定]]。}} |
||
− | |||
− | ==== スクリーンキャスト録画 ==== |
||
− | Weston にはスクリーンキャスト機能が備わっており、{{ic|Super+r}} キーを押すことで録画を開始・停止することができます。スクリーンキャストは Weston のカレントディレクトリ内の {{ic|capture.wcap}} ファイルに保存されます。 |
||
− | |||
− | WCAP ファイルは Weston 専用のロスレス動画フォーマットで、フレーム間の差異だけを記録しています。記録されたスクリーンキャストを再生するには、WCAP ファイルをメディアプレイヤーが再生できるフォーマットに変換する必要があります。まず、録画した動画を YUV ピクセル形式に変換してください: |
||
− | |||
− | $ wcap-decode capture.wcap --yuv4mpeg2 > capture.y4m |
||
− | |||
− | 作成された YUV ファイルは [[FFmpeg]] を使うことで他のフォーマットに変換できます。 |
||
− | |||
− | ==== HiDPI ディスプレイ ==== |
||
− | Retina または [[HiDPI]] のディスプレイでは以下を使用してください: |
||
− | {{hc|~/.config/weston.ini|<nowiki> |
||
− | [output] |
||
− | name=... |
||
− | scale=2 |
||
− | </nowiki>}} |
||
− | |||
− | ==== シェルのフォント ==== |
||
− | |||
− | Weston はウィンドウのタイトルバーや時計などにデフォルトの sans-serif フォントを使用します。フォントを変更する方法は[[フォント設定#フォントの置き換え]]を見て下さい。 |
||
== GUI ライブラリ == |
== GUI ライブラリ == |
2020年9月1日 (火) 15:06時点における版
Wayland は Linux の新しいウィンドウプロトコルです。GNOME や KDE などの主要な Linux デスクトップは Wayland に対応しており、"Weston" という名前のコンポジタのリファレンス実装も存在します。Wayland で昔の X11 アプリケーションを動作させるための互換レイヤーとして XWayland があります。
要件
今のところ Wayland は KMS を利用しているシステムでしか動作できません。
また、Wayland はただのライブラリなので、それだけでは使い物になりません。X サーバーを置き換えるには、(Weston や Sway などの) コンポジタあるいは (GNOME や KDE など) デスクトップ環境が必要です。
バッファ API のサポート
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
とセットします。
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 ディスプレイマネージャ。 |
LightDM | Wayland/X11 上で動作 [2] | 様々なデスクトップに対応したディスプレイマネージャ。 |
SDDM | X11 上で動作 [3] | QML ベースのディスプレイマネージャ。 |
ウィンドウマネージャとデスクトップシェル
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 コンポジタです。
トラブルシューティング
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 ファイルから該当箇所を削除してみてください。
ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:
- ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。
- マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。
Wayland と XWayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。
関連する拡張:
- XWayland keyboard grabbing protocol (XWayland のサポートは xorg-server 1.20 開発ツリーに追加されています [5])
- Compositor shortcuts inhibit protocol
- Relative pointer protocol
- Pointer constraints protocol
サポートしている Wayland コンポジタ:
サポートしているウィジェットツールキット:
- GTK (リリース 3.22.18 以上)。