我目前正在尝试使用机器人操作系统制作一架自主无人机(活性氧)。为此,我安装了树莓派精简版(杰西)在一个树莓派 3目前正在使用ROS动力学在上面。因为它是树莓派精简版,安装时没有附带窗口管理器或桌面环境。我决定去Openbox 窗口管理器为了方便起见,并在其上安装了终端。我只需调用sudo startx
,窗口管理器就会打开,可以通过 访问Ctrl + alt + F2
。由于它是系统范围的终端,所以我还安装了多路复用器为了方便。我在特定窗格上运行 xserver,并在其他窗格上执行 ROS 工作。
现在,当我尝试从系统范围的终端运行调用 GUI 应用程序的命令时,我收到错误:
QxcbConnection: Could not connect to display
Aborted
现在有两种方法可以解决这个问题:
由于我的窗口管理器中安装了一个终端,我应该让 ROS 来处理这个问题吗?但是,我不知道如何更改窗口管理器内终端仿真器的环境,使其与系统范围终端上的环境相同。难道就和换壳一样简单吗?
实际上找到一种方法将我的 GUI 应用程序发送到当前正在运行该命令的 tmux 窗格
sudo startx
。如何将进程的父进程切换为另一个进程的父进程?
笔记:我肯定更喜欢第二种解决方案,因为它对我的工作流程来说更加优雅和高效。
答案1
在 GUI 环境的终端中,键入:
xhost +
在非 GUI 环境中,输入:
export DISPLAY="localhost:0"
然后,从非 GUI 环境启动的图形应用程序将显示在 GUI 环境中。
您可以阅读更多内容man xhost
另请参阅以下答案:这个xhost …
命令有什么作用?