错误:无法打开显示:0

错误:无法打开显示:0

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

export DISPLAY=:0

之后

xeyes

并出现错误

Error: Can't open display: :0

X11Forwarding 已检查,是的。

答案1

解决了执行此命令的问题

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

也可以在shell初始化文件中添加该命令,例如,.bashrc.zshrc

还要确保允许在 Windows 10 中运行的 X 服务器的公共访问。对于虚拟主机-ac选项最为重要,因为它允许公众访问。对于西明,通过XLaunch运行,并在“指定参数设置”部分选择“无访问控制”。

更多内容请参见此讨论Microsoft/WSL:无法在 WSL2 中使用 X-Server

答案2

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

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

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

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

经过这2点修改后,问题就解决了。

答案3

按着这些次序:

  1. 以管理员身份打开 PowerShell 并运行:New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

  2. 现在打开 WSL2 并运行:export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0

  3. 现在xeyes

答案4

对于使用默认配置的 coLinux eth0=slirp,可以使用export DISPLAY=10.0.2.2:0(或 0.0)访问 Windows 主机上的 Xming。使用比斯瓦普里约的解决方案在这种情况下不起作用,因为 slirp 将解析器 IP 设置为 10.0.2.3,但他的回答让我意识到我做错了什么。

相关内容