我在使用图形应用程序和 WSL 时遇到了问题。我安装了 Ubuntu 20.04.3 和 X11;但是当我尝试测试时遇到了以下问题xeyes
(我使用的任何其他图形应用程序也会出现同样的问题)。
xeyes
Error: Can't open display: localhost:0.0
我已经在网上查阅了类似问题的相关资料,但还没有找到解决办法。我正在使用 VcXsrv X Server(之前也尝试过 Xming)。
我曾尝试使用以下所有方法独立更改显示内容:
export DISPLAY=0.0
export DISPLAY=localhost:0
export DISPLAY=127.0.0.1:0
export DISPLAY=127.0.0.1:0.0
export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0
这些都不起作用。
我已经检查过,确保 X 服务器被允许通过防火墙,并且确实如此。
我还进入/etc/ssh/sshd_config
并更改了以下内容:
X11Forwarding yes
我确实尝试过了
~/.profile
,结果返回-bash: /.profile: No such file or directory
我还设置了启用了 X11 转发的 PuTTY 配置。
最后,我尝试了以下方法:
export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0
再次,这没有起作用。但是,它确实将 IP 更改为与之前所有尝试不同的 IP,然后引发以下错误:
Authorization required, but no authorization protocol specified
Error: Can't open display:
我不确定这是否是进步,也许现在阻碍我的就是这项授权。
我在网上看到有人说要运行:
vcxsrv -ac
更改 X 服务器的访问控制,但其他人说不要这样做,因为这会危及安全。我只在本地运行这个,但不知道我在做什么,所以没有这样做。
从我参加过的论坛数量来看,我知道这个问题很常见,所以我不指望有人能立即帮我解决这个问题。但如果有人能根据我提供的任何信息为我指明正确的方向,我将不胜感激,因为看起来我已经涵盖了在其他论坛上可以找到的大多数(如果不是全部)解决方案。
提前致谢 :)
编辑
自发布以来,我得出结论,以下是正确的显示设置:export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0
我刚刚选择禁用 vcxsrv 上的访问控制设置,现在运行时xeyes
出现以下错误:
XIO: fatal IO error 104 (Connection reset by peer) on X server "IP:0.0"
after 171 requests (171 known processed) with 0 events remaining.
我认为这意味着 X11 转发无法正常工作?但我不确定该怎么做才能解决这个问题。
编辑#2
我决定升级到 Windows 11,因为在阅读之后,我发现 Windows 11 上的 WSL2 已经处理了这个 X 服务器,所以不需要再处理 xming 等。升级到 Windows 11 并更新 WSL2 后,我已经能够gedit
成功使用图形界面。但是,我仍然得到相同的结果:
Error: Can't open display:
当我尝试运行xeyes
一些其他图形界面时。我确信在升级到 Windows 11 之前 gedit 无法正常工作,因此此更新部分解决了我的问题,但并未完全解决
答案1
升级到 Windows 11 解决了我的问题。我在“编辑 #2”中遇到的问题是由我在尝试修复之前的问题时留在 bashrc 中的一行引起的。
答案2
为了完整起见,我想借此机会提一下,可以在 x410 的帮助下使用 vsock 在 Win10 上稳定地完成这项工作。
如果您想知道我是如何做到的,请阅读此处(仍然是超级用户):使用 x410 和 wsl 运行 GUI