Na sessão tmux, não é possível conectar ao servidor X após ssh'ing

10

No trabalho, tenho uma área de trabalho com um monitor e algumas sessões de tmux em execução. Em casa, frequentemente ssh nessa área de trabalho e entro em minhas sessões de tmux em execução. Quando ssh em casa, não quero usar o X11, portanto não uso a -Xbandeira. Quando volto ao trabalho (depois de ssh'ing de casa) e uso essas sessões do tmux na área de trabalho, não posso mais fazer nada que geraria uma GUI. Não consigo abrir arquivos no evince. Quando tento usar o matplotlib, recebo uma : cannot connect to X servermensagem.

Após ssh'ing e abrir uma sessão tmux existente a partir de casa, como eu recolojo posteriormente a capacidade de abrir coisas da GUI na área de trabalho?

O ssh'ing de casa parece fazer a sessão tmux esquecer que pode gerar coisas da GUI.

EDITAR:

chrisdembia
fonte
Um pouco confuso. Você está usando a -Xbandeira agora ou não? Você só pode fazer coisas X11 através do SSH se estiver definido.
Anko
Desculpe pela confusão. Eu nunca uso a bandeira -X em qualquer lugar. Eu não pretendo fazer coisas X11 através do SSH. Eu pretendo apenas usar o X11 na minha área de trabalho, onde a sessão do tmux realmente vive. Vou atualizar a pergunta original.
Chrisdembia

Respostas:

4

Tudo o que preciso fazer é definir a variável de ambiente DISPLAY para: 0.0. Eu acho que o problema foi que eu estou usando o shell de peixe e preciso usar o sinalizador -x para definir ao fazer isso:

set -x DISPLAY :0.0
chrisdembia
fonte
3
Observe que o valor correto para DISPLAYpode ser diferente de :0.0. Uma maneira rápida de descobrir é criar uma nova janela do tmux e echo $DISPLAYlá.
J08lue
1
Apenas estendendo o comentário de @ j08lue; no meu caso, echo $DISPLAYvoltou localhost:10.0e correr set DISPLAY localhost:0.0fez o truque.
IsaacS 14/05
1
Alguém conhece uma bashversão equivalente ou cross-shell? set -xapenas aumenta a verbosidade para mim bash. @IsaacS, você teve set DISPLAY localhost:10.0que localhost:0.0trabalhar ou trabalhou para você?
icedwater
4
No bash, você deve poder usar export DISPLAY=:0.0.
Chrisdembia
1
Não gosto dessa solução, pois tenho que fazer isso para todas as novas janelas do resto da sessão (que dura semanas para mim). E isso acontece mesmo quando estou de volta ao meu sistema X11 principal, criando novas janelas. Como podemos fazer com que o tmux pare de desabilitar $DISPLAY?
Nealmcb 16/10
4

Eu tive o mesmo problema. Normalmente, uso tmuxcomo parte de um ambiente de área de trabalho X11 com vários monitores e, às vezes, ssh de um chromebook, que não é compatível com X11 ou definido $DISPLAY. A resposta de @chrisdembia funciona, mas requer alterações DISPLAYem cada nova janela para o restante da sessão do tmux, o que é uma dor.

Uma solução permanente é remover DISPLAYda update-environmentvariável tmux nas configurações do tmux. Você pode ver seu valor atual com este comando:

tmux show-options -g update-environment

Para removê-lo, adicionei esta linha ao meu ~/.tmux.confarquivo, incluindo tudo, exceto DISPLAY:

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

Isso é explicado em Redefinir a variável DISPLAY do shell em uma sessão tmux sobre ssh , o que explica por que DISPLAYexiste por padrão, para um caso de uso comum diferente.

nealmcb
fonte