Tudo o que preciso fazer é definir a variável de ambiente DISPLAY para: 0.0. Eu acho que o problema é que eu estou usando o fish shell, e eu preciso usar o sinalizador -x para definir ao fazer isso:
set -x DISPLAY :0.0
No trabalho, tenho uma área de trabalho com um monitor e algumas sessões tmux em execução. Em casa, costumo frequentar a área de trabalho e entrar em minhas sessões tmux em execução. Quando eu ssh de casa, eu não quero usar o X11, então eu não uso o -X
bandeira. Quando volto ao trabalho (depois do ssh'ing de casa) e uso essas sessões do tmux no desktop, não consigo mais fazer nada que possa gerar uma GUI. Não consigo abrir arquivos no evince. Quando eu tento usar o matplotlib, recebo uma mensagem : cannot connect to X server
.
Após o ssh'ing e a abertura de uma sessão tmux existente a partir de casa, como recolocá-la posteriormente na área de trabalho da GUI?
O ssh'ing de casa parece fazer com que a sessão do tmux se esqueça que pode gerar coisas GUI.
EDITAR:
Eu tive o mesmo problema. Eu normalmente uso tmux
como parte de um ambiente de desktop X11 de vários monitores e, às vezes, ssh de um Chromebook, que não suporta X11 ou defina $DISPLAY
. A resposta de @chrisdembia funciona, mas requer a alteração de DISPLAY
em cada nova janela para o resto da sessão do tmux, o que é uma dor.
Uma solução permanente é remover DISPLAY
da variável tmux update-environment
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 arquivo ~/.tmux.conf
, 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 um tmux sessão por ssh , o que explica por que o DISPLAY
está lá por padrão, para um caso de uso comum diferente.