wsl图形化界面安装踩坑

安装wsl后只有终端界面太单调了,遂网上寻找给Ubuntu添加图形界面的方法。中间遇见了一些坑,记下来以备查阅。

主要参考:WSL2中使用VcXsrv实现xfce4图形界面+声音传输 - 知乎

VcXsrv安装与配置

从SourceForge上下载最新的即可,

VcXsrv Windows X Server download | SourceForge.net

网站内会保持更新。

我下载的是vcxsrv-64.1.20.14.0.installer.exe,直接安装即可。

安装完成之后在开始菜单搜索或者在其文件夹里找到 xlaunch.exe并启动

image-20250104213215978

配置启动设置时,窗口模式使用 One large window,并在 Extra settings里勾选 Disable access control其他配置选择默认。

启动的窗口此时保持全黑。

image-20250104213556580

并且一定要给VcXsrv设置通过防火墙。

启动一次xlaunch后在开始菜单里搜索 允许应用通过windows防火墙,其中VcXsrv windows xserver一定要把专用和公用都设置上,不然后续会出现无法连接的情况。

image-20250104214035451

配置与启动xfce4

安装xfce4

1
$ sudo apt install -y xfce4

下载好后配置 DISPLAY[环境变量] ,这里有许多坑。

  1. 直接启动会出现如下问题
1
2
3
4
5
6
7
DESKTOP-14VK3K3%:~$ startxfce4
/usr/bin/startxfce4: X server already running on display :0.0
xrdb: Connection refused
xrdb: Can't open display ':0.0'
Unable to init server: Could not connect: Connection refused
xfce4-session: Cannot open display: .
Type 'xfce4-session --help' for usage.

没有配置ip地址和端口,或者直接配置成0:0是不能顺利启动。原因是WSL2其实是用Hyper-V技术实现的一个虚拟机,和WSL1的工作原理不一样。

  1. 配置 DISPLAY信息
1
2
3
4
5
6
7
8
9
10
# 首先需要查看Windows系统和WSL2通信使用的虚拟网卡地址
$ sudo vim /etc/resolv.conf
# nameserver后面的地址就是Windows系统虚拟网卡的地址,记一下,同时需要取消下面两行内容的注释,禁用自动重新生成配置文件,否则重启后这个地址会变
[network]
generateResolvConf = false


$ vim ~/.bashrc
# 在文件最后追加下面内容,地址使用上面查看到的
export DISPLAY=192.168.112.1:0

或者使用下面的配置来动态获取ip信息

1
2
3
4
5
# 自动在对应文件中检索相应信息
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"

# 下面的效率更高。使用这两种就不用去掉/etc/resolv.conf文件中那两行的注释
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
  1. 同时,如果是是使用最新的Ubuntu系统,也就是ubuntu 22.04或者之后的,需要在.bashrc加入export WAYLAND_DISPLAY=$DISPLAY,因为

ubuntu22默认使用WAYLAND而不是x11作为显示服务。之后记得source ~/.bashrc 保存一下配置。

  1. 如果上面都没起效,可以看看wsl版本是否有问题, 在powershell里输入wsl update更新一下。当然如果是现在开始弄wsl的大概率是最新版本。

图形界面显示问题

折腾好后xlaunch的界面仍然是一片黑

image-20250105215526302

但是任务栏里却有Ubuntu的面板

image-20250105215618102

除了浏览器,其余应用,终端,文件管理器等都能正常使用。屏幕最上面还有横栏

image-20250106002134830

启动时的报错信息如下,每次点击应用都会增加报错,估计是因为没有在正确的屏幕上显示。

1
2
3
4
5
6
7
8
9
10
DESKTOP-14VK3K3% startxfce4
/usr/bin/startxfce4: X server already running on display :0
gpg-agent: a gpg-agent is already running - not starting a new one
Another Window Manager (Weston WM) is already running on screen :0.0
To replace the current window manager, try "--replace"

(xfwm4:1871): xfwm4-WARNING **: 22:49:38.642: Could not find a screen to manage, exiting
xfsettingsd: Another clipboard manager is already running.

(xfsettingsd:1876): xfsettingsd-WARNING **: 22:49:38.771: Failed to get the _NET_NUMBER_OF_DESKTOPS property.

像是没有和xserver的服务器连接。

另一方面,安装wslg的应用并不能完整的体验图形化linux的使用,里面只有分散的图形化程序,并非完全的linux桌面。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以上是分割线

最近折腾neovim发现自己之前稀里糊涂的安装了zsh作为shell,bash根本就不管事,我还把所有的配置都放在了bashrc里,也难怪没有图形界面没有正常出现。。。。麻烦的是后面还得自己把配置都写进zshrc。。

欢迎关注我的其它发布渠道