我对 Windows 10 上的 WSL2 非常满意,刚从 Mac 切换过来。我在 Windows 主机上运行X410并通过设置在 WSL 中启动 X11 应用程序
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'):0.0
在开始我的程序之前。
有一段时间它工作正常,但是当我的电脑从睡眠中醒来后,X 窗口就不见了。该应用程序仍显示为正在运行ps
。
我感觉这与 X11 应用程序和 X410 服务器之间失去网络连接有关,但我不确定。有没有人遇到过这种情况并提出解决方法?
我使用的是 Windows 10 Insider Preview 内部版本 18945。
你是对的,这是网络的问题。它显然会影响到 Hyper-V 的所有 X11 连接。一种解决方案是为 X11 连接使用 TCP/IP 以外的东西。
Windows X11 服务器 x410 的开发人员在此处解释了如何使用虚拟套接字为 Hyper-V VM 修复它。
不幸的是,他还在这篇更广泛的文章的末尾解释说,他无法在 WSL2 上实现这一点。他将等待 WSL2 成熟,直到它可以通过 Unix 域套接字进行更好的操作系统间通信。
您可以使用Xpra或X2Go作为解决方法(对我来说,X2Go 效果更好)。
Xpra
apt install xpra
在您的 Linux 发行版(在 Ubuntu 上)上安装 Xpra 。xpra start --bind-tcp=0.0.0.0:10000 :10000
Xpra.exe
并连接到 Port10000
。客户端将在睡眠/待机后自动重新连接。即使您失去连接(可能是在登录 VPN 时),您也可以随时手动重新连接。
X2围棋
apt install x2goserver
在您的 Linux 发行版(在 Ubuntu 上)上安装 X2Go 。sudo service ssh start
。PS:我目前正在写一篇小博文:Development Environment in WSL2
有一个非常好的解决方案:https ://github.com/nbdd0121/wsld 。
它所做的正是其他解决方案之一所避免的:使用 Unix 域套接字。我已经使用它好几个月了,没有任何问题。