LoginSignup
2
1

More than 3 years have passed since last update.

XpraによるWSL2のXセッション切断問題の解決

Last updated at Posted at 2020-05-04

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クライアントを起動すれば復活します。

2
1
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1