如何从系统范围的终端连接到 xserver?

如何从系统范围的终端连接到 xserver?

我目前正在尝试使用机器人操作系统制作一架自主无人机(活性氧)。为此,我安装了树莓派精简版(杰西)在一个树莓派 3目前正在使用ROS动力学在上面。因为它是树莓派精简版,安装时没有附带窗口管理器或桌面环境。我决定去Openbox 窗口管理器为了方便起见,并在其上安装了终端。我只需调用sudo startx,窗口管理器就会打开,可以通过 访问Ctrl + alt + F2。由于它是系统范围的终端,所以我还安装了多路复用器为了方便。我在特定窗格上运行 xserver,并在其他窗格上执行 ROS 工作。

现在,当我尝试从系统范围的终端运行调用 GUI 应用程序的命令时,我收到错误:

QxcbConnection: Could not connect to display
Aborted

现在有两种方法可以解决这个问题:

  1. 由于我的窗口管理器中安装了一个终端,我应该让 ROS 来处理这个问题吗?但是,我不知道如何更改窗口管理器内终端仿真器的环境,使其与系统范围终端上的环境相同。难道就和换壳一样简单吗?

  2. 实际上找到一种方法将我的 GUI 应用程序发送到当前正在运行该命令的 tmux 窗格sudo startx。如何将进程的父进程切换为另一个进程的父进程?


笔记:我肯定更喜欢第二种解决方案,因为它对我的工作流程来说更加优雅和高效。

答案1

在 GUI 环境的终端中,键入:

xhost +

在非 GUI 环境中,输入:

export DISPLAY="localhost:0"

然后,从非 GUI 环境启动的图形应用程序将显示在 GUI 环境中。

您可以阅读更多内容man xhost

另请参阅以下答案:这个xhost …命令有什么作用?

相关内容