2008-10-29 14 views
9

Uso la pantalla para mantener mi sesión de trabajo y conectarme a la misma sesión desde varias máquinas. ¿Cómo puedo configurar SSH y una pantalla para que la variable XDISPLAY dentro de mi sesión de pantalla persistente esté siempre configurada en la máquina desde la que estoy actualmente conectando?SSH, pantalla y XDISPLAY

es decir. Comienzo la sesión de la pantalla en el trabajo y uso gvim, que usa el servidor X que se ejecuta en mi máquina de trabajo. Más tarde, me conecto a la misma sesión desde mi casa y también quiero usar gvim. Pero esta vez, quiero que gvim use el servidor X en mi máquina doméstica. Me doy cuenta de que podría actualizar manualmente XDISPLAY cada vez que me conecte desde una máquina diferente, pero prefiero tener un sistema automatizado.

Puntos de bonificación si realmente puedo mover gvim de mi máquina de trabajo a la máquina de mi casa mientras está en funcionamiento. Intenté xmove pero nunca pude jugar bien.

Respuesta

5

La siguiente es una solución manual, pero no hay razón por la que no se podía utilizar un alias o un script de tener que hacer automágicamente al iniciar sesión de forma remota en.

Suponiendo que el shell local de la variable DISPLAY apropiadamente, puede usar screen -X para enviar los siguientes comandos a la pantalla remota antes de conectar .

# 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" #... 

Si sabe que todas las ventanas se dejaron en una cáscara (no es un editor de correr o algo así), se puede usar :at cambiar el XDISPLAY en lugar de una clave de enlace:

# update the XDISPLAY in all current windows 
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #... 

Alternativamente, si conoce alguna forma de captar el valor de la variable de entorno de un proceso padre, puede usarlo junto con el gancho de aviso de su shell para tomar el valor de XDISPLAY de SCREEN (como lo establece setenv) y actualizarlo para el shell.

0

También estoy interesado en la respuesta para esto. ¿No debería ser posible enumerar los procesos de SSH para su usuario ordenados por tiempo y quizás el entorno para ese proceso?

3

No hay una manera "trivial" de cambiar variables de entorno en procesos foráneos.

Una solución directa puede ser persistir XDISPLAY en un archivo al iniciar sesión y utilizar un PROMPT_COMMAND para leer este archivo antes de imprimir el siguiente mensaje.


Para mover las aplicaciones X alrededor vistazo a algo así como X11vnc o Xvnc.