WSL2 X11 程式“消失”

WSL2 X11 程式“消失”

我對 Windows 10 上的 WSL2 非常滿意,因為我剛從 Mac 切換到 Windows 10。我跑X410在 Windows 主機上並透過設定啟動 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 連線。解決方案是使用 TCP/IP 以外的其他方式進行 X11 連線。

Windows X11 伺服器 x410 的開發人員說明如何使用虛擬套接字修復 Hyper-V VM這裡。

不幸的是,他還在最後解釋說這篇更廣泛的文章他無法在 WSL2 上實現此功能。他將等待 WSL2 成熟,直到它透過 Unix 域套接字實現更好的作業系統間通訊。

答案2

您可以使用X普拉或者X2Go作為一種解決方法(對我來說 X2Go 效果更好)。

X普拉

  1. 在您的 Linux 發行版上安裝 Xpra(apt install xpra在 Ubuntu 上)。
  2. 在 Windows 上安裝 Xpra(安裝程式位於Xpra客戶端下載
  3. 使用以下命令在 Linux 中啟動 xpraxpra start --bind-tcp=0.0.0.0:10000 :10000
  4. 在 Windows 中啟動Xpra.exe並連線到 Port 10000

客戶端將在睡眠/待機後自動重新連線。即使您失去連線(也許是登入 VPN 時),您也可以隨時手動重新連線。

X2Go

  1. 在您的 Linux 發行版上安裝 X2Go(apt install x2goserver在 Ubuntu 上)。
  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 上啟動用戶端,使用「會話類型:已發佈的應用程式」進行連接

PS:我目前正在寫一篇小部落格文章:WSL2 中的開發環境

答案3

對於這個問題有一個非常好的解決方案:https://github.com/nbdd0121/wsld

WSL Daemon - WSL2 的穩定 X11 連線和時間同步

它所做的正是其他解決方案之一所無法做到的:使用 Unix 域套接字。我已經使用它好幾個月了,沒有出現任何問題。

相關內容