Pregunta

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

es decir. Comienzo la sesión de 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 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 XDISPLAY manualmente cada vez que me conecto 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á funcionando. Intenté xmove pero nunca pude hacerlo funcionar bien.

¿Fue útil?

Solución

La siguiente es una solución manual, pero no hay razón para que no use un alias o un script para que se realice de forma automática cuando inicie sesión de forma remota.

Suponiendo que su shell local establece la variable DISPLAY adecuadamente, puede usar la pantalla -X para enviar los siguientes puntos a su pantalla remota antes conectando.

# 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 sus ventanas quedaron en un shell (no un editor en ejecución o algo similar), puede usar : at para 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 capturar el valor de la variable de entorno del proceso principal, entonces puede usarlo junto con el enganche de solicitud de su shell para capturar el valor de PANTALLA de XDISPLAY (según lo establece setenv) y actualizarlo para la shell.

Otros consejos

No hay " trivial " Manera de cambiar las variables de entorno en procesos externos.

Una solución sencilla podría ser mantener su XDISPLAY en un archivo al iniciar sesión y usar un PROMPT_COMMAND para leer este archivo antes de imprimir el siguiente aviso.


Para mover aplicaciones de X alrededor, mira algo como X11vnc o Xvnc .

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top