
Preciso substituir o navegador padrão para um único processo. Este processo começa manualmente a partir de scripts npm. Para conseguir isso programaticamente, decidi substituir BROWSER
a variável de ambiente logo antes do script. Mas não funciona. Ele rouba o navegador padrão de todo o sistema. Eu tentei com xdg-open
, mas também não está funcionando.
Para ser breve, quero que o seguinte comando abra o URL fornecido no navegador fornecido, não no navegador padrão.
BROWSER='path to desired browser' xdg-open 'any url'
PS: Só para contar um pouco mais sobre o meu problema. Estou usando o Firefox como navegador padrão em todas as minhas máquinas e me acostumei bastante. Mas recentemente, ao depurar um aplicativo da web, percebi que alguns pontos de interrupção não eram usados pelas ferramentas de desenvolvimento do Firefox. Instalei o Chromium e seu depurador funcionou conforme o esperado. Eu uso o storybook para desenvolvimento e gostaria de abri-lo no Chromium, enquanto uso o Firefox como variável padrão para o uso diário regular.
Responder1
Eu precisava de algo semelhante, mas não limitado a situações que respeitassem $BROWSER
, pois xdg-open
frequentemente usaria o perfil de navegador errado.
Aqui está uma solução alternativa com os seguintes componentes:
- Um script que carrega a
BROWSER
variável e inicia o navegador correto. - Uma substituição do perfil padrão atual,
.desktop
copiando-o para o~/.local/share/applications
diretório. - Altere as
Exec
instruções no.desktop
arquivo para usar o script customizado. - Defina a
BROWSER
variável para um padrão sensato no shell de login para ter um substituto.
Passo a passo
Eu adicionei um script ao meu ~/bin
diretório chamado custom-browser
que se parece com:
$BROWSER "$@"
Em segundo lugar, encontre o .desktop
perfil atual com:
xdg-settings get default-web-browser
Isso me deu firefox.desktop
, que copiei para o diretório inicial do meu usuário:
cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
Modifiquei as Exec
instruções ~/.local/share/applications/firefox.desktop
para launch /home/{user}/bin/custom-browser
.
Agora posso usar:
BROWSER='chromium' xdg-open 'https://startpage.com'
BROWSER='firefox' xdg-open 'https://startpage.com'
Para abrir diferentes navegadores com base na BROWSER
variável. Espero que isso ajude você de alguma forma.
Meu uso
eu usodirenv
[1] para definir a BROWSER
variável com base no diretório, por exemplo, diretórios de trabalho usam um perfil de trabalho para meu navegador.
Outra é que eu inicio aplicativos para BROWSER=hardened-firefox signal-desktop
forçar o aplicativo a abrir links com um navegador específico.
Notas
- O script é necessário porque o
.desktop
arquivo não carrega variáveis de ambiente, então adicionarExec=$BROWSER %u
diretamente não funciona. - É possível definir o substituto
BROWSER
no script em vez do shell de login. - É possível escrever um
.desktop
arquivo personalizado e alterar o padrão comxdg-settings
/xdg-mime
em vez de substituir o padrão; Achei mais fácil acertar "com a substituição". - Se estiver usando navegadores que não usam a URL como primeiro parâmetro posicional, um customizado
.desktop
e lidar com isso no script pode ser mais fácil. - Se o
.desktop
perfil não estiver em/usr/share/applications
, ou a substituição$HOME/.local/share/applications
não funcionar, tente ocaminhos alternativos[2] ou consulte a documentação da sua distribuição.
Ligações
Responder2
export BROWSER='path to desired browser' && xdg-open 'any url'
deveria resolver o problema.