错误:无法打开显示:0

Siz*_*uji 21 windows xming windows-10 windows-subsystem-for-linux

我安装了 WSL2,我想从 Windows 10 访问 WSL2 GUI 应用程序。为此,我安装了 Xming 并以“无客户端”模式启动它。Xming开始了,好的。在我打开 WSL2 终端并执行这些命令后

export DISPLAY=:0
Run Code Online (Sandbox Code Playgroud)

之后

xeyes
Run Code Online (Sandbox Code Playgroud)

并得到错误

Error: Can't open display: :0
Run Code Online (Sandbox Code Playgroud)

X11转发检查,是的。

Siz*_*uji 28

解决了执行此命令的问题

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
Run Code Online (Sandbox Code Playgroud)

该命令还可以在shell初始化文件添加,例如.bashrc.zshrc等等。另外,还要确保允许在Windows 10。VcXsrv运行的X服务器的公共访问,-ac选择是最重要的,因为它允许公共访问。有关Microsoft/WSL: Can't use X-Server in WSL2 的更多讨论,请参阅此 GitHub 问题。

  • 对于不确定添加 `-ac` 选项意味着什么并且无法访问答案中的链接的任何人,当您运行 X 服务器时,应该有一个步骤接近尾声,您可以添加`VcXsrv` 的附加参数,你在那里输入 `-ac`。在上面提供的导出后,这解决了我的问题。 (4认同)
  • 我确认 `export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0` 于 2004 年 5 月在 Windows10x64 上为 WSL2 工作。 (2认同)

小智 10

在将 WSL Ubuntu 发行版的版本从 1 更改为 2 后,我遇到了这个问题。使用

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
Run Code Online (Sandbox Code Playgroud)

还不够。根据https://github.com/microsoft/WSL/issues/6181我需要重新配置防火墙。这可以通过

  • 转到高级安全 -> 入站规则(需要管理员权限)
  • 删除 Vcxsvr 的所有规则
  • 重新启动 Vcxsvr,它会提示您为此程序设置 Windows 防火墙
  • 允许所有(或足够)访问

经过这2个改动,问题就解决了。