问题
我是 Xshell 连接的 VirtualBox 的 Ubuntu16.04 版本
是因为我在命令行窗口启动 GUI 界面导致的
QXcbConnection: Could not connect to display localhost:17.0
rqt: cannot connect to X server localhost:.0
解释
17.0 是 DISPLAY 变量的值
关于DISPLAY 变量的解释,建议可以参考 Linux DISPLAY环境变量的妙用 文章格式有点乱,但戳中了正点.
解决方法
- 删掉 Docker 容器,在图形化桌面开启容器,因为这样默认分配到图形化桌面的显示器来显示
root@ubuntu:/home/walker# docker container rm kinetic -f root@ubuntu:/home/walker# docker run -itd --name kinetic --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" -v "/root/.ros/:/root/.ros/" osrf/ros:kinetic-desktop-full-xenial rqt
- 这个未经验证,是根据对 DISPLAY 的理解来推理的(请自己肉测)
1)查看图形化桌面的 DISPLAY 值
2)修改报错的那个终端的 DISPLAY 值为系统桌面的
若碰到 No protocol specified rqt: cannot connect to X server :1 提示,记得赋权限
root@ubuntu:/home/walker# echo ${DISPLAY}
:1
root@ubuntu:/home/walker# xhost +
access control disabled, clients can connect from any host
来源:oschina
链接:https://my.oschina.net/u/4385242/blog/3236797