如何在Windows10的WSL2上创建Linux GUI应用桌面快捷方式?
WSL2 无需打开终端直接启动Konsole等GUI应用的解决方案
问题原因
之前的操作失效有两个核心原因:
- 直接执行
wsl /usr/bin/konsole时,WSL调用的非交互式shell不会加载写在.bashrc里的DISPLAY等X11环境变量,导致Qt找不到显示服务报错 - 调用
wsl k.sh静默退出,是因为把konsole用&放到后台运行后,bash脚本执行完毕直接退出,WSL会默认销毁当前会话的所有子进程,konsole刚启动就被终止
解决方案步骤
1. 修正WSL端启动脚本
把编写的脚本调整后放到系统可执行路径下:
首先修改脚本内容,去掉后台运行的&,避免进程被提前销毁:
#!/usr/bin/env bash export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0 export LIBGL_ALWAYS_INDIRECT=1 exec /usr/bin/konsole
然后将脚本移动到WSL系统路径,添加执行权限:
sudo mv 你的脚本存放路径/k.sh /usr/local/bin/start-konsole sudo chmod +x /usr/local/bin/start-konsole
2. 测试Windows端调用命令
打开CMD执行以下命令,验证是否能正常启动konsole:
wsl -e bash -lc "start-konsole"
参数说明:
-e:指定WSL要执行的程序-l:让bash作为登录shell加载必要的环境配置-c:指定要执行的命令
3. 创建桌面快捷方式
- 右键Windows桌面空白处,选择「新建」→「快捷方式」
- 在「请键入对象的位置」输入框中填入刚才验证通过的命令:
wsl -e bash -lc "start-konsole" - 点击下一步,给快捷方式命名为「Konsole」,点击完成
- 可选:右键快捷方式选择「属性」,可以自定义图标、设置启动时最小化CMD窗口等
注意事项
- 启动前确保VcXsrv已经运行,且配置了「Disable access control」,防火墙放行VcXsrv的入站连接
- 如果使用的是最新版WSL,可开启WSLg功能,开启后所有安装的Linux GUI应用会自动在Windows开始菜单生成快捷方式,无需手动配置X11转发
内容的提问来源于stack exchange,提问作者yzhang
相关产品推荐
相关产品推荐

