Tengo dos instancias de Firefox ejecutándose en perfiles separados:
$ firefox -P default &
...
$ firefox -no-remote -P second &
Ahora puedo abrir una nueva pestaña desde la línea de comando con:
$ firefox -new-tab http://unix.stackexchange.com
¿Pero cómo abro una nueva pestaña en el segundo perfil?
Este:
$ firefox -P second -new-tab http://unix.stackexchange.com
abre una pestaña en el perfil predeterminado, mientras:
$ firefox -no-remote -P second -new-tab http://unix.stackexchange.com
se queja de que ya hay una instancia ejecutándose bajo ese perfil.
Respuesta1
Funciona ahora con firefox
29.0 en Linux:
Para abrir una segunda firefox
instancia con un perfil diferente:
firefox -P second -new-instance
Para abrir una nueva pestaña en la segunda instancia de firefox
, que ya se está ejecutando:
firefox -P second -remote "openurl(http://example.com,new-tab)"
VerError 716110: división del indicador -new-instance del indicador -no-remote existentepara sugerencias adicionales (por ejemplo: publicación de Hayo).
Como se explica en los comentarios de este informe de error, lo que falta es un comando que pueda usarse para abrir la primera ventana y la segunda pestaña de la misma manera:
Eso se podría hacer con un script como este ( firefox-profile-instance
):
#!/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
Ahora, mientras ya se está ejecutando Firefox con el perfil predeterminado,
la primera ejecución de este inicia un nuevo navegador con el perfil "segundo":
firefox-profile-instance second "http://example.com"
y al ejecutar lo mismo nuevamente se abre una segunda pestaña en el mismo navegador:
firefox-profile-instance second "http://example.com"
Respuesta2
Esta respuesta es en gran medida una extensión deVolker SiegelLa respuesta anterior y estoy feliz de que los dos se fusionen. Sólo escribo esto para formatear un nuevo script dado que Firefox ya no admite -remote
.
Las nuevas versiones de Firefox (probadas con la versión 52) admiten una -new-instance
opción para generar una nueva instancia que admita llamadas remotas. Las llamadas posteriores a Firefox, si se les da un -P
argumento, llevarán a cabo acciones en un perfil de Firefox en ejecución con el nombre de perfil dado.
Si desea combinar la generación y la apertura de enlaces en un solo script, esto se puede lograr usando pgrep
como se muestra a continuación:
#!/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
(Advertencia: este script no ha sido probado, pero está adaptado de uno que uso)
Respuesta3
Basado en la respuesta de@Att CorrectoDesarrollé la siguiente solución que selecciona automáticamente el perfil correcto según la URL.
Este script contenedor se prueba en Ubuntu Linux 20.04.6 con Mozilla Firefox 104.0.
#!/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
Guarde el script con el nombre, firefox
por ejemplo, en $HOME/bin/
y asegúrese de que se cargará en lugar de su Firefox estándar. (El directorio debe estar antes del original en variable $PATH
).