/ / SSH, screen e XDISPLAY - linux, ssh, gnu-screen

SSH, schermo e XDISPLAY - linux, ssh, gnu-screen

Uso lo schermo per mantenere la mia sessione di lavoro e connettermi alla stessa sessione da più macchine. Come posso impostare SSH e schermo in modo tale che la variabile XDISPLAY dentro la mia sessione di schermo persistente è sempre impostata sulla macchina da cui mi sto connettendo?

cioè.Avvio la sessione dello schermo al lavoro e uso gvim, che usa il server X in esecuzione sulla mia macchina da lavoro. Successivamente, mi collego alla stessa sessione da casa e voglio anche usare gvim. Ma questa volta, voglio che gvim usi il server X sulla mia macchina domestica. Mi rendo conto che potrei aggiornare manualmente XDISPLAY ogni volta che mi collego da una macchina diversa, ma preferisco avere un sistema automatizzato.

Punti bonus se posso davvero mossa gvim dalla mia macchina da lavoro alla mia macchina domestica mentre è in esecuzione. ho provato xmove ma non riuscirò mai a farlo funzionare bene.

risposte:

5 per risposta № 1

Quella che segue è una soluzione manuale, ma non c'è motivo per cui non potresti usa un alias o uno script per farlo automaticamente quando accedi da remoto.

Supponendo che la tua shell locale imposti la variabile DISPLAY in modo appropriato, potresti usare screen -X per inviare prima i seguenti comandi al tuo schermo remoto collegamento.

# 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=$DISPLAY15" #...

Se sai che tutte le tue finestre sono state lasciate in una shell (non un editor in esecuzione o qualcosa del genere), potresti usare :at cambiare il XDISPLAY piuttosto che un'associazione di tasti:

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

In alternativa, se conosci un modo per afferrare un filevalore della variabile di ambiente del processo genitore, allora potresti usarlo insieme al prompt hook della tua shell per prendere il valore SCREEN di XDISPLAY (come impostato da setenv) e aggiornarlo per la shell.


3 per risposta № 2

Non esiste un modo "banale" per modificare le variabili di ambiente nei processi esterni.

Una soluzione semplice potrebbe essere quella di persistere nel tuo file XDISPLAY in un file all'accesso e utilizzare un file PROMPT_COMMAND per leggere questo file prima di stampare il prompt successivo.


Per spostare le applicazioni X, guarda qualcosa di simile X11vnc o Xvnc.


0 per risposta № 3

Sono anche interessato alla risposta per questo. Non dovrebbe essere possibile elencare i processi SSH per il tuo utente ordinati per ora e forse cat l'ambiente per quel processo?