LinuxホストでのChrome Remote Desktopはとても快適

この1年ほどメイン開発環境をWindowsにしてみる、というのをやってみていたが、1年たってもしっくりこないままなので、結局Linuxに戻してしまった。

ただ、Windowsの良かった点もいくつかあって、一番はリモートデスクトップがとても良くできているところ。

自分の普段使いのマシン構成は、高スペックデスクトップPC + Surface Go 2 で、Surface Goはかなり非力なのでそれ単体で仕事をしたりするのはかなり厳しい。 しかし、Windowsのリモートデスクトップを使えば、Surface Goから違和感なくデスクトップPCを操作することができ、安定したネット環境さえあればどこでもそれで十分作業ができる。これはなかなか良い体験だった。

リモートデスクトップが実用的に使えると、Surface Goはサブマシンとしてかなり良い。iPadの代わりのタブレットとしての用途だけでなく、やろうとおもえばガッツリ仕事にも使える。持ちはこぶのも楽々だし。

その体験がとても良かったので、Linuxホスト(Windowsクライアント)でもおなじような環境が作れないものかといろいろ試行錯誤した。結果、Chrome Remote Desktopがいまのところ一番満足度が高いという結果になった。

CRDの良いところは、

  1. クライアントのスクリーン解像度にあわせてリモート側の解像度も変わる
  2. 音も出る
  3. 低遅延[1]
  4. 4K(+ HiDPI)でも実用に耐える

という感じ。他にもそれ単体でNAT越え機能がついてるというのも人によっては嬉しいだろう。僕の場合はVPN経由でもアクセスできるようにしているのでこれはどうでもよいのだが。

1,2ができることで、Windowsのリモートデスクトップと使用感がかなり似ている。ただし、Windowsのそれは本体側のスクリーンをそのまま操作するようになっているのに対し、LinuxホストのCRDは本体がわで別途リモート専用のXセッションを立ち上げる形で実装されているので、重複起動ができないアプリを本体側で起動していたりするとめんどうなことになる。あと開発系のツールでport空けるやつとかが使おうとしてる環境とは別側で動いてたりとかも。

4K HiDPIな環境で使うには少しトリッキーなことをする必要がある。WindowsでHiDPIにしていると、(例えば3840x2160のディスプレイを200%にスケールさせて使っていると、)Linux側では1920x1080のデスクトップとして扱われてしまうので、全体的にぼんやりとして表示になってしまう。 めんどうだが、まずWindows側のディスプレイ設定を100%にした上でリモート接続する。その上でLinux側で普通にHiDPIの設定をするとすべて上手く行く。 ただ、3840x2160のディスプレイ解像度で接続しつつ通信量を見てみたのだが、瞬間的に20Mbps近くいくこともあるっぽいので、テザリングでこれやるのは慎重に。

Linux側の設定は、xinitでXを起動している僕のようなユーザーにとってはかなりとっつきやすいものになっている。 ~/.xinitrc の代わりにCRDでは ~/.chrome-remote-desktop-session が使われるのでそこに同じようなことを書けば良い。

HiDPIの設定は .Xresources.remote に書いている[2]。ここがいま一番悩ましいところで、使うディスプレイによって200%が良いときと150%が良いときがあるし、他にも出先でLTE回線で使う時は100%で使いたい、とかクライアントの事情によってフレキシブルに変更したいことがあるのでこの仕様は不便だ。

自分がリモートデスクトップを良く使う環境はまずSurface Goでこれは150%表示で使いたい。次にがっつり作業したい時などはSurface Goにポータブルモニタを繋げてそちらにリモートデスクトップをわりあてている。この時はできれば200%表示が良い…、みたいな感じ。倍率変えて起動しなおすのもそこまで手間ではないが、リモートデスクトップを使う時の手順がまずWindowsのほうで使うディスプレイを倍率100%にするところから始める必要があるので、リモートの倍率設定までしているとかなり手順が多くなってしまう。

他の悩ましい点としては、Win-LキーがWindows側にどうしてもとられてしまって、リモートでは使えないところ。awesome wmでwindowのサイズ変更に使用しているので、ちょっと困る。他のキーに割り当てを追加したが、慣れるまでは大変そうだ。

などなど微妙な点もそれなりにあるものの、トータルではこの環境にかなり満足している。

My mobile workstation 2021

ガチで作業するときの図。右がLinux、左に普段はMacをそれぞれリモート接続している。Surface GoのようなタブレットPCは単体で使うと本体なのにサブディスプレイ的なポジションにもなれるのも良い。