В сеансе tmux невозможно подключиться к X-серверу после ssh'ing

10

На работе у меня рабочий стол с монитором и несколько запущенных сеансов tmux. Дома я часто захожу на этот рабочий стол и захожу в свои сеансы tmux. Когда я ssh из дома, я не хочу использовать X11, поэтому я не использую -Xфлаг. Когда я возвращаюсь на работу (после ssh'ing из дома) и использую эти сеансы tmux на рабочем столе, я больше не могу делать ничего, что порождает GUI. Я не могу открыть файлы в Evince. Когда я пытаюсь использовать matplotlib, я получаю : cannot connect to X serverсообщение.

После ssh'а и открытия существующего сеанса tmux из дома, как мне позже присоединить возможность открывать GUI на рабочем столе?

Похоже, что ssh'ing из дома заставляет сеанс tmux забыть, что он может порождать GUI.

РЕДАКТИРОВАТЬ:

chrisdembia
источник
Немного смущен. Используете ли вы -Xфлаг сейчас или нет? Вы можете делать X11 только через SSH, если он установлен.
Анко
Извините за путаницу. Я никогда нигде не использую флаг -X. Я не собираюсь делать вещи X11 через SSH. Я собираюсь использовать X11 только на своем рабочем столе, где фактически живет сессия tmux. Я обновлю оригинальный вопрос.
chrisdembia

Ответы:

4

Все, что мне нужно сделать, это установить переменную окружения DISPLAY в: 0.0. Я думаю, проблема заключалась в том, что я использую рыбную оболочку, и мне нужно использовать флаг -x, чтобы установить при этом:

set -x DISPLAY :0.0
chrisdembia
источник
3
Обратите внимание, что правильное значение для DISPLAYможет отличаться от :0.0. Быстрый способ узнать это - создать новое окно tmux и echo $DISPLAYтам.
J08lue
1
Просто расширяю комментарий от @ j08lue; в моем случае echo $DISPLAYвернулся localhost:10.0и работает set DISPLAY localhost:0.0сделал свое дело .
Исаак
1
Кто-нибудь знает bashэквивалент или версию кросс-оболочки? set -xпросто увеличивает многословие для меня в bash. @ IsaacS, ты должен был set DISPLAY localhost:10.0вместо этого или localhost:0.0работал на тебя?
ледяной воды
4
На Bash вы должны быть в состоянии использовать export DISPLAY=:0.0.
chrisdembia
1
Мне не нравится это решение, так как я должен делать это для каждого нового окна до конца сеанса (который длится для меня несколько недель). И это происходит, даже когда я возвращаюсь к своей основной системе X11, создавая новые окна. Как мы можем заставить tmux перестать сбрасывать $DISPLAY?
nealmcb
4

Я была такая же проблема. Я обычно использую tmuxкак часть настольной среды с несколькими мониторами X11, а иногда и ssh из chromebook, который не поддерживает X11 или набор $DISPLAY. Ответ @chrisdembia работает, но требует изменения DISPLAYв каждом новом окне до конца сеанса tmux, что является проблемой.

Постоянное решение - удалить DISPLAYиз update-environmentпеременной tmux в настройках tmux. Вы можете увидеть свое текущее значение с помощью этой команды:

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"

Это дополнительно объясняется в разделе Сброс переменной оболочки DISPLAY в сеансе tmux через ssh , которая объясняет, почему DISPLAYона существует по умолчанию, для другого распространенного варианта использования.

nealmcb
источник