Verwenden Sie xdg-open, um eine URL mit einem neuen Prozess zu öffnen

Verwenden Sie xdg-open, um eine URL mit einem neuen Prozess zu öffnen

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.comund dann im selben Terminalfenster weiterarbeiten können (so openfunktioniert es in OSX). Derzeit xdg-openbelegt 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 ~/.bashrcDatei die folgenden Zeilen hinzufügen:

function open () {
    xdg-open "$*" &
}

Sie können es dann einfach ausführen open http://www.google.comund 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 derdetachDienstprogramm:

detach xdg-open http://www.google.com

Man könnte hierfür einen Alias ​​erstellen. Mir gefällt „ detachover“ nohup, da es standardmäßig stdin, stdout und stderr schließt, sodass der Aufruf sauberer ist.

Antwort3

xdg-openwartet, 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-openvon 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-openim 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-openwird sofort zurückgekehrt. Tatsächlich kehrt das xdg-openaufgerufene 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.

verwandte Informationen