使 wsl 的 ubuntu 支持可视化 (GUI) 窗口

警告
本文最后更新于 2023-01-27,文中内容可能已过时。

起因

用着 wsl 的 Ubuntu 的时候,在遇到这种出现可视化界面弹出窗口的时候

因为没有显示设备可以给他输出,会报错

1
_tkinter.TclError: no display name and no $DISPLAY environment variable

image-20221215193105322

解决方法

因为 WSL 子系统与 Windows 的图形显示环境没有直接连接

所以用一个软件作为图形显示环境 (显示屏) 就可以了

下载

这里我用的是 Xming X Server for Windows

一个开源的在 Microsoft Windows 操作系统上运行 X Window System 的软件

https://sourceforge.net/projects/xming/

安装

image-20221215200539181

这一步选不装 ssh 就行,反正 wsl 用不到 PuTTY

他会安装 XLaunch 和 Xming Server

运行

点击 XLaunch, 推荐选 Mutiple windows,多窗口

他会在后台运行,你弹出一个 他会出现一个刚好大小的窗口

image-20221215201818731

display number 是你从 wsl 向设备连接的设备号

下一步不用改

image-20221215201920697

image-20221215201929362

第三步选上 No Access Control,就不用在每次弹窗都提示了

完成即可

配置 Ubuntu 部分

安装 xfce4

什么是 xfce4

Xfce 是一个自由软件,运行在类 Unix 操作系统 (如 Linux、FreeBSD 和 Solaris)上,提供轻量级桌面环境。Xfce 快速、轻量,界面美观和对用户友好。Xfce 由独立的软件组件构成,可根据需要单独使用或者组合在一起提供计算机图形桌面环境的全面功能。

安装命令

1
apt install xfce4

安装过程中,遇到这个窗口选默认就可以

image-20221215202941783

然后修改你的 shell 的设置文件

比如你用的 shell 是 bash,就修改~/.bashrc

我用的是 zsh,修改~/.zshrc

任意地方添加一行

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

这是连接你的 Windows 主机地址

如果报错连不上的话,可以用 cmd 再找 WSL 那条的 IP 地址

输入 ipconfig

image-20221215204426682

然后填 export DISPLAY = 你的 IP:0;

然后退出编辑就行

运行

输入 zsh 再次启动加载终端就能生效了

image-20221215204911190

查看效果

0%