Programm im Fenstermanager starten

Programm im Fenstermanager starten

Gibt es eine Möglichkeit, ein Programm von einem Terminal aus, das kein „Kind“ des Fenstermanagers (z. B. XFCE) ist, in einem Fenstermanager zu starten?

Das ausgeführte Programm muss vom Terminal (und meiner aktuellen Verbindung zum Server) getrennt werden, damit es nach dem Schließen der Terminalsitzung aktiv bleibt.

Ein Beispiel wäre, mich per SSH (ohne X-Forward o.ä.) mit einem Server zu verbinden, einen Browser zu starten, die Verbindung zu schließen. Vor dem Server sitzen und den zuletzt geöffneten Browser verwenden, der noch läuft, losgelöst von meiner SSH-Sitzung mit einem neuen „Besitzer“, dem Fenstermanager.

Antwort1

Die üblichen Methoden zum Trennen eines Prozesses von der Shell sind:

  • Führen Sie es im Hintergrund mit aus &und fordern Sie die Shell dann auf, die Verfolgung mit folgendem Befehl zu beenden disown:

    $ xterm &
    $ disown
    

    (oder xterm & disown)

  • Führen Sie es im Hintergrund mit aus &und verwenden Sie das nohupTool, um zu verhindern, dass es beendet wird:

    $ nohup xterm &
    
  • Führen Sie es im Hintergrund mit aus &und verwenden Sie Double-Fork, um zu verhindern, dass es von der Shell verfolgt wird:

    $ (xterm &)
    
  • im Hintergrund ausführen mit setsid:

    $ setsid xterm
    

(Probieren Sie es aus (setsid xterm &), wenn einige Optionen nicht funktionieren.)

Antwort2

xterm -e "bash -c \"./script.sh; exec bash\"" &

wo ./script.shkann nur ein Befehl sein.

Antwort3

Melden Sie sich per SSH bei der Maschine an, auf der der X-Server läuft, und führen Sie Folgendes aus:

DISPLAY=:0 xterm &

Sie sollten ein xterm auf Ihrem X-Display erhalten und es sollte geöffnet bleiben, auch wenn Sie die SSH-Sitzung schließen.

X11-Anwendungen verwenden die DISPLAYUmgebungsvariable, um den X-Server zu finden. Der typische Wert ist :0, was bedeutet, dass X11-Anwendungen über den Unix-Domain-Socket eine Verbindung zu einem lokalen X-Server herstellen sollten /tmp/X11-unix/X0.

Anwendungen, die innerhalb einer X-Sitzung gestartet werden, erben eine DISPLAYUmgebungsvariable, die auf den X-Server verweist. Prozesse, die außerhalb einer X-Sitzung gestartet werden (z. B. ein SSH-Login), verfügen jedoch nicht über diese Variable. Aus diesem Grund müssen Sie sie explizit festlegen, wenn Sie eine X11-Anwendung über einen SSH-Login starten.

verwandte Informationen