我安装了 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
按着这些次序:
以管理员身份打开 PowerShell 并运行:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
现在打开 WSL2 并运行:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0
现在
xeyes
答案4
对于使用默认配置的 coLinux eth0=slirp
,可以使用export DISPLAY=10.0.2.2:0
(或 0.0)访问 Windows 主机上的 Xming。使用比斯瓦普里约的解决方案在这种情况下不起作用,因为 slirp 将解析器 IP 设置为 10.0.2.3,但他的回答让我意识到我做错了什么。