Ich fange an zu experimentieren mitKnackbang(basiert auf Debian und verwendetTerminator) als Webentwicklungsumgebung und eines der Dinge, mit denen ich zu kämpfen habe, ist das Verhalten von xdg-open
. Ich komme aus dem OSX-Bereich, also verzeihen Sie mir, wenn diese Frage etwas schwer verständlich klingt.
Ich möchte eine URL mit öffnen xdg-open http://www.google.com
und dann im selben Terminalfenster weiterarbeiten können (so open
funktioniert es in OSX). Derzeit xdg-open
belegt die Verwendung die aktuelle Registerkarte/Sitzung, bis ich das Browserfenster schließe oder die Dinge manuell mit beende ctrl + c
. Mir wäre es viel lieber, wenn ein neuer Prozess gestartet würde, damit ich eine URL öffnen, auf Daten auf der Seite verweisen und sie im selben Tab/Fenster verwenden kann, ohne ein weiteres öffnen zu müssen.
Antwort1
Seltsam, aber auf meinem Debian funktioniert es sofort. Versuchen Sie, es im Hintergrund laufen zu lassen:
xdg-open http://www.google.com &
Sie können daraus eine Funktion machen, indem Sie Ihrer ~/.bashrc
Datei die folgenden Zeilen hinzufügen:
function open () {
xdg-open "$*" &
}
Sie können es dann einfach ausführen open http://www.google.com
und es wird im Hintergrund ausgeführt.
Antwort2
Wenn Sie den Prozess von der aktuellen Shell trennen möchten, anstatt ihn als Hintergrundjob zu starten xdg-open http://www.google.com &
, dann gefällt mir derdetach
Dienstprogramm:
detach xdg-open http://www.google.com
Man könnte hierfür einen Alias erstellen. Mir gefällt „ detach
over“ nohup
, da es standardmäßig stdin, stdout und stderr schließt, sodass der Aufruf sauberer ist.
Antwort3
xdg-open
wartet, bis das Programm beendet ist. Dies ist beabsichtigt. Wenn das Programm ein Textmodusprogramm ist, muss es im Terminal im Vordergrund bleiben. Auch wenn das Programm ein GUI-Programm ist, ist dieses Verhalten nützlich, wenn es xdg-open
von einem Skript aus verwendet wird und das Skript etwas ausführen möchte, nachdem die Datei bearbeitet wurde (z. B. die neue Version irgendwohin senden oder anderweitig etwas mit der neuen Version machen).
Wenn Sie nicht warten möchten, führen Sie es xdg-open
im Hintergrund aus. Sie können jeden Shell-Befehl im Hintergrund ausführen, indem Sie am Ende ein Et-Zeichen einfügen.
xdg-open http://www.google.com &
Bei einigen Programmen xdg-open
wird sofort zurückgekehrt. Tatsächlich kehrt das xdg-open
aufgerufene Programm sofort zurück. Dies geschieht normalerweise bei GUI-Programmen, die alle Dateien in einer einzigen Instanz öffnen: Wenn Sie sie ein zweites Mal starten, senden sie der laufenden Instanz eine Nachricht, dass sie die Datei öffnen und sofort beenden soll.
Antwort4
Versuche dies:
DISPLAY=:0.0; xdg-open '<url>'
Ich verwende diese Technik, um magnet://-URLs in meinen BitTorrent-Client Vuze einzureihen.
ssh someserver "DISPLAY=:0.0; xdg-open 'http://www.google.com/'"
Die einfachen Anführungszeichen dienen dazu, den Inhalt der URLs zu schützen, sodass die Shell nicht versucht, sie zu interpretieren.