Perdón por la respuesta tardía de 3 años, me interesé en este tema hace un momento y encontré esta pregunta.
No encontré una solución documentada en ninguna parte, así que revisé el código fuente y aquí hay una parte muy relevante:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Aquí, el nullptr al final de la línea desafortunadamente significa que el argumento del perfil no se pasa a la función SendCommandLine, por lo tanto, no es posible seleccionar la ventana correcta de firefox para enviar el mensaje openurl.
Sin embargo, vemos que se está pasando el nombre de usuario y que se está intiailizando desde la variable de entorno LOGNAME. En base a esto, se me ocurrió la siguiente solución:
- Envuelvo firefox con este script, llamado firefox.sh:
FOX_PROFILE = facebook
export LOGNAME = errge. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
cuando se ejecuta por primera vez, inicia una nueva instancia y el directorio ~ / .mozilla_profiles / facebook debe existir,
cuando se ejecuta por segunda vez si el perfil de Facebook ya se está ejecutando, se conecta correctamente a él,
puede enviar comandos correctamente a múltiples perfiles de ejecución diferentes (por supuesto, debe cambiar el parámetro FOX_PROFILE en la primera línea en los diferentes scripts).
Probé esto con Firefox 26 en Linux y funciona.
Alternativamente, aquí está mi solución completa que puede querer o no usar:
#! / bin / bash
conjunto -e
FOX = / opt / firefox / firefox
MENSAJE = $ @
si [-z "$ FOX_PROFILE"]; entonces
si [-z "$ {MENSAJE}"]; entonces
FOX_PROFILE = predeterminado
más
FOX_PROFILE = $ (kdialog - default default --menu "- $ {MESSAGE} -" default default google google facebook facebook errge errge spam spam)
fi
fi
exportar FOX_PROFILE
# Este truco es necesario, porque el envío de línea de comando remoto de Firefox
# ignora el parámetro de perfil. Ver nsAppRunner.cpp: 1505.
export LOGNAME = errge. $ FOX_PROFILE
# Uso de ejecución en segundo plano en lugar de exec, por lo que el comportamiento es
# consistente cuando el perfil ya se está ejecutando y cuando es solo
# empezando.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Gran éxito.
salida 0
Si ejecuta el script sin ningún parámetro, selecciona automáticamente el perfil predeterminado, pero puede anularlo configurando FOX_PROFILE a mano en su shell. Si se pasa una URL en la línea de comando, siempre solicita un perfil para abrirla, esto se debe a que hago clic principalmente desde mi programa de chat y correo electrónico y en ese caso quiero seleccionar siempre un perfil (google para el calendario spam, facebook para spam de cumpleaños, etc.). Por supuesto, puede cambiar la lógica para que se ajuste a su estilo de uso, esto es solo un ejemplo, el conocimiento importante es el truco LOGNAME.
Y, por supuesto, debe asegurarse de que este script de contenedor sea la única forma de iniciar el navegador en su máquina. Porque si abre un perfil sin el conjunto de LOGNAME correcto, entonces ya no podrá comunicarse con ese perfil. Puse este script como el primero en mi camino a través de múltiples nombres enlazados, como x-www-browser, firefox, sensible-browser y lo puse en la variable de entorno BROWSER también. Cómo hacer esto depende exactamente de su distribución GNU / Linux.