为了能在Windows wsl2 中运行GUI程序, 踩下不少坑, 反复重装了不知多少次Ubuntu, 希望本文能给后来者一些帮助

相关阅读: Windows下使用wsl2打造极致开发环境

前情提示

解决方案

默认情况下, wsl2仅是命令行运行模式, 想要实现运行GUI应用, 有两种解决方案

1 安装Ubuntu桌面库, 启动远程连接服务器, 使用Windows自带的远程桌面连接(RDP) 连接

2 在Windows中安装X Server, 将GUI窗口信息转发给X Server

首先我尝试的是第一种方案, 具体步骤按照这篇教程来做

然而一开始我的Ubuntu版本是20.04, 使用这种方法登陆上Ubuntu后, RDP软件直接闪退

于是我重装了Ubuntu 18.04, 成功登陆上了Ubuntu桌面, 但在运行GUI程序时卡住, 可能是由于性能不足

于是开始尝试第二方案, 一开始使用Ubuntu 18.04, 但发现打开4个窗口时, 有三个窗口直接闪退

最终切换到Ubuntu 20.04, 使用方案二成功

配置步骤

Windows下安装X Server

这里选择开源免费的VcXsrv, 下载安装即可

然后默认VcXsrv分辨率有问题, 还需要修改DPI设置

找到安装目录, 分别对vcxsrv.exexlaunch.exe进行设置

dpi-setting

右键-属性-兼容性-更改高DPI设置-勾选替代高DPI缩放

Ubuntu下配置转发

.profile配置中加入

export WIN_IP=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`
export DISPLAY="${WIN_IP}:0.0"
export LIBGL_ALWAYS_INDIRECT=1

Windows下启动VcXsrv

运行XLunch, 第一步, 第二步选择默认

第三步勾选Disable access control
xlunch

Ubuntu下运行GUI程序

运行程序
run

可以看到正常打开窗口

若提示gnome-terminal not found 可直接通过sudo apt install gnome-terminal 安装

转载申请

知识共享许可协议

本文知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接