在linux下运行图形程序需要Display Server,常见的Display Server包括较新的Wayland和使用广泛的Xorg,在wsl下也是如此。此教程使用Xorg。

Xorg的架构简单理解为一个Xserver来与操作系统/硬件驱动进行通信,和一个Xclient与图形程序通信。这一特点决定了Xserver需要运行在原生Windows上而非wsl内,再由wsl内的Xclient与这个原生Windows上的Xserver来实现图形程序的显示。

Windows上常见的Xserver包括Cygwin/X,VcXsrv和Xming。Xming的开源版本年久失修,不推荐使用。VcXsrv目前好评较多,但其multiwindow至今(v1.19.6.0)未能在win10上正确实现窗口预览 v1.20.1.4已经正常。Cygwin/X因为需要cygwin环境,相比前二者大一些。此教程使用Cygwin/X,但VcXsrv同样是个很好的选择。

安装Cygwin/X

前往Cygwin官网找到安装程序链接( setup-x86_64.exe或者setup-x86.exe)并下载。选择合适的镜像源(清华校内参见TUNA源说明)可以加速安装。我们需要的是X11分类下面的xorg-server软件包,单击它左边的“Skip”使其变成版本号,然后继续安装。

安装好后,创建一个Xwin的快捷方式,并添加参数:0 -multiwindow -listen tcp -noprimary。也就是说,如果安装在默认位置,Xwin的快捷方式应该指向:

C:\cygwin64\bin\XWin.exe :0 -multiwindow -listen tcp -noprimary

至此,点击此快捷方式即可运行Xserver。注意在启动任何GUI程序之前,需要先启动Xserver。

配置wsl

我们需要告知wsl内的程序,Xserver已经在本地启动。为此,需要将环境变量DISPLAY置为127.0.0.1:0。如果使用bash作为默认的shell,那么可以使用下面的命令自动设置该环境变量:

echo "export DISPLAY='127.0.0.1:0'" >> ~/.bashrc

修改过bashrc后重开wsl,就可以使用图形程序了。

发表评论