Como o comando xdg-open sabe qual aplicativo usar para abrir um arquivo?

21

Eu esperava que o comando xdg-open usasse o mesmo aplicativo que é aberto ao clicar duas vezes no arquivo no gerenciador de arquivos padrão, mas isso nem sempre é verdade.

Por exemplo, meu DE é XFCE, meu gerenciador de arquivos é Thunar e meu visualizador de imagens padrão é Ristretto. No entanto, xdg-open example.pngabre o arquivo PNG de exemplo no Pinta. Por quê?

Ivan
fonte

Respostas:

23

O xdg-open é uma ferramenta independente da área de trabalho para configurar os aplicativos padrão de um usuário. Muitos aplicativos chamam o comando xdg-open internamente. Dentro de um ambiente de área de trabalho (como GNOME, KDE ou Xfce), o xdg-open simplesmente passa os argumentos para o aplicativo de abertura de arquivo do ambiente de área de trabalho (por exemplo, gvfs-open, kde-open ou exo-open). o que significa que as associações são deixadas para o ambiente da área de trabalho. Quando nenhum ambiente de área de trabalho é detectado (por exemplo, quando se executa um gerenciador de janelas independente como, por exemplo, Openbox), o xdg-open usa seus próprios arquivos de configuração.

do archwiki

específico da sua pergunta, você pode tentar isso para definir o aplicativo padrão associado ao arquivo png:

xdg-mime default <ristretto.desktop> image/png

você precisa descobrir exatamente o nome do arquivo da área de trabalho do Ristretto. depois, você pode verificar com isso:

xdg-mime query default image/png
oxnz
fonte
1
Isso pode ser considerado uma resposta formal, mas na verdade não explica o fenômeno que mencionei.
Ivan
atualizado, verifique novamente
oxnz 23/12/2015
Obrigado. E isso é muito engraçado: xdg-mime query default image/pngretornos wine-extension-png.desktop:-)
Ivan
2

@ Ivan Isso provavelmente acontece, porque você não forneceu o tipo de arquivo correto ao solicitar o aplicativo padrão. Importante é como o xdg chama esse tipo de arquivo específico. Isso pode ser facilmente descoberto executando

xdg-mime query filetype example.png

Como exemplo, se eu fizer isso com um arquivo png específico no meu computador, ele retornará image/x-apple-ios-png. Depois de descobrir o tipo de arquivo real, você pode executar

xdg-mime query default <new filetype>

e obtenha o aplicativo usado pelo xdg para esse tipo de arquivo específico. Caso nenhum aplicativo seja definido para esse tipo de arquivo, o xdg-open verifica se o arquivo /etc/debian_versionestá disponível, se for o caso, será iniciado run-mailcap, o que é muito semelhante ao xdg-open e tenta encontrar um programa para abrir o arquivo também .

Somente se isso falhar também, o xdg-open solicitará ao usuário que defina um programa para abrir o arquivo.

lauve
fonte
Não é isso que o oxnz já escreveu?
Jeff Schaller
O oxny menciona apenas como definir e verificar o aplicativo para um tipo de arquivo conhecido. Ele não tem a referência para xdg-mime query filetype example.pngverificar o tipo de arquivo de um arquivo específico, porque simplesmente supor que um arquivo .png também se enquadre na categoria image / png nem sempre está correto. Olhando para os comentários de Ivan , acho que seu problema ainda não foi resolvido.
lauve 15/09/18