Desculpe pela resposta tardia de três anos, fiquei interessado neste tópico agora e encontrei esta pergunta.
Como não encontrei uma solução documentada em nenhum lugar, verifiquei o código-fonte e aqui está uma parte muito relevante:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Aqui, o nullptr no final da linha infelizmente significa que o argumento do perfil não está sendo passado para a função SendCommandLine; portanto, não é possível selecionar a janela correta do firefox para a qual enviar a mensagem de abertura.
No entanto, vemos que o nome de usuário está sendo passado e que ele está sendo desativado a partir da variável de ambiente LOGNAME. Com base nisso, eu vim com a seguinte solução:
- Eu envolvo o firefox com este script, chamado firefox.sh:
FOX_PROFILE = facebook
exportar LOGNAME = erro. $ FOX_PROFILE
/ opt / firefox / perfil do firefox ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
quando executado pela primeira vez, ele inicia uma nova instância e o diretório ~ / .mozilla_profiles / facebook deve existir,
quando executado pela segunda vez, se o perfil do facebook já estiver em execução, ele se conecta corretamente a ele,
ele pode enviar comandos corretamente para vários perfis de execução diferentes (é claro que você precisa alterar o parâmetro FOX_PROFILE na primeira linha dos diferentes scripts).
Eu testei isso com o Firefox 26 no Linux e funciona.
Como alternativa, aqui está minha solução completa que você pode ou não querer usar:
#! / bin / bash
set -e
FOX = / opt / firefox / firefox
MESSAGE = $ @
if [-z "$ FOX_PROFILE"]; então
if [-z "$ {MENSAGEM}"]; então
FOX_PROFILE = padrão
outro
FOX_PROFILE = $ (kdialog - padrão padrão - menu "- $ {MESSAGE} -" padrão padrão google google facebook facebook erro erro erro spam)
fi
fi
exportar FOX_PROFILE
# Esse hack é necessário, porque o envio remoto da linha de comando do firefox
# ignora o parâmetro profile. Consulte nsAppRunner.cpp: 1505.
exportar LOGNAME = erro. $ FOX_PROFILE
# Usando a execução em segundo plano em vez de exec, para que o comportamento seja
# consistente quando o perfil já está sendo executado e quando é apenas
# Começando.
Perfil de $ FOX ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Enorme sucesso.
saída 0
Se você executar o script sem nenhum parâmetro, ele selecionará automaticamente o perfil padrão, mas poderá substituí-lo configurando FOX_PROFILE manualmente no shell. Se um URL é passado na linha de comando, ele sempre solicita um perfil para abri-lo, é porque eu clico principalmente no meu programa de bate-papo e e-mail e, nesse caso, quero sempre selecionar um perfil (google for calendar spam, facebook para spam de aniversário, etc.). Claro que você pode alterar a lógica para se adequar ao seu estilo de uso; este é apenas um exemplo, o conhecimento importante é o truque LOGNAME.
E é claro que você precisa garantir que esse script de wrapper seja a única maneira de iniciar o navegador em sua máquina. Porque se você abrir um perfil sem o conjunto LOGNAME correto, não poderá mais se comunicar com esse perfil. Coloquei esse script como o primeiro no meu caminho por meio de vários nomes com links simbólicos, como x-www-browser, firefox, sensible-browser e também na variável de ambiente BROWSER. Como fazer isso depende exatamente da sua distribuição GNU / Linux.