Pergunta
I usar a tela de persistir a minha sessão de trabalho e conectar-se à mesma sessão a partir de múltiplas máquinas. Como posso SSH e configuração de tela de tal forma que a variável XDISPLAY dentro minha sessão de tela persistente é sempre definido para a máquina Atualmente, estou conectando a partir de?
ie. Eu iniciar a sessão de tela no trabalho e uso gvim, que usa o servidor X em execução na minha máquina de trabalho. Mais tarde, eu ligar para a mesma sessão de casa e também quero usar gvim. Mas desta vez, eu quero gvim para usar o servidor X na minha máquina de casa. Eu percebo que eu poderia atualizar manualmente XDISPLAY cada vez que se conectar de uma máquina diferente, mas eu prefiro ter um sistema automatizado.
Os pontos de bónus se eu posso realmente movimento gvim da minha máquina de trabalho para minha máquina de casa enquanto estiver em execução. Tentei xmove mas nunca poderia obtê-lo para jogar bonito.
Solução
A seguir é uma solução manual, mas não há nenhuma razão você não poderia usar um alias ou um script para tê-lo feito automagicamente quando você faz logon remotamente.
Assumindo que o seu shell local define a variável DISPLAY de forma adequada,
você poderia usar screen -X
para enviar os seguintes commads ao seu ecrã remoto antes
conexão.
# set future remote shells started by screen to have the correct XDISPLAY
% screen -X "setenv XDISPLAY $DISPLAY" #...
# set up the keystroke F1 to update the XDISPLAY in current shells
% screen -X "bindkey -k k1 stuff export XDISPLAY=$DISPLAY\015" #...
Se você sabe que todas as suas janelas foram deixadas em um reservatório (não um editor de correr ou algo assim), você poderia usar :at
para mudar o XDISPLAY
em vez de uma chave de ligação:
# update the XDISPLAY in all current windows
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #...
Como alternativa, se você sabe alguma maneira de agarrar valor variável de ambiente de um processo pai, então você poderia usar isso em conjunto com gancho prompt do shell para o valor da garra da tela do XDISPLAY (como definido por setenv) e atualizá-lo para o shell.
Outras dicas
Não há nenhuma maneira "trivial" para variáveis ??de ambiente de mudança em processos estrangeiros.
Uma solução simples pode ser a persistir o seu XDISPLAY
em um arquivo no login e usar um PROMPT_COMMAND
ao ler este arquivo antes de imprimir o próximo prompt.
Para mover aplicativos X em torno de olhar para algo como X11vnc
ou Xvnc
Eu também estou interessado na resposta para isso. Não deveria ser possível listar os processos SSH para o usuário classificadas segundo tempo e gato o ambiente para esse processo talvez?