Steam Deck, Waylandお試し中

もうだいぶ前の話になってしまうのだが、3月くらいにSteam Deckがセールされていて、もともと興味もあったのでついつい購入してしまった。 Steam Deckの話はまた別に投稿するかもしれないけど、これはめちゃめちゃおすすめなデバイスである。$350の価値はありすぎる。

このSteam DeckにはSteam OSというArch LinuxベースのOSが搭載されていて、このOSには、ゲームモードとデスクトップモードの二種類のモードがある。 通常立ち上がるのはゲームモードで、これはSteamのBig PictureモードのUIがそのままOSになったみたいな感じのものだ。

デスクトップモードは普通のLinuxデスクトップで、デフォルトだとKDE Plasmaの環境が立ち上がる。デスクトップモードはいったんゲームモードで立ち上げたあと、電源メニューからデスクトップに切り替える必要がある。実際このへんはSDDMを使ってやっているっぽく[1]、好きに変更することも不可能ではなさそうだが、OSアップデートのたびにホームディレクトリ以外の場所は初期化されてしまうようなのであまりそういうことはしないほうがよさそう。

そんな感じでデスクトップモードはいろいろ制約がおおいのだが、Waylandベースのデスクトップ環境をゲームモードで立ち上げる、という猛者がいるのを発見した。

この方法だと、ゲームモードのまま、ゲームを起動する感覚でデスクトップ環境を立ち上げられるのでめちゃくちゃ便利。外部ディスプレイで稼動させるのもいろいろ制約はあるもののちゃんと動く。以下は4Kのモバイルモニタを使っている様子↓

4K Linux desktop on Steam Deck

おなじような方法でXorgベースなWMを起動するのもトライしてみたが、いちおう起動はできたものの解像度の設定がどうやってやるのかわからず…。 ゲームモード上ではX Windowのアプリはgamescopeというアプリにトラップされて全画面表示になってしまうのだが、このように起動したWMもおなじgamescopeの中に入ってしまう。

ちなみにWayland WMの中でも従来のXを使うアプリはgamescopeに囚われてしまうので、基本このゲームモード上のデスクトップ環境では純粋なWaylandアプリのみを使えるということになる。 それでも自分の普段使っているアプリでWaylandに完全に対応していないのはAndroid Studioくらいなので、わりといろんなことができる。

ゲーム機としては?

Linuxマシンとしてはかなり遊べるデバイスだが、ゲーム機としてはどうか? 自分はもともとゲーミングPCを持っているということもあり、最初はまったく期待していなかったのだが、いまではゲーム機としてもかなり気にいっている。

まず、一番おどろいたのは自分のSteamライブラリーのゲームのほとんどが問題なくうごいてしまうところ。モンハンなんてめちゃくちゃサクサクでビックリする。 720pという解像度だからというのもあるだろうが、このパフォーマンスのよさには正直おどろいた。また、画面自体も小さいからか、解像度の低さもあんまり気にならない。むしろどこでも好きなときにPCゲーが遊べる、というのがとてもよい。

あとはコントローラの質がめちゃくちゃ良い。過去に発売されていたSteam Controllerもすごく評判がよかったけど、こういうことかと。若干レイアウトがくるしいところはあるものの、手持ちのコントローラの中では断トツに良いのでSteam Deckの重さなんかを加味してもトータルのプレイ体験が良い。

あと、普通の携帯ゲーム機のような感覚でいつでも電源ボタンをおしてゲームを中断・再開できるのもよい[2]

そんなわけで、積みゲー消化マシンとしてはとても良く、Life Is Strange2 と Star Wars Fallen Order をたてつづけにクリアした。あ、そうそう、Diablo4 のベータも快適にプレイできましたよ。

Wayland

という感じでSteam Deck契機でWayland環境をためすことになったのだが、その後はメインPCのほうでもWaylandを試している。

メインのデスクトップ環境はマルチモニタで、それぞれのスケール設定が異なる。Xorgではそのような設定はできないため解像度が低いほうは無理矢理scaleさせて縮小表示するようになっていて、ただでさえHiDPIとくらべて画質がわるいのにさらに悪くなってしまうのが気になっていた。

Waylandだとそのへんはモニタ毎に自由にscale設定できるし、runtimeでscaleを変えたりもできるし、かつそのへんの動作がかなりサクサクなので、その時点でけっこう惹かれてしまった。

ただ問題は自分がawesomewmライクなワークスペース操作になれてしまっているので、SwayHyprlandにどうしてもなじめなかった。

そんな中発見したriverというWMがawesomeとおなじtagベースなワークスペース管理があり、設定方法なんかも好みで、最高やん!と思ってしばらく使っていたのだが、どうしても画面共有がうまく動かせないのと、IMEが動かないアプリがあるのが残念で、現時点では常用はむずかしそうということに。惜しい。ただとても気にいっているのでriverは今後もwatchしたい。

いま試しているのは、Hyprlandにタグベースのワークスペース機能をあとづけする、というものだ。

最初はネタのつもりでサクっと必要最小限の機能を作ってみたら、一気にHyprlandが便利になってしまい、これは完成すれば普通にHyprlandに移行できるかも? という感じになってしまったので、それ以降空き時間にちょこちょこ開発している。まだ使えないユースケースがおおいので他の人が使うことは想定していない(のでREADMEも書いていない)段階だが、そのうちちゃんとととのえていきたい。

先週末にマルチモニタにも対応したので自分用としては最小限の機能は一通りおわった感じがある[3]。あとは、

  • runtimeでのモニタの増減に対応
  • 各種statusを通知するAPI (ステータスバーとかWidget用
  • 条件にマッチしたclientにfocusする機能

くらいでとりあえず十分なものになるきがする。