Respostas:
AFAIK, a escolha da ação é baseada no tipo de mimet do arquivo e não na sua extensão.
Pelo menos no Ubuntu, você deve poder usar a query
ação de xdg-mime
para mostrar o aplicativo padrão para um tipo de mim específico
$ xdg-mime query default image/jpeg
eog.desktop
Você pode verificar o tipo de mimet para um arquivo específico usando, xdg-mime query filetype
por exemplo,
$ xdg-mime query filetype kqDRdnW.jpg
image/jpeg
ou usando o file
comando, por exemplofile --mime-type <file>
Veja man xdg-mime
para mais informações de uso.
xdg-mime query filetype <file_you_want_the_mimetype_of>
xdg-mime query default
, nem sempre funciona se xdg-open
apenas chama uma ferramenta subjacente (por exemplo pcmanfm
); o exemplo que você usou na sua resposta não retorna nada no meu sistema LXDE.
var="xdg-mime query default image/jpeg" && $(${var%.desktop})
Para consultar o tipo mime usado por um arquivo existente usando xdg-utils
, ele funciona como:
$ xdg-mime query filetype yourfile.xxx
Você também pode definir um novo padrão, por exemplo, para alterar uma entrada da área de trabalho associada, configurando Thunar - um gerenciador de arquivos moderno para o Xfce Desktop Environment - como o navegador de arquivos padrão que você deve inserir:
$ xdg-mime default Thunar.desktop inode/directory
Ou, por exemplo, para definir o aplicativo padrão para http(s)://
protocolos da Internet, você pode usar:
$ xdg-mime default midori.desktop x-scheme-handler/http
OR
$ xdg-mime default midori.desktop x-scheme-handler/https
rpm
sistemas baseados; faz parte da área de trabalho padrão e funciona no Debian (por exemplo). Infelizmente, é assim que se define um valor padrão; não diz como encontrar qual valor está definido. E xdg-mime query default
nem sempre informa o que fará se xdg-open
chamar um programa de desktop subjacente (por exemplo, pcmanfm
no LXDE).