it-swarm.com.de

X11-Weiterleitung über Gnu-Bildschirm, ist das möglich?

Ich benutze ständig GNU Screen. Aber ich habe versucht herauszufinden, ob es eine Möglichkeit gibt, X11-Apps zum Weiterleiten über den Bildschirm zu bewegen, wenn ich sshing (ist das ein Wort?). Wenn ich derzeit versuche, "gedit" über den Bildschirm auszuführen, wird es auf meinem "Server" -Computer und nicht auf meinem Client geöffnet. Wenn ich außerhalb des Bildschirms dasselbe mache, ist alles in Ordnung. Aber ich möchte, dass alles in Ordnung ist, wenn ich auch den Bildschirm benutze!

Vielen Dank!

PS: Ich habe das Problem gegoogelt und sehe die Erwähnung von xmove, aber ich kann das Paket, das xmove enthält, nicht auf meinem Ubuntu finden. (Ubuntu 10.10)

32
Sandro

Um dies manuell zu tun, überprüfen Sie Ihre DISPLAY-Umgebungsvariable, sobald Sie SSHed in, aber vor dem erneuten Anschließen an den Bildschirm haben:

echo $DISPLAY

Legen Sie die Umgebungsvariable nach dem erneuten Anhängen an den Bildschirm explizit fest:

export DISPLAY=:N.0

dabei ist : N. das, was echo vor dem Anhängen angezeigt hat. Dies wird nicht perfekt sein, da einige Anwendungen möglicherweise erwarten, mit dem Session D-Bus zu kommunizieren, der für das Senden über die SSH-Verbindung etwas komplexer ist.

32
Kees Cook

es gibt ein programm namens xpra in den repositories, es ist wie gnu screen für x11. es ist nicht allzu schwer damit zu arbeiten:

X Persistente Remote-Anwendungen

Xpra bietet Ihnen die Funktionalität von GNU Screen für X-Anwendungen.

Der Benutzer kann Remote-X-Anwendungen auf seinem lokalen Computer anzeigen und die Verbindung zum Remote-Computer trennen und wiederherstellen, ohne den Status der ausgeführten Anwendungen zu verlieren.

11
Avihay

Byobu fügt die ssh- und gpg-Agenten automatisch wieder hinzu. Ich könnte es schaffen, die Anzeigevariable wieder zuzuordnen, wenn das für Sie hilfreich ist ...

7
Dustin Kirkland

So habe ich es beim Laufenlassen von byobu zum Laufen gebracht

Fügen Sie diese Zeile in die Zeile . Bash_loginvor "_byobu_source .." ein:

echo $DISPLAY > $HOME/.display.env

Und dann füge diese Zeile zu . Bashrc hinzu:

if [ ! -z ${SSH_CONNECTION+x} ]; then
  export DISPLAY=$(cat $HOME/.display.env) 
fi
2
harre

Es scheint, dass das Problem darin besteht, dass die Umgebungsvariable XAUTHORITY in der Bildschirmsitzung nicht beibehalten wird. Ich habe dieses Problem gelöst, indem ich Folgendes zu meinem .bashrc hinzufügte. Ich habe nicht gedacht, dass dies notwendig sein sollte, aber ich denke, Sie tun, was Sie müssen:

# ensure X forwarding is setup correctly, even for screen
XAUTH=~/.Xauthority
if [[ ! -e "${XAUTH}" ]]; then
 # create new ~/.Xauthority file
 xauth
fi
if [[ -z "${XAUTHORITY}" ]]; then
 # export env var if not already available.
 export XAUTHORITY="${XAUTH}" 
fi

Ich erwarte nicht, dass dies die beste oder prägnanteste Lösung ist, aber es funktioniert.

1
Mark

Auf der Grundlage von @harre-Vorschlägen stellte ich fest, dass dies die beste funktionierende Lösung ist, zumindest für RHEL über PuTTY. Ich weiß, dass es einen besseren Weg gibt, als eine Datei zu erstellen, die die Variable enthält, aber dies funktioniert direkt, um X11 zu erhalten, damit beim Laden über gnu screen auf DISPLAY zugegriffen werden kann.

Automatisierte Lösung

Hinzufügen zu .bashrc (oder .bash_profile, abhängig von Ihrem Anwendungsfall)

#.bashrc
if [ -f ~/etc/.bash-screen-x11 ]; then
   echo $DISPLAY > $HOME/.display.env
   source ~/etc/.bash-screen-x11
fi

Fügen Sie dann die folgende Datei hinzu (oder Ihre Pfadauswahl)

#~/etc/.bash-screen-x11
# sets back display var.
if [ -z $STY ]; then
  export DISPLAY=$(cat $HOME/.display.env)
fi
0
Brian Thomas

FreeNX ist eine wunderbare App für die Arbeit mit Remote-Displays.

0
Habitual