WSL2 X11 プログラムが「消える」

WSL2 X11 プログラムが「消える」

私はMacからWindows 10に切り替えたばかりですが、WSL2にとても満足しています。X410Windowsホスト上で、WSL内でX11アプリを起動するには、

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'):0.0

プログラムを開始する前に。

しばらくは正常に動作しますが、コンピュータがスリープ状態から復帰すると、X ウィンドウが消えてしまいます。アプリケーションは引き続き実行中として表示されますps

X11 アプリと X410 サーバー間のネットワーク接続が失われていることに関係しているような気がしますが、よく分かりません。この現象を経験し、回避策を思いついた方はいますか?

私は Windows 10 Insider Preview ビルド 18945 を使用しています。

答え1

おっしゃる通り、これはネットワークの問題です。どうやら Hyper-V へのすべての X11 接続に影響するようです。解決策としては、X11 接続に TCP/IP 以外のものを使用することです。

Windows X11サーバーx410の開発者は、仮想ソケットを使用してHyper-V VMの問題を修正する方法を説明しました。ここ。

残念なことに、彼は最後にも説明しているこのより詳しい記事彼はこれを WSL2 で動作させることができませんでした。彼は、WSL2 が成熟して、Unix ドメイン ソケットを介した OS 間通信が改善されるまで待つつもりです。

答え2

使用できますエクスプラまたはX2Go回避策として(私の場合は X2Go の方がうまく機能します)。

エクスプラ

  1. Linux ディストリビューション ( apt install xpraUbuntu の場合) に Xpra をインストールします。
  2. WindowsにXpraをインストールする(インストーラーはXpraクライアントのダウンロード
  3. Linuxでxpraを起動するにはxpra start --bind-tcp=0.0.0.0:10000 :10000
  4. Xpra.exeWindows で起動し、ポートに接続します10000

クライアントはスリープ/スタンバイ後に自動的に再接続します。接続が失われた場合でも (VPN にログインしているときなど)、いつでも手動で再接続できます。

X2Go

  1. Linux ディストリビューション ( apt install x2goserverUbuntu の場合) に X2Go をインストールします。
  2. WindowsにX2Goクライアントをインストールします(インストーラーはX2Goクライアントのダウンロード
  3. Linux で sshd を修正して起動します。
    sudo apt-get remove --purge openssh-server
    sudo apt-get install openssh-server
    sudo service ssh --full-restart
    
    また、WSL を再起動するたびに sshd を起動する必要があります sudo service ssh start
  4. Windowsでクライアントを起動し、「セッションタイプ: 公開アプリケーション」を使用して接続します。

追伸: 現在、短いブログ記事を書いています:WSL2の開発環境

答え3

これには完璧な解決策があります:https://github.com/nbdd0121/wsld

WSL デーモン - WSL2 の安定した X11 接続と時間同期

これは、他のソリューションの 1 つが示唆しているのとまったく同じことを行います。つまり、Unix ドメイン ソケットを使用します。私は何ヶ月も問題なく使用しています。

関連情報