Onde o firefox obtém os aplicativos “padrão” para abrir arquivos?

10

Por padrão, o Firefox (33.0) no meu FreeBSD 11.0-CURRENT tem o aplicativo padrão para abrir arquivos PDF definidos no Inkscape. O Firefox se lembra da minha escolha anterior, evince , no diálogo “O que o Firefox deve fazer com este arquivo?”, Então até recentemente eu estava confuso de onde vinha essa configuração, mas a maioria ignorou porque mal me preocupa.

No entanto, comecei recentemente a usar o Zotero como meu banco de dados de literatura. O Zotero roda como um plugin do firefox, e ignora as escolhas feitas nas minhas preferências do Firefox para abrir arquivos PDF com o evince ou me perguntar o que fazer com eles, e apenas os abre usando o Inkscape. Isso me fez tentar acompanhar este item de configuração específico do Firefox, mas não consegui encontrar onde o padrão está definido.

Não encontrei a string Inkscape (ou inkscape ) em nenhum arquivo relacionado ao Firefox em meu diretório pessoal.

    
por Anaphory 17.10.2014 / 18:14

2 respostas

12

Um link para uma "pergunta semelhante" ( comportamento de aplicativos padrão xdg-open - não obviamente relacionado, mas alguma experimentação mostrou que o comportamento é de fato equivalente ao de xdg-open ) me levou mais fundo no buraco do coelho. Embora o Firefox não dependa ou herde as regras de xdg-open , ele usa os arquivos de especificação MIME da mesma forma que xdg-open .

Em uma base de usuário, o comportamento de abertura de MIME é configurado pelo arquivo de especificação ~/.local/share/applications/mimeapps.list .

Para mim, este arquivo contém apenas alguns protocolos razoáveis e arquivos HTML (e similares) conectados a userapp-Firefox-??????.desktop , mas você pode adicionar facilmente uma linha como

application/pdf=evince.desktop

para resolver esse problema por usuário. Se o arquivo ainda não existir, adicione um cabeçalho de seção, como

[Default Applications]
application/pdf=evince.desktop

Mais abaixo, os tipos MIME são definidos em /usr/local/share/applications/mimeinfo.cache (isso pode ser /usr/share/… se você não estiver em um sistema FreeBSD), que lista application/pdf=inkscape.desktop;evince.desktop; . Tanto evince.desktop como inkscape.desktop nessa pasta contêm MimeType=[…]application/pdf;[…] .

O mimeinfo.cache é gerado automaticamente a partir dos tipos mime listados nos arquivos .desktop sem qualquer ordem bem definida, portanto você terá que remover o tipo mime PDF do Inkscape e gerar novamente o cache usando update-mime-database , ou gere um mimeapps.list (globalmente em /usr/local/share/applications/ ou para seu usuário em ~/.local/share/applications/mimeapps.list ).

    
por 17.10.2014 / 18:14
3

No Firefox 38.8.0 ESR, sob o Debian Lenny com o GNOME 2, descobri que o aplicativo associado via XDG (descrito em a resposta do OP ) é usada somente ao abrir um arquivo baixado de Downloads na Biblioteca.

E mesmo assim, a implementação dá resultados inconsistentes com xdg-open , pois ignora os caminhos específicos do GNOME (no meu caso /usr/share/gnome/applications/defaults.list , que é um link simbólico para /etc/gnome-vfs-2.0/defaults.list ). Eu tive que especificar application/pdf=evince.desktop no meu ~/.local/share/applications/defaults.list . (Observe que defaults.list foi mesclado em mimeapps.list em versões mais recentes do XDG.)

Em vez de XDG, os recursos de metamail (mailcap) são usados para resolver o aplicativo associado nos seguintes casos de uso:

  • abrindo o arquivo baixado do painel de download (exibido após pressionar o botão de download na barra de ferramentas)
  • aplicativo padrão no menu suspenso na caixa de diálogo de download de arquivos
  • aplicativo padrão na lista suspensa em Preferências → Aplicativos ( about:preferences#applications )

A preferência em about:preferences#applications é usada ao navegar para um URL com esse tipo de conteúdo, a menos que o download seja forçado.

O Mailcap é um mecanismo mais antigo que o XDG e tem suas raízes no e-mail, de onde o MIME também vem. O utilitário run-mailcap é analógico para xdg-open . Sua configuração é composta por três arquivos (em precedência decrescente):

  • ~/.mailcap - entradas do usuário
  • /etc/mailcap.order - especificação de pedido de entradas em todo o sistema
  • /etc/mailcap - entradas em todo o sistema (mesmo formato das entradas do usuário)

Juntos, eles produzem uma lista de entradas de uma linha que especificam o aplicativo a ser usado para qualquer tipo MIME. As entradas são correspondidas de cima para baixo, então o que vem primeiro tem precedência.

Para fazer uma alteração em todo o sistema de precedência de entradas, você precisa editar /etc/mailcap.order e executar update-mime .

Para substituir algumas das entradas ou especificar a sua própria, em todo o sistema, você precisa editar a seção superior (destinada a entradas criadas manualmente) de /etc/mailcap e executar update-mime . Veja os comentários na seção superior.

Para entradas de usuário e substituições, use ~/.mailcap . As alterações entram em vigor imediatamente. Não existe ~/.mailcap.order ; se você quiser alterar a precedência de entradas, reorganize-as fisicamente (se estiverem em ~/.mailcap ) ou substitua-as pela versão preferida (se estiverem em /etc/mailcap ).

Veja man update-mime , man mailcap e man mailcap.order .

Observe que alguns aplicativos usam utilitários genéricos (como x-www-browser ou pager ) em vez da detecção do aplicativo preferido. Talvez seja necessário usar update-alternatives ou um mecanismo semelhante para escolher a implementação preferida de um utilitário genérico na sua distro. Ou, para substituir uma alternativa preferencial em todo o sistema para um usuário específico, defina variáveis de ambiente, como EDITOR (ou VISUAL ), PAGER e BROWSER . Eles são suportados por sensible-browser e outras ferramentas, muitas vezes mais específicas (por exemplo, git commit usa EDITOR e VISUAL ).

    
por 14.05.2017 / 14:42