Linuxデスクトップ
最近、立て続けに3回ほど、Linuxデスクトップ環境を整備した。
1) Xubuntu on x64 desktop
intel x64 のマシンに Xubuntu をインストールしてデスクトップ環境を整備した。 XFCEが好きなので、Xubuntu 24.01 を選んだ。 このマシンは、ほとんどヘッドレスで使うので、 runlevel 3 で起動していて、サービスとして tigervnc をセットアップし、そこから lightdm や XFCE が起動するような設定にした。 Xubuntu はいろいろ入っているので楽だ。 このマシンは、のちに wayland や labwc をメインで使うことになる。
2) Labwc on Raspberry pi 5
Raspberry pi 5 に Raspberry pi OS をインストールした。 これを書いている時点で、 Raspberry pi OS は、Debian bookworm ベースだ。 標準では LXDM が立ち上がるが、 raspi-config で設定することで、wayland と labwc と LXDMのいろいろなパネルが立ち上がるようにできる。 以前は Raspberry pi OS の waylandコンポジターには wayfire が使われていたらしいが、現時点では labwc がデフォルトにして唯一の選択肢だし、VNCなどもトラブルなく動く。
この環境から、引き算をしていった。
/etc/xdg/labwc に、Raspberry pi 向けにカスタマイズされた labwcの各種設定がてんこ盛りになっている。IOまわりなど重要そうなところだけ残し、いったんすべてまっさらにして、 ~/.config/labwc に全部の設定を作り直すことにした。 この軽量な labwc や wayland で色々遊んだ結果、labwcいいじゃん、ということになり、前述のx64マシンも labwc にすることにした。
3) Labwc on x64 Ubuntu
この環境は、ヘッドレスなので、labwc がヘッドレスで動くようにしたり、vncを起動したりと工夫が必要だった。
ヘッドレス起動には、seatd が必要となる。 labwc には以下の環境変数を設定してやる。
WLR_BACKENDS=headless
WLR_RENDERER=pixman
起動スクリプト autostart
には色々書くことになる。
ヘッドレスディスプレイの解像度設定をする wlr-randr
コマンドや、wayvnc の移動もここで行う。
wlr-randr --output HEADLESS-1 --custom-mode 1440x900@30Hz &
wayvnc &
Raspberry pi OS の autostart は全く別のかたちになっていて、 kanshi によるディスプレイ管理が入っていて、 wayvnc はsystemdサービスとスクリプトを通じて起動する仕組みになっている。いろいろ勉強になる。
waypipe による waylandプロトコル転送
2台の waylandデスクトップマシンができたので、waylandプロトコルの転送もできるようになった。waypipe を使うと、X11転送と同じようなことができる。
waypipe -c lz4 ssh {ターゲットマシン} {コマンド}
これで、例えば、サーバー機で実行しているGUIアプリを、非力な Raspberry pi に転送するようなことができる。
感想
wayland環境はまだ開発途上で、コンポジタやパネルなどのアプリケーションに機能が頻繁に追加されている。Debian / Ubuntu のリポジトリには1,2年前のバージョンが配置されているので、ネット上の情報と差異があるので注意する。manコマンドをよく見ることになる。 今回のセットアップでは、各種アプリのソースコードからのビルドは避けるようにした。Debian / Ubuntu では開発ツールのバージョンも古いので、最新版コードのビルドには失敗することが多いし、がんばってビルドを通しても、ほかの依存関係のバージョンも古いだろうから。そんな中、Rustは比較的ビルドしやすいので嬉しい。 これらの体験が良いか悪いかといえば、トレードオフということになる。 特に Raspberry pi は特殊なハードウェアなので、トライアンドエラーを楽しみたいのでもない限り、Raspberry pi OS によるきめ細やかなハードウェアサポートはとても助かる。 x64マシンのほうは、近いうちに Manjaro Linux に切り替えて、最新のパッケージや、ビルド環境を入れてみようかな。 他のWaylandコンポジターにも興味があるが、情報をざっと見る限り、Labwcが一番気に入っていて、他は試せていない。 自分だけの特殊事情として、とにかくリモートコンピューティング大好き、ってことがある。一日中PCの前にいるわけではなく、あちこち移動するし、色んなデバイスからログインする。複数のレイアウトのキーボードを使うし、なんなら物理キーボードは使わずに iPad越しにデスクトップマシンをいじることも多い。VNCや、ブラウザ経由のcode-serverが常套手段。そんななかVNCは、いくつかの大事なキーを伝達できず取りこぼす。キーボード操作必須だったり重きを置きすぎているコンポジターは自分には合わないんだ。
それでは。