Wayland + Sway な環境を構築(できなかった) @ Arch Linux

Wayland が良さそうだぞ

今回の記事はディスプレイサーバについです. Wayland は X に変わる ディスプレイサーバみたいなもので,Sway は Wayland に対応したウィンドウマネージャです.

前々から気になっていた Wayland について調べてみると X と比較してメリットが多そうなことがわかりました. 下の記事によると X では X server と Compositor が別れていたために描画の効率が悪かったが,Wayland ではその2つが統合されたようなアーキテクチャなので描画性能が良いみたいです.

qiita.com

そこで何か適当なベンチマークが無いかな,と検索していると面白いものを見つけました.

www.youtube.com

この動画では X server を使用した環境と Wayland を使用した環境を,ゲームのベンチマークを実行することで比較しています. (Wayland は描画が軽くなるという触れ込みなので最適ですね!) 動画を見てみると Wayland の方がフレームレートが安定しているように見えます. X のほうが平均フレームレートが高い場合もありましたが,X では最小フレームレートが 60 を割る場合(30 など)もありました. 一方 Wayland では最大フレームレートが X と比較して多少低い場合もありましたが最小フレームレートは 60 以上をキープしていました. そもそも最大フレームレートはディスプレイが表示できないので無視して良い指標にも思えます. 以上のことから,Wayland のほうが描画性能が高いと判断しました.

Awesome WM は使えるかなー (ダメそう)

私は普段 Awesome WM というウィンドウマネージャを使っています. Awesome WM はタイル型ウィンドウマネージャの1種でウィンドウを画面上に良い感じに配置してくれます.

Wayland に置き換える場合ウィンドウマネージャもそれに対応している必要があるのですが,Awesome WM は対応して無さそうでした. (Arch WikiAwesome WM のページに Wayland の文字が一切なかった & Wayland のページでウィンドウマネージャとして紹介されていなかったので)

Arch Wiki の Wayland のページを見ていると Sway という i3 の互換ウィンドウマネージャがありました.

Wayland - ArchWiki

i3 とは Awesome WM と同様のタイル型ウィンドウマネージャです. Awesome WM とはキーバインド等が違うだけで見た目はそれほど変わりがない(という認識)ので乗り換えることにしました.

i3 のデスクトップ

https://upload.wikimedia.org/wikipedia/commons/1/1d/I3-wm.png

Awesome WM のデスクトップ

https://awesomewm.org/images/screen.png

ちなみに,Google トレンドで調べてみると i3 のほうが利用者が多そうです. (そういえば Awesome WM を使うと決めたときも「マイノリティーの方が硬派だ」とかいうアホな理由だった記憶が…)

https://trends.google.co.jp/trends/explore?q=awesome%20wm,%2Fm%2F0jt1p_3

環境構築

ArchWiki(Wayland) のページを参考に環境を構築していきます.

weston のインストール

まずは weston パッケージをインストールします.

yaourt -S weston

インストールが完了しました. この状態で weston コマンドを実行すると,現在の X 上で Weston が起動できました.

gyazo.com

sway のインストール

通常版(sway)?はバージョンが古すぎたので git 開発版をインストールしました.

yaourt -S sway-git

問題発生

いざ weston 上で sway を動かそうとすると立ち上がらない. エラーメッセージを読むと NVIDIA hoge fuga という文字が. そういえば Sway が NVIDIA サポートを削除予定とか Wiki に書いてあった気が…これかぁ…

Arch Wiki によると Wayland と GPU ドライバが同一のバッファ API という API に対応している必要があるようです. Sway は元々 NVIDIA のドライバが使うバッファ API に対応していたようなのですがサポートを止めたようです. 調べてみると作者の1人のブログ記事を見つけました.

drewdevault.com

読んでみると NVIDIA 対応を止めた理由がありました.

So far, I’ve been speaking in terms of Sway supporting Nvidia, but this is an ass-backwards way of thinking. Nvidia needs to support Sway. There are Linux kernel APIs that we (and other Wayland compositors) use to get the job done. Among these are KMS, DRM, and GBM - respectively Kernel Mode Setting, Direct Rendering Manager, and Generic Buffer Management. Every GPU vendor but Nvidia supports these APIs. Intel and AMD support them with mainlined1, open source drivers. For AMD this was notably done by replacing their proprietary driver with a new, open source one, which has been developed in cooperation with the Linux community. As for Intel, they’ve always been friendly to Linux.

うんうんなるほど,次からは AMDGPU を買おう.

ちなみに Nouveau であれば Sway を動かすことも可能だと思いますが,やはり性能が…
描画性能を上げるために Wayland にしたいのにドライバを Nouveau にするのは本末転倒なので今回は諦めます.

The NVIDIA vs. Open-Source Nouveau Linux Driver Benchmarks For Summer 2018 - Phoronix

まとめ

今回は Wayland + Sway という環境を構築しようとして,Sway が NVIDIA のドライバに対応していない問題で止まりました. 次からは AMDGPU を買おうという気持ちになりました.

ちなみに GNOME であれば NVIDIA ドライバに対応しているので試してみてはいかがでしょうか? (そういえば Ubuntu 18.04 LTS ではデフォルトで Wayland + GNOME で動作するようになっていましたよね.)