Entschuldigung für die 3 Jahre verspätete Antwort, ich habe mich gerade für dieses Thema interessiert und diese Frage gefunden.
Ich habe nirgendwo eine dokumentierte Lösung gefunden, also habe ich den Quellcode überprüft und hier ist ein sehr relevanter Teil:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Hier bedeutet der Nullptr am Ende der Zeile leider, dass das Profilargument nicht an die SendCommandLine-Funktion übergeben wird. Daher ist es nicht möglich, das richtige Firefox-Fenster auszuwählen, an das die OpenURL-Nachricht gesendet werden soll.
Wir sehen jedoch, dass der Benutzername übergeben wird und dass der Benutzername aus der Umgebungsvariablen LOGNAME intiailisiert wird. Auf dieser Grundlage habe ich die folgende Lösung gefunden:
- Ich verpacke Firefox mit diesem Skript namens Firefox.sh:
FOX_PROFILE = Facebook
export LOGNAME = errge. $ FOX_PROFILE
/ opt / Firefox / Firefox-Profil ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
Beim ersten Ausführen wird eine neue Instanz gestartet und das Verzeichnis ~ / .mozilla_profiles / facebook muss vorhanden sein.
Wenn das Facebook-Profil das zweite Mal ausgeführt wird und bereits ausgeführt wird, wird eine korrekte Verbindung hergestellt.
Es kann Befehle korrekt an mehrere verschiedene laufende Profile senden (natürlich müssen Sie den Parameter FOX_PROFILE in der ersten Zeile in den verschiedenen Skripten ändern).
Ich habe dies mit Firefox 26 unter Linux getestet und es funktioniert.
Alternativ ist hier meine vollwertige Lösung, die Sie möglicherweise verwenden möchten oder nicht:
#! / bin / bash
setze -e
FOX = / opt / Firefox / Firefox
NACHRICHT = $ @
if [-z "$ FOX_PROFILE"]; dann
if [-z "$ {MESSAGE}"]; dann
FOX_PROFILE = Standard
sonst
FOX_PROFILE = $ (kdialog --default default --menu "- $ {MESSAGE} -" Standardstandard Google Google Facebook Facebook Errge Errge Spam Spam)
fi
fi
exportiere FOX_PROFILE
# Dieser Hack wird benötigt, da Firefox Remote-Befehlszeilen senden
# ignoriert den Profilparameter. Siehe nsAppRunner.cpp: 1505.
export LOGNAME = errge. $ FOX_PROFILE
# Verwenden der Hintergrundausführung anstelle von exec, also ist das Verhalten
# konsistent, wenn das Profil bereits ausgeführt wird und wenn es nur ausgeführt wird
# Inbetriebnahme.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Riesenerfolg.
Ausfahrt 0
Wenn Sie das Skript ohne Parameter ausführen, wird das Standardprofil automatisch ausgewählt. Sie können es jedoch überschreiben, indem Sie FOX_PROFILE manuell in Ihrer Shell festlegen. Wenn eine URL in der Befehlszeile übergeben wird, wird immer nach einem Profil gefragt, in dem sie geöffnet werden soll. Dies liegt daran, dass ich hauptsächlich in meinem Chat- und E-Mail-Programm durchklicke und in diesem Fall immer ein Profil auswählen möchte (Google für Kalender) Spam, Facebook für Geburtstags-Spam usw.). Natürlich können Sie die Logik an Ihren Verwendungsstil anpassen. Dies ist nur ein Beispiel. Das wichtige Wissen ist der LOGNAME-Trick.
Und natürlich müssen Sie sicherstellen, dass dieses Wrapper-Skript die einzige Möglichkeit ist, den Browser auf Ihrem Computer zu starten. Denn wenn Sie ein Profil ohne den richtigen LOGNAME-Satz öffnen, können Sie nicht mehr mit diesem Profil kommunizieren. Ich habe dieses Skript als erstes in meinen Pfad über mehrere verknüpfte Namen wie x-www-browser, Firefox, Sensible-Browser eingefügt und es auch in die Umgebungsvariable BROWSER eingefügt. Wie dies genau funktioniert, hängt von Ihrer GNU / Linux-Distribution ab.
Wenn bereits eine Instanz ausgeführt wird, wird diese von Firefox wiederverwendet. Versuchen Sie es
firefox -no-remote
.quelle
@miemik
"Aber ich möchte, dass es eine Instanz wiederverwendet! Nur eine bestimmte, keine zufällige, die es mag. Wenn ich versuche, meinem Befehl" -no-remote "hinzuzufügen, erhalte ich:" Iceweasel läuft bereits, antwortet aber nicht. Um ein neues Fenster zu öffnen, müssen Sie zuerst den vorhandenen Iceweasel-Prozess schließen oder Ihr System neu starten. "
Sie haben ein Berechtigungsproblem mit Ihrem Profilverzeichnis. Überprüfen Sie die Berechtigung. Haben Sie es von einem anderen Ort kopiert oder verschoben (partition..disk ..)?
Lösung:
Werden Sie root und führen Sie top aus, um zu sehen, ob es als root ausgeführt wird. Dann ls -ld auf dem Profilverzeichnis (das unter Ihrem Home-Verzeichnis mit einem Punkt (.) Vor ihnen stehen sollte .. bedeutet, dass Sie "ls -al" verwenden müssen, um es zu sehen.
Überprüfen Sie die andere Berechtigung dieses Verzeichnisses und ändern Sie sie entsprechend.
Prost!
quelle
Es wird nicht funktionieren. Die einzige Möglichkeit, zwei Instanzen einer Mozilla-App auszuführen, besteht darin, Remoteverbindungen zur zweiten zu deaktivieren (normalerweise mit MOZ_NO_REMOTE = 1). Das bedeutet, dass Sie die Kommunikation mit anderen Instanzen deaktivieren (z. B. beim Erstellen einer neuen Seite).
Sie können also entweder eine neue App mit
no remote
aktivierter App öffnen oder die Instanz wiederverwenden, die den Remotezugriff ermöglicht.quelle
Sie sollten in der Lage sein,
-no-remote
nur den Testprofilaufruf (nachdem das Softwareprofil bereits geöffnet ist) wie folgt hinzuzufügen :Dadurch sollten alle anderen Links weiterhin remote in Ihrem anderen Profil geöffnet werden können.
Wenn diese Lösung nicht funktioniert, können Sie Firefox immer als separaten Benutzer zum Testen ausführen
sudo -u
. Firefox sollte dies jedoch mit Profilen richtig handhaben können.quelle
-no-remote
Flag eine neue Firefox-Instanz gestartet wird und die Frage die Wiederverwendung der vorhandenen Firefox-Instanzen erfordert, wenn diese bereits ausgeführt werden.Wenn Mozilla Firefox bereits mit dem Standardprofil oder einem anderen Profil geöffnet ist, versuchen Sie Folgendes:
Getestet und für mich mit Mozilla Firefox von 2.x bis 12.x gearbeitet
quelle
Verwenden Sie den Befehl, wenn Sie zum ersten Mal eine Firefox-Instanz mit einem bestimmten Profil starten:
Sie können eine URL am Ende des obigen Befehls anhängen, um sie zu öffnen. Wenn Sie später in dieser Instanz eine URL öffnen möchten, können Sie Folgendes verwenden:
Wenn Sie ein Skript schreiben und herausfinden möchten, ob bereits eine Instanz dieses Profils ausführt, um zu sehen, welcher der oben genannten Befehle aufgerufen werden soll, können Sie Folgendes verwenden:
Getestet mit Firefox 34 unter Linux.
Beachten Sie, dass es derzeit einen Fehler in Firefox gibt, der einen Fehler mit der Nachricht verursacht
wenn der
-remote openurl()
Befehl ohne steuernde tty ausgeführt wird (z. B. von einem Skript, das von einem Daemon gestartet wurde).Ich habe diesen Fehler beim Starten eines Skripts aus einer .desktop-Datei in KDE (z. B. von einem Launcher im Bedienfeld) festgestellt, daher musste ich die Option "In Terminal ausführen" aktivieren, was etwas ärgerlich ist.
quelle
Für den Datensatz ist eine Lösung: In KDE stellen wir den Standardbrowser so ein, dass er mit dem folgenden Befehl ausgeführt wird:
Dabei ist "Standard" unser Profil, das wir jedes Mal verwenden möchten.
Jetzt starten wir unsere Firefox-Instanz ohne Argumente (der Standard-KDE-Firefox-Launcher). Dies öffnet Firefox normalerweise. Jetzt möchten wir ein anderes Profil öffnen. Dazu erstellen wir einen weiteren Launcher im KDE-Menü-Editor:
Dadurch wird der Profilmanager geöffnet. Wir wählen das zu verwendende Profil aus.
Bei mehreren Profilen, die gleichzeitig ausgeführt werden, wird beim Klicken auf eine URL in einer App (z. B. einem Chat-Client) eine neue Registerkarte in dem von uns ausgewählten Profil geöffnet.
Hoffe jemand findet das hilfreich :).
Nicht auf Gnome getestet, aber ich hoffe, es konnte repliziert werden.
quelle