Przepraszam za 3 lata spóźnienia, zainteresowałem się tym tematem i znalazłem to pytanie.
Nigdzie nie znalazłem udokumentowanego rozwiązania, więc sprawdziłem kod źródłowy, a tutaj jest bardzo istotna część:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Tutaj nullptr na końcu wiersza niestety oznacza, że argument profilu nie jest przekazywany do funkcji SendCommandLine, dlatego nie można wybrać poprawnego okna firefox, do którego ma zostać wysłana wiadomość openurl.
Widzimy jednak, że nazwa użytkownika jest przekazywana i że nazwa użytkownika jest inicjalizowana ze zmiennej środowiskowej LOGNAME. Na tej podstawie opracowałem następujące rozwiązanie:
- Zawijam Firefoksa za pomocą tego skryptu o nazwie firefox.sh:
FOX_PROFILE = facebook
eksport LOGNAME = błąd. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES „$ @”
przy pierwszym uruchomieniu uruchamia nową instancję i musi istnieć katalog ~ / .mozilla_profiles / facebook,
po uruchomieniu drugi raz, jeśli profil na Facebooku jest już uruchomiony, poprawnie się z nim łączy,
może poprawnie wysyłać polecenia do wielu różnych działających profili (oczywiście musisz zmienić parametr FOX_PROFILE w pierwszym wierszu w różnych skryptach).
Testowałem to z Firefoksem 26 w systemie Linux i działa.
Alternatywnie, oto moje pełnoprawne rozwiązanie, którego możesz chcieć lub nie używać:
#! / bin / bash
ustaw -e
FOX = / opt / firefox / firefox
WIADOMOŚĆ = $ @
jeśli [-z "$ FOX_PROFILE"]; następnie
if [-z "$ {MESSAGE}"]; następnie
FOX_PROFILE = wartość domyślna
jeszcze
FOX_PROFILE = $ (kdialog - domyślny domyślny - menu "- $ {WIADOMOŚĆ} -" domyślny domyślny google google facebook facebook pomyłka pomyłka spam spam)
fi
fi
eksport FOX_PROFILE
# Ten hack jest potrzebny, ponieważ wysyła zdalną linię poleceń firefox
# ignoruje parametr profilu. Zobacz nsAppRunner.cpp: 1505.
eksport LOGNAME = błąd. $ FOX_PROFILE
# Używanie wykonywania w tle zamiast exec, więc zachowanie jest
# spójne, gdy profil jest już uruchomiony, a kiedy jest po prostu
# uruchomienie.
$ FOX -profil ~ / .mozilla_profiles / $ FOX_PROFILE „$ @”
# Ogromny sukces.
wyjście 0
Jeśli skrypt zostanie uruchomiony bez żadnego parametru, automatycznie wybierze profil domyślny, ale można go zastąpić, ustawiając FOX_PROFILE ręcznie w powłoce. Jeśli adres URL zostanie przekazany w wierszu polecenia, zawsze prosi o profil, w którym należy go otworzyć, ponieważ głównie klikam z mojego programu czatu i poczty e-mail, a w takim przypadku zawsze chcę wybrać profil (Google dla kalendarza spam, Facebook na spam urodzinowy itp.). Oczywiście możesz zmienić logikę, aby dopasować ją do swojego stylu użytkowania, to tylko przykład, ważna wiedza to sztuczka LOGNAME.
I oczywiście musisz upewnić się, że ten skrypt otoki jest jedynym sposobem na uruchomienie przeglądarki na twoim komputerze. Ponieważ jeśli otworzysz profil bez prawidłowego zestawu LOGNAME, nie będziesz już mógł komunikować się z tym profilem. Skrypt ten umieszczam jako pierwszy na mojej ścieżce za pomocą wielu nazw dowiązań symbolicznych, takich jak x-www-browser, firefox, sensible-browser i umieszczam go również w zmiennej środowiskowej BROWSER. Jak to zrobić dokładnie zależy od twojej dystrybucji GNU / Linux.