Ich habe zwei Firefox-Instanzen, die unter separaten Profilen laufen:
$ firefox -P default &
...
$ firefox -no-remote -P second &
Jetzt kann ich von der Befehlszeile aus eine neue Registerkarte öffnen mit:
$ firefox -new-tab http://unix.stackexchange.com
Aber wie öffne ich einen neuen Tab im zweiten Profil?
Das:
$ firefox -P second -new-tab http://unix.stackexchange.com
öffnet eine Registerkarte im Standardprofil, während:
$ firefox -no-remote -P second -new-tab http://unix.stackexchange.com
beschwert sich, dass unter diesem Profil bereits eine Instanz ausgeführt wird.
Antwort1
Es funktioniert jetzt mit firefox
29.0 unter Linux:
So öffnen Sie eine zweite firefox
Instanz mit einem anderen Profil:
firefox -P second -new-instance
So öffnen Sie eine neue Registerkarte in der zweiten Instanz von firefox
, die bereits ausgeführt wird:
firefox -P second -remote "openurl(http://example.com,new-tab)"
SehenFehler 716110 – Flag „-new-instance“ aus vorhandenem Flag „-no-remote“ heraustrennenfür weitere Hinweise (z. B.: Beitrag von Hayo).
Wie in den Kommentaren zu diesem Fehlerbericht erläutert, fehlt ein Befehl, mit dem das erste Fenster und die zweite Registerkarte auf die gleiche Weise geöffnet werden können:
Dies könnte mit einem Skript in etwa diesem ( firefox-profile-instance
) erreicht werden:
#!/bin/bash
PROFILE="$1"
URL="$2"
if firefox -P "$PROFILE" -remote "ping()" >/dev/null 2>&1 ; then
firefox -P "$PROFILE" -remote "openurl($URL,new-tab)"
else
firefox -P "$PROFILE" -new-instance "$URL" &
fi
Während nun bereits ein Firefox mit dem Standardprofil läuft,
wird beim ersten Durchlauf hiervon ein neuer Browser mit dem Profil „second“ gestartet:
firefox-profile-instance second "http://example.com"
und wenn Sie das Gleiche noch einmal ausführen, wird eine zweite Registerkarte im selben Browser geöffnet:
firefox-profile-instance second "http://example.com"
Antwort2
Diese Antwort ist im Wesentlichen eine Erweiterung vonVolker Siegel's Antwort oben und ich bin zufrieden, wenn die beiden zusammengeführt werden. Ich schreibe dies nur, um ein neues Skript zu formatieren, da Firefox dies nicht mehr unterstützt -remote
.
Neue Versionen von Firefox (getestet mit Version 52) unterstützen eine -new-instance
Option zum Erstellen einer neuen Instanz, die Remote-Aufrufe unterstützt. Nachfolgende Aufrufe von Firefox führen, sofern ein -P
Argument angegeben wird, Aktionen in einem laufenden Firefox-Profil mit dem angegebenen Profilnamen aus.
pgrep
Wenn Sie das Spawnen und das Öffnen von Links in einem Skript kombinieren möchten, können Sie dies wie unten gezeigt erreichen :
#!/bin/bash
profile=profile-name
if pgrep --full "^firefox-esr\b.*$profile" > /dev/null; then
firejail --profile=$HOME/.firejail/firefox.jail.profile firefox -P "$profile" "$@" > /dev/null
else
firejail --profile=$HOME/.firejail/firefox.jail.profile firefox -new-instance -P "$profile" "$@"
disown $!
fi
(Achtung: Dieses Skript wurde nicht getestet, sondern basiert auf einem von mir verwendeten Skript.)
Antwort3
Basierend auf der Antwort von@Att, richtigIch habe folgende Lösung entwickelt, die anhand der URL automatisch das richtige Profil auswählt.
Dieses Wrapper-Skript wurde auf Ubuntu Linux 20.04.6 mit Mozilla Firefox 104.0 getestet.
#!/bin/bash
if [[ "$@" =~ .*"google."|"facebook.com"|"instagram.com".* ]]
then
profile=for_evil_sites
else
profile=default
fi
if pgrep --full "firefox\b.*$profile" > /dev/null; then
/usr/bin/firefox -P "$profile" "$@" > /dev/null
else
/usr/bin/firefox --new-instance -P "$profile" "$@" > /dev/null
disown $!
fi
Speichern Sie das Skript unter dem Namen firefox
zB in $HOME/bin/
und stellen Sie sicher, dass es anstelle Ihres Standard-Firefox geladen wird. (Das Verzeichnis muss vor dem Originalverzeichnis in der Variable liegen $PATH
.)