Como abro links externos em diferentes perfis com o Firefox?

Como abro links externos em diferentes perfis com o Firefox?

Tenho duas instâncias do Firefox em execução em perfis separados:

$ firefox -P default &
...
$ firefox -no-remote -P second &

Agora posso abrir uma nova guia na linha de comando com:

$ firefox -new-tab http://unix.stackexchange.com

Mas como abro uma nova aba no segundo perfil?

Esse:

$ firefox -P second -new-tab http://unix.stackexchange.com

abre uma guia no perfil padrão, enquanto:

$ firefox -no-remote -P second -new-tab http://unix.stackexchange.com

reclama que já existe uma instância em execução nesse perfil.

Responder1

Funciona agora comfirefox 29.0 no Linux:

Para abrir uma segunda firefoxinstância com um perfil diferente:

firefox -P second -new-instance

Para abrir uma nova guia na segunda instância do firefox, que já está em execução:

firefox -P second -remote "openurl(http://example.com,new-tab)"


VerBug 716110 - divisão do sinalizador -new-instance do sinalizador -no-remote existentepara dicas adicionais (por exemplo: postagem de Hayo).

Conforme explicado nos comentários deste relatório de bug, o que falta é um comando que possa ser usado para abrir a primeira janela e a segunda aba da mesma forma:

Isso poderia ser feito com um script nos moldes deste ( 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

Agora, enquanto um firefox com o perfil padrão já está em execução,
a primeira execução deste inicia um novo navegador com perfil "segundo":

firefox-profile-instance second "http://example.com"

e executar o mesmo novamente abre uma segunda aba no mesmo navegador:

firefox-profile-instance second "http://example.com"

Responder2

Esta resposta é em grande parte uma extensão deVolker Siegelresposta acima e estou feliz que os dois sejam mesclados. Estou escrevendo isso apenas para formatar um novo script, já que o Firefox não suporta mais o -remote.

Novas versões do Firefox (testadas com a versão 52) suportam uma -new-instanceopção para gerar uma nova instância que suporta chamadas remotas. As chamadas subsequentes ao firefox, se receberem um -Pargumento, executarão ações em um perfil do firefox em execução com o nome de perfil fornecido.

Se você deseja combinar a geração e a abertura do link em um script, isso pode ser feito usando pgrepo mostrado abaixo:

#!/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

(Aviso que este script não foi testado, mas é adaptado de um que eu uso)

Responder3

Com base na resposta de@Att certoDesenvolvi a seguinte solução que seleciona automaticamente o perfil correto com base na URL.

Este script wrapper foi testado no Ubuntu Linux 20.04.6 com 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

Salve o script com o nome, firefoxpor exemplo, $HOME/bin/e certifique-se de que ele será carregado em vez do seu Firefox padrão. (O diretório deve estar antes do original na variável $PATH.)

informação relacionada