2008-10-29 10 views
9

Ich benutze Bildschirm, um meine Arbeit Sitzung beizubehalten und Verbindung zur gleichen Sitzung von mehreren Maschinen. Wie kann ich SSH einrichten und so screenen, dass die XDISPLAY-Variable innerhalb meiner persistenten Bildschirmsitzung immer auf den Computer eingestellt ist, von dem ich gerade eine Verbindung herstelle?SSH, Bildschirm und XDISPLAY

dh. Ich starte die Bildschirmsitzung bei der Arbeit und benutze gvim, das den X-Server benutzt, der auf meiner Arbeitsmaschine läuft. Später verbinde ich mich von zuhause mit derselben Sitzung und möchte auch gvim verwenden. Aber dieses Mal möchte ich, dass gvim den X-Server auf meinem Heimcomputer benutzt. Ich weiß, dass ich XDISPLAY jedes Mal manuell aktualisieren könnte, wenn ich von einem anderen Computer aus eine Verbindung herstelle, aber ich hätte lieber ein automatisiertes System.

Bonuspunkte, wenn ich kann bewegen gvim von meiner Arbeitsmaschine zu meinem Heimcomputer, während es läuft. Ich habe versucht, xmove, aber konnte es nie spielen, um nett zu spielen.

Antwort

5

Das Folgende ist eine manuelle Lösung, aber es gibt keinen Grund, warum Sie konnte kein Alias ​​oder ein Skript verwenden, um es automatisch geschehen, wenn Sie aus der Ferne eingeloggt sein.

Unter der Annahme, dass Ihre lokale Shell die Variable DISPLAY setzt angemessen, könnten Sie screen -X verwenden Sie die folgenden commads zum Remote-Bildschirm vor Anschluss zu senden.

# 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" #... 

Wenn Sie wissen, dass alle Fenster in einer Schale gelassen wurden (kein Lauf Editor oder so), könnten Sie :at verwenden, um die XDISPLAY eher als ein Schlüssel zu ändern Bindung:

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

Alternativ kann, wenn Sie eine Möglichkeit, packte einen übergeordneten Prozess des Umgebungsvariable Wert kennen, dann könnten Sie das mit Ihrer Shell Prompt Haken verwenden zusammen SCREEN Wert von ANZEIGEX zu greifen (wie von setenv gesetzt) ​​und es für die Shell zu aktualisieren.

0

Ich bin auch an der Antwort dafür interessiert. Sollte es nicht möglich sein, die SSH-Prozesse für Ihren Benutzer nach Zeit sortiert aufzulisten und die Umgebung für diesen Prozess möglicherweise zu katalogisieren?

3

Es gibt keinen „trivial“ Weg Umgebungsvariablen in Fremd Prozessen zu ändern.

Eine einfache Lösung könnte sein, Ihre XDISPLAY in einer Datei bei der Anmeldung persistent zu machen und eine PROMPT_COMMAND verwenden, um diese Datei vor dem Drucken der nächsten Aufforderung zu lesen.


Für X-Anwendungen rund um Blick auf etwas wie X11vnc oder Xvnc bewegen.