Извините за опоздание на 3 года, я заинтересовался этой темой только сейчас и нашел этот вопрос.
Я нигде не нашел документированного решения, поэтому я проверил исходный код, и вот очень важная часть:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Здесь nullptr в конце строки, к сожалению, означает, что аргумент профиля не передается в функцию SendCommandLine, поэтому невозможно выбрать правильное окно firefox для отправки сообщения openurl.
Однако мы видим, что имя пользователя передается и имя пользователя инициализируется из переменной среды LOGNAME. Исходя из этого, я пришел к следующему решению:
- Я обертываю Firefox этим скриптом, который называется firefox.sh:
FOX_PROFILE = facebook
export LOGNAME = errge. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
при первом запуске запускается новый экземпляр, и каталог ~ / .mozilla_profiles / facebook должен существовать,
когда запускается второй раз, если профиль facebook уже запущен, он правильно подключается к нему,
он может правильно отправлять команды нескольким различным рабочим профилям (конечно, вы должны изменить параметр FOX_PROFILE в первой строке в разных сценариях).
Я проверил это с Firefox 26 на Linux, и это работает.
В качестве альтернативы, вот мое полноценное решение, которое вы можете или не хотите использовать:
#! / Bin / Баш
установить -е
FOX = / Opt / светлячок / светлячок
MESSAGE = $ @
if [-z "$ FOX_PROFILE"]; тогда
if [-z "$ {MESSAGE}"]; тогда
FOX_PROFILE = по умолчанию
еще
FOX_PROFILE = $ (kdialog - по умолчанию по умолчанию --menu "- $ {MESSAGE} -" по умолчанию по умолчанию google google facebook facebook errge errge spam spam)
фи
фи
экспортировать FOX_PROFILE
# Этот взлом нужен, потому что Firefox удаленная отправка командной строки
# игнорирует параметр профиля. См. NsAppRunner.cpp: 1505.
export LOGNAME = errge. $ FOX_PROFILE
# Использование фонового выполнения вместо exec, поэтому поведение
# соответствует, когда профиль уже запущен и когда он просто
# запуск.
$ FOX -профиль ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Огромный успех.
выход 0
Если вы запускаете скрипт без каких-либо параметров, он автоматически выбирает профиль по умолчанию, но вы можете переопределить его, установив FOX_PROFILE вручную в вашей оболочке. Если URL-адрес передается в командной строке, он всегда запрашивает профиль, в котором его можно открыть, это потому, что я в основном кликаю в своей программе чата и электронной почты, и в этом случае я хочу всегда выбирать профиль (Google для календаря спам, фейсбук на день рождения, спам и т.д.). Конечно, вы можете изменить логику в соответствии со своим стилем использования, это всего лишь пример, важным знанием является трюк с LOGNAME.
И, конечно же, вы должны убедиться, что этот скрипт-обертка - единственный способ запустить браузер на вашем компьютере. Потому что, если вы откроете профиль без правильного имени LOGNAME, вы больше не сможете общаться с этим профилем. Я поставил этот скрипт первым на моем пути через несколько имен с символическими ссылками, таких как x-www-browser, firefox, sensible-browser, и поместил его также в переменную окружения BROWSER. Как это сделать, зависит от вашего дистрибутива GNU / Linux.