WSL2 X11 程序“消失”

WSL2 X11 程序“消失”

我刚从 Mac 切换到 Windows 10,对 WSL2 非常满意。我运行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

您可以使用西普拉或者X2Go作为一种解决方法(对我来说 X2Go 效果更好)。

西普拉

  1. 在你的 Linux 发行版(在 Ubuntu 上)上安装 Xpra apt install xpra
  2. 在 Windows 上安装 Xpra(安装程序位于Xpra 客户端下载
  3. 在 Linux 中使用以下方式启动 xpraxpra start --bind-tcp=0.0.0.0:10000 :10000
  4. 在 Windows 中启动Xpra.exe并连接到端口10000

客户端将在休眠/待机后自动重新连接。即使您失去连接(可能是在登录 VPN 时),您也可以随时手动重新连接。

X2Go

  1. apt install x2goserver在你的 Linux 发行版( Ubuntu)上安装 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 上启动客户端,使用“会话类型:已发布的应用程序”进行连接

PS:我目前正在写一篇小博文:WSL2 中的开发环境

答案3

对此有一个非常好的解决方案:https://github.com/nbdd0121/wsld

WSL Daemon - 为 WSL2 提供稳定的 X11 连接和时间同步

它确实做到了其他解决方案所没有做到的事情:使用 Unix 域套接字。我已经使用它好几个月了,没有出现任何问题。

相关内容