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ê?
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.
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.
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.
xdg-mime query default image/png
retornoswine-extension-png.desktop
:-)@ 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
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 executare 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_version
está disponível, se for o caso, será iniciadorun-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.
fonte
xdg-mime query filetype example.png
verificar 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.