¿Cómo abro enlaces externos en diferentes perfiles con Firefox?

¿Cómo abro enlaces externos en diferentes perfiles con Firefox?

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 firefox29.0 en Linux:

Para abrir una segunda firefoxinstancia 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-instanceopción para generar una nueva instancia que admita llamadas remotas. Las llamadas posteriores a Firefox, si se les da un -Pargumento, 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 pgrepcomo 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, firefoxpor 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).

información relacionada