Nella sessione tmux, non è possibile connettersi al server X dopo ssh'ing


10

Al lavoro, ho un desktop con un monitor e alcune sessioni di tmux in esecuzione. A casa, mi collego spesso a quel desktop e accedo alle mie sessioni di tmux in esecuzione. Quando ssh da casa, non voglio usare X11, quindi non uso la -Xbandiera. Quando torno al lavoro (dopo averlo usato da casa) e utilizzo quelle sessioni tmux sul desktop, non posso più fare nulla che possa generare una GUI. Non riesco ad aprire i file in evince. Quando provo ad usare matplotlib, ricevo un : cannot connect to X servermessaggio.

Dopo aver avviato e aperto una sessione tmux esistente da casa, come posso ricollegare in seguito la possibilità di aprire gli elementi della GUI sul desktop?

Lo ssh'ing da casa sembra far dimenticare alla sessione di tmux che può generare elementi della GUI.

MODIFICARE:


Un po 'confuso. Stai usando la -Xbandiera adesso o no? Puoi fare cose X11 solo tramite SSH se è impostato.
Anko,

Dispiace per la confusione. Non uso mai la bandiera -X, da nessuna parte. Non intendo fare cose X11 tramite SSH. Intendo solo usare X11 sul mio desktop, dove vive la sessione di tmux. Aggiornerò la domanda originale.
Chrisdembia,

Risposte:


4

Tutto quello che devo fare è impostare la variabile di ambiente DISPLAY su: 0.0. Penso che il problema fosse che sto usando il guscio di pesce, e ho bisogno di usare il flag -x per impostare quando faccio questo:

set -x DISPLAY :0.0

3
Si noti che il valore corretto per DISPLAYpotrebbe essere diverso da :0.0. Un modo rapido per scoprirlo è creare una nuova finestra di tmux e echo $DISPLAYlì.
j08lue,

1
Sto solo estendendo il commento da @ j08lue; nel mio caso è echo $DISPLAYtornato localhost:10.0e correre ha set DISPLAY localhost:0.0fatto il trucco.
IsaacS

1
Qualcuno conosce una versione bashequivalente o cross-shell? set -xaumenta solo la verbosità per me in bash. @IsaacS, dovevi set DISPLAY localhost:10.0invece o hai localhost:0.0lavorato per te?
acqua ghiacciata,

4
Su bash, dovresti essere in grado di usare export DISPLAY=:0.0.
Chrisdembia,

1
Non mi piace questa soluzione, dal momento che devo farlo per ogni nuova finestra per il resto della sessione (che dura settimane per me). E succede anche quando torno sul mio sistema X11 principale creando nuove finestre. Come possiamo far sì che tmux smetta di disinserire $DISPLAY?
nealmcb,

4

Ho avuto lo stesso problema. Di solito lo uso tmuxcome parte di un ambiente desktop X11 multi-monitor, e talvolta ssh in un Chromebook, che non supporta X11 o set $DISPLAY. La risposta di @chrisdembia funziona, ma richiede di cambiare DISPLAYin ogni nuova finestra per il resto della sessione di tmux, il che è una seccatura.

Una soluzione permanente è rimuovere DISPLAYdalla update-environmentvariabile tmux nelle impostazioni di tmux. Puoi vedere il tuo valore attuale con questo comando:

tmux show-options -g update-environment

Per rimuoverlo, ho aggiunto questa riga al mio ~/.tmux.conffile, incluso tutto tranne DISPLAY:

set-option -g update-environment "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"

Questo è ulteriormente spiegato in Ripristina la variabile DISPLAY della shell in una sessione tmux su ssh , il che spiega perché DISPLAYè presente di default, per un diverso caso d'uso comune.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.