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 firefox
instâ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-instance
opção para gerar uma nova instância que suporta chamadas remotas. As chamadas subsequentes ao firefox, se receberem um -P
argumento, 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 pgrep
o 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, firefox
por 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
.)