解决 qt.qpa.xcb: could not connect to display 问题

2022/07/21更新

现在WSL2已经可以直接运行 Linux GUI 了!!!不再需要安装Xserver(XLaunch)之类的!!!
参考微软的官方教程:在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用

不过值得注意的是
如果之前在.bashrc中设置了用于在Xserver的显示命令,需要取消掉!即:

#export DISPLAY=xxx.xx.x.xx:0.0
#export LIBGL_ALWAYS_INDIRECT=
#export LIBGL_ALWASY_SOFTWARE=1

否则按照微软官方教程走下来,会发现运行gedit等程序会没有反应!!!


问题背景

系统:微软子系统WSL中的Ubuntu20.04
安装了Ros系统,为了在WSL上运行图形化程序,安装了Xserver,在测试ROS时发生了报错
主要是参考这篇文章

问题描述

在参考前面那篇文章运行rosrun turtlesim turtlesim_node命令时,出现错误:

qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are:...

解决方案

这个问题出现的原因是ROS的程序无法连接到图形化界面,问题在于这块代码:

export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=
export LIBGL_ALWASY_SOFTWARE=1

其中export DISPLAY=:0.0这一句有问题(也许作者运行时没问题,但我在自己电脑上运行时会报错),这里需要加上自己的WSL的IP地址,查看WSL的IP的方法是打开命令行(cmd),输入ipconfig
会显示解决 qt.qpa.xcb: could not connect to display 问题_第1张图片
也就是说,需要写成export DISPLAY=xxx.xx.xx.xx(IP):0.0
此外,:0.0这里跟XLaunch设置的显示器编号(Display Number)需要保持一致,默认为-1,等同于0.
如果这里设置为了其他数字,比如1,则上面的设置需要改为export DISPLAY=xxx.xx.xx.xx(IP):1.0
解决 qt.qpa.xcb: could not connect to display 问题_第2张图片
另外,下图中的第三个需要勾选
解决 qt.qpa.xcb: could not connect to display 问题_第3张图片

参考

[1] WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo

你可能感兴趣的:(ubuntu)