在 tmux 会话中,ssh 后无法连接到 X 服务器

在 tmux 会话中,ssh 后无法连接到 X 服务器

在工作中,我有一个带有显示器的桌面和一些正在运行的 tmux 会话。在家里,我经常 ssh 进入该桌面并输入正在运行的 tmux 会话。当我从家里 ssh 时,我会这样做不是想使用X11,所以我不使用该-X标志。当我回到工作岗位(在家里使用 ssh 后)并在桌面上使用这些 tmux 会话时,我无法再执行任何会生成 GUI 的操作。我显然无法打开文件。当我尝试使用 matplotlib 时,我收到一条: cannot connect to X server消息。

在 ssh 并从家里打开现有的 tmux 会话后,我以后如何重新附加在桌面上打开 GUI 内容的功能?

从家里进行 ssh 似乎使 tmux 会话忘记了它可以生成 GUI 内容。

编辑:

答案1

我遇到过同样的问题。我通常用作tmux多显示器 X11 桌面环境的一部分,有时从不支持 X11 或 set 的 chromebook 进行 ssh 登录$DISPLAY。 @chrisdembia 的答案有效,但需要DISPLAY在 tmux 会话的其余部分的每个新窗口中进行更改,这很痛苦。

永久解决方案是从tmux 设置中的DISPLAYtmux 变量中删除。update-environment您可以使用以下命令查看当前值:

tmux show-options -g update-environment

为了删除它,我将此行添加到我的~/.tmux.conf文件中,包括除以下内容之外的所有内容DISPLAY

set-option -g update-environment "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"

这在以下位置有进一步解释:通过 ssh 在 tmux 会话中重置 shell DISPLAY 变量,这解释了为什么DISPLAY对于不同的常见用例默认存在。

答案2

我需要做的就是将 DISPLAY 环境变量设置为:0.0。我认为问题是我正在使用 Fish shell,并且在执行此操作时需要使用 -x 标志进行设置:

set -x DISPLAY :0.0

答案3

tmux 与 matplotlib 的斗争:

export MPLBACKEND='Agg'

相关内容