Bei der Arbeit habe ich einen Desktop mit einem Monitor und ein paar laufenden tmux-Sitzungen. Zu Hause ssh ich häufig auf diesen Desktop und gehe in meine laufenden tmux-Sitzungen. Wenn ich von zu Hause ssh, kann ich nicht möchte X11 verwenden, so dass ich das nicht verwenden -X
Flagge. Wenn ich wieder zur Arbeit gehe (nachdem ich von zu Hause aus ssh'ing habe) und diese tmux-Sitzungen auf dem Desktop verwende, kann ich nichts mehr tun, was eine GUI hervorbringen würde. Ich kann keine Dateien öffnen. Wenn ich versuche, matplotlib zu verwenden, erhalte ich eine : cannot connect to X server
Nachricht.
Wie kann ich nach dem Ssh'ing und Öffnen einer vorhandenen tmux-Sitzung von zu Hause aus die Fähigkeit zum Öffnen von GUI-Inhalten auf dem Desktop wieder herstellen?
Das ssh'ing von zu Hause scheint die tmux-Sitzung vergessen zu lassen, dass es GUI-Zeug erzeugen kann.
BEARBEITEN:
-X
jetzt die Flagge oder nicht? Sie können X11-Inhalte nur über SSH ausführen, wenn dies festgelegt ist.Antworten:
Ich muss lediglich die Umgebungsvariable DISPLAY auf: 0.0 setzen. Ich denke, das Problem war, dass ich die Fischschale verwende, und ich muss das Flag -x verwenden, um dies zu setzen:
quelle
DISPLAY
möglicherweise von abweicht:0.0
. Eine schnelle Möglichkeit, dies herauszufinden, besteht darin, ein neues tmux-Fenster zu erstellenecho $DISPLAY
.echo $DISPLAY
zurückgekehrtlocalhost:10.0
und Laufenset DISPLAY localhost:0.0
hat den Trick gemacht.bash
gleichwertige oder eine Cross-Shell-Version?set -x
erhöht nur die Ausführlichkeit für mich inbash
. @IsaacS, mussten Sieset DISPLAY localhost:10.0
stattdessen oder habenlocalhost:0.0
Sie für Sie gearbeitet?export DISPLAY=:0.0
.$DISPLAY
?Ich hatte das gleiche Problem. Normalerweise verwende ich
tmux
als Teil einer X11-Desktopumgebung mit mehreren Monitoren und ssh manchmal von einem Chromebook, das X11 oder Set nicht unterstützt$DISPLAY
. Die Antwort von @chrisdembia funktioniert, erfordert jedoch das ÄndernDISPLAY
in jedem neuen Fenster für den Rest der tmux-Sitzung, was schmerzhaft ist.Eine dauerhafte Lösung besteht darin,
DISPLAY
dieupdate-environment
Variable tmux in den Einstellungen von tmux zu entfernen . Mit diesem Befehl können Sie Ihren aktuellen Wert anzeigen:Um es zu entfernen, habe ich diese Zeile zu meiner
~/.tmux.conf
Datei hinzugefügt , einschließlich allem außerDISPLAY
:Dies wird unter Zurücksetzen der Shell-DISPLAY-Variablen in einer tmux-Sitzung über ssh näher erläutert. Dies erklärt, warum
DISPLAY
es standardmäßig einen anderen allgemeinen Anwendungsfall gibt.quelle