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

12

Espero que o comando xdg-open use o mesmo aplicativo que é aberto quando clico duas vezes no arquivo no gerenciador de arquivos padrão, mas isso nem sempre é verdade.

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

    
por Ivan 23.12.2015 / 03:44

2 respostas

12

xdg-open is a desktop-independent tool for configuring the default applications of a user. Many applications invoke the xdg-open command internally. Inside a desktop environment (like GNOME, KDE, or Xfce), xdg-open simply passes the arguments to those desktop environment's file-opener application (eg. gvfs-open, kde-open, or exo-open). which means that the associations are left up to the desktop environment. When no desktop environment is detected (for example when one runs a standalone window manager like eg. Openbox), xdg-open will use its own configuration files.

from archwiki

específico para sua pergunta, você poderia 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 de desktop do Ristretto. depois, você poderia verificar isso com isto:

xdg-mime query default image/png
    
por 23.12.2015 / 03:54
0

@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

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

xdg-mime query default <new filetype>

e obtenha o aplicativo usado pelo xdg para esse tipo de arquivo específico. Caso nenhuma aplicação seja definida para este tipo de arquivo, o xdg-open verifica se o arquivo /etc/debian_version está disponível, se este for o caso, ele lançará run-mailcap , que é muito semelhante ao xdg-open e tenta encontrar um programa para abrir o arquivo também.

Somente se isso falhar, o xdg-open pedirá ao usuário para definir um programa para abrir o arquivo.

    
por 14.09.2018 / 20:26

Tags