在工作中,我有一个带有显示器的桌面和一些正在运行的 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 设置中的DISPLAY
tmux 变量中删除。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'