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.

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top