VcXsrvがサスペンド・レジューム後にリモートクライアントと切断される問題とその回避策の続編です。
WSL2でも、WindowsをサスペンドしてレジュームするとVcXsrvのXクライアントのウィンドウが消えてしまいます。
Xpraで一応解決したので、まとめておきます。
WSL2でXpraをインストール
$ sudo apt-get install xpra
WSL2でXpraサーバを起動
$ xpra start :100 --bind-tcp=:10000
Xpraサーバ経由でXクライアントを起動
$ DISPLAY=:100 xterm&
WindowsでXpraクライアントを起動(WSL2上のXpraサーバへ接続)
Xpraクライアントは https://xpra.org/trac/wiki/Download でダウンロードできます。
C:\>"\Program Files\Xpra\xpra" attach tcp://localhost:10000/ --desktop-scaling=off
これでXクライアントのウィンドウが出ます。
サスペンドレジュームしても消えません。
IPアドレスを指定して接続する方法
上記のlocalhostに代えてホストのIPアドレスを指定する手もあります。
$ xpra start :100 --bind-tcp=0.0.0.0:10000
C:\>"\Program Files\Xpra\xpra" attach tcp://172.21.96.171:10000/ --desktop-scaling=off
こちらの方がWSL2のlocalhost forwardingのオーバーヘッドがない分速いような気もしますが、気のせいかもしれません。
WSL2起動のたびに変わるIPアドレスを調べる手間はあります。
vsockが動けば速そうですが、WSL2ではうまく動かないようです。
WSL2のみで完結する方法
Windows側にクライアントをインストールしたくない場合、XpraクライアントもWSL2で動かす手もあります。
この場合はUnixドメインのソケットで十分です。
$ xpra start :100
$ xpra attach :100&
この場合、サスペンドレジュームでいったんXクライアントのウィンドウが消えますが、再度xpra attach :100&
でXpraクライアントを起動すれば復活します。