新特性推介:在WSL上运行 Linux GUI 应用
目前WSL2的功能越来越强大,新版WSL2已经可以支持在Windows上运行为Linux开发的GUI应用,官方的宣传话语是:
WSL 2 使 Linux GUI 应用程序在 Windows 上使用起来原生且自然。
- 从 Windows 的“开始”菜单启动 Linux 应用
- 将 Linux 应用固定到 Windows 任务栏
- 使用 alt-tab 在 Linux 应用和 Windows 应用之间切换
- 跨 Windows 应用和 Linux 应用剪切并粘贴
现在,可将 Windows 应用程序和 Linux 应用程序集成到工作流中,以获得无缝的桌面体验。
换句话说就是可以在Windows的命令行方式启动的WSL Linux中,通过命令可以启动GUI应用,例如文本编辑器、FireFox、Chrome等,这些GUI应用可以在Windows中打开界面,并在Windows任务栏中显示应用图标,就仿佛是Windows原生GUI应用一样。
不过要使用这个新特性,有一些先决条件:
- Windows系统版本需要为Windows 10 版本19044以上或Windows 11
- 已安装使用vGPU的驱动程序。这样GUI应用可以使用虚拟GPU(vGPU),受益于硬件加速OpenGL渲染。
第二条实测非必需,可能我本机安装的GPU驱动已满足要求,如果运行GUI应用不太流畅的话,可以考虑升级支持vGPU的驱动。
不过在Windows上直接启动的Linux GUI应用的界面跟Windows原生应用不一样,跟在Linux桌面系统中运行的界面也不一样,Windows应该是对Linux应用的UI做了一层转换,基本功能没有问题,未做深入测试。显示效果如下图所示:
注意下方任务栏,Linux的应用图标上会有一个企鹅图标

如果对Windows上的Linux GUI的界面渲染风格不太喜欢,或者想体验原汁原味的Linux GUI风格的话,可以考虑本文今天的重点:为WSL2中的Ubuntu安装桌面并通过Windows远程桌面连接
可能还有人有疑问,既然要使用Linux桌面,为什么不直接用虚拟机,VMVare和VirtualBox也都很方便啊。实际上WSL是Windows内置的专为虚拟Linux而生的,轻量快速,具有无可比拟的优势:
- 安装方便。通过WSL只需一个安装命令即可安装,全程无人值守,安装速度快,装完即可用。想重装系统就两个命令的事,卸载+安装,方便到爆。目前WSL支持了最新的几个Ubuntu版本,还有几个其他的Linux分发版,可以通过wsl -l --online查看支持的Linux系统。
- 启动迅速。通过WSL启动Ubuntu只需要不到10s(机器性能好的话还会更快),在启动速度上完爆虚拟机。
- 启动后Windows和WSL中的Linux即可以无障碍的互访,完全不用像虚拟机那样还需要设置网络桥接。
- 启动后会自动挂载本机上的所有磁盘分区,在Windows和WSL的Linux之间传输文件非常方便。你甚至可以直接在WSL命令行里cd到Windows磁盘中的sh脚本文件,通过vi或vim改完后直接保存,连传输文件都省了。
从未安装过WSL的童鞋可以参考我之前的文章:在Win10中安装Ubuntu
本文默认读者已在WSL中安装了Ubuntu。
好了,进入本文的重点。
开始之前
非常推荐在开始前先更新一下WSL,新版本WSL在多数方面优于旧版。在Windows的命令提示符(以下简称命令提示符)窗口中输入以下命令:
wsl --update
启动Ubuntu
如果ubuntu是默认系统,直接输入wsl启动:
wsl
如果不是,通过wsl+分发版名称的方式启动:
wsl Ubuntu20.04
启动成功后会进入wsl(也即ubuntu)的命令提示符中,在此命令行中输入的命令均在ubuntu中执行。
以下章节中的命令无特殊说明的话均表示在wsl(Ubuntu)的命令提示符中输入和执行
更新软件包列表
如果我们想安装最新版的软件的话,可以考虑先更新一下软件包列表,以便后续安装桌面时可以下载到最新的版本。同时也最好升级一下系统内已有的组件,万一最新桌面需要依赖新版本的系统组件呢
sudo apt update
sudo apt upgrade -y
安装xfce4桌面
众所周知,Ubuntu下的桌面系统是有很多的,常用的桌面包如下:
- ubuntu-desktop:ubuntu标准桌面包,使用gnome桌面系统
- kubuntu-desktop:KDE桌面环境
- xubuntu-desktop:xfce桌面环境
从桌面功能丰富度来说,首选的是标准的gnome桌面环境,但是我实测了gnome+xrdp在远程桌面下的稳定性实在是差点意思,经常性的闪退和闪屏,日常操作都保证不了,所以更推荐轻量级的xfce桌面环境,虽然美观度上比不了gnome和KDE,但是胜在稳定,功能也够用。
安装xfce可以通过直接安装桌面软件包,桌面软件包通常包含了桌面环境及所需的其他依赖:
sudo apt install xubuntu-desktop -y
也可以单独安装xfce:
sudo apt install xfce4 xfce4-goodies -y
安装xrdp(远程桌面连接)
xrdp是提供远程桌面连接功能的,无论你上面安装了Ubuntu的哪个桌面环境,想要通过Windows远程桌面来连接的话,都需要安装xrdp。
sudo apt install xrdp -y
配置xrdp
特别说明:本章节及之后会使用systemctl命令来配置服务,该指令在旧版的wsl中不支持,因为旧版的wsl默认不是使用systemd来作为服务管理的,如果该指令不可用,尝试以下三种办法:
- 【推荐】升级wsl2:wsl --update
- 【推荐】使用systemctl的等价命令service,service能达到和systemctl基本相同的效果,只是命令参数顺序不一样,可以参考此文章查看两个命令的对应:https://www.cnblogs.com/a5idc/p/13752839.html
- 【不推荐】安装systemd,网上有教程
配置xrdp使用xfce4作为默认桌面环境:
远程桌面连接使用当前用户登录:
echo "xfce4-session" > ~/.xsession
远程桌面连接使用其他用户登录:
sudo echo "xfce4-session" > /home/<user>/.xsession
【可选】配置xrdp的端口号,xrdp默认的端口号是3389,有可能被windows占用了,如果远程连接失败的话可以修改xrdp的端口号:
sudo vi /etc/xrdp/xrdp.ini
在打开的文本编辑界面中找到port=3389,将其改为其他端口号,例如3993,保存。
如果xrdp已经启动了,则需要重新启动xrdp:
sudo systemctl restart xrdp
启动xrdp
sudo systemctl start xrdp
设置xrdp开机启动:
sudo systemctl enable xrdp
远程桌面连接
启动Wdinwos远程桌面连接应用
通过开始菜单搜索“远程桌面连接”或通过Win+R输入mstsc打开远程桌面连接。

连接WSL2
在远程桌面连接中输入“localhost:3389”,如果是新版的WSL2,可以直接使用localhost来连接,如果不是,则需要先在Ubuntu中使用ifconfig查询Ubuntu的IP地址,然后在此处使用IP地址来连接。xrdp的默认端口号是3389,如果使用3389端口连接不上的话,可以考虑修改一下xrdp的端口号。我安装后使用3389连接不上,我改成了3993端口。

登录Ubuntu
连接成功后进入蓝色的xrdp登录页面,如下:

Session保持默认的Xorg,输入Ubuntu的用户名和密码之后,稍等片刻,就进入xfce桌面了:
