Given xdg-open and an extension, is there a way to get the application which xdg-open is set to for that particular extension?
For example given xdg-open
and .jpg
the result is eog
.
Given xdg-open and an extension, is there a way to get the application which xdg-open is set to for that particular extension?
For example given xdg-open
and .jpg
the result is eog
.
AFAIK the choice of action is based on the file's mimetype rather than its extension.
At least on Ubuntu, you should be able to use the query
action of xdg-mime
to show the default application for a specific mimetype
$ xdg-mime query default image/jpeg
eog.desktop
You can check the mimetype for a particular file using xdg-mime query filetype
e.g.
$ xdg-mime query filetype kqDRdnW.jpg
image/jpeg
or using the file
command e.g. file --mime-type <file>
See man xdg-mime
for further usage information.
xdg-mime query filetype <file_you_want_the_mimetype_of>
xdg-mime query default
doesn't always work if xdg-open
just calls an underlying tool (eg pcmanfm
); the example you used in your answer returns nothing on my LXDE system.
var="xdg-mime query default image/jpeg" && $(${var%.desktop})
To query the mime type used by an existing file by using xdg-utils
, it works as:
$ xdg-mime query filetype yourfile.xxx
You can also set a new default, for instance to change an associated desktop entry by setting Thunar - a modern file manager for the Xfce Desktop Environment - as the default file browser you should enter:
$ xdg-mime default Thunar.desktop inode/directory
Or for example to set the default application for http(s)://
internet protocols, you can use:
$ xdg-mime default midori.desktop x-scheme-handler/http
OR
$ xdg-mime default midori.desktop x-scheme-handler/https
rpm
based systems; it's part of the standard desktop and works on Debian (for example). Unfortunately this is how to set a default value; it doesn't say how to find what value is set. And xdg-mime query default
doesn't always report what it will do if xdg-open
calls an underlying desktop program (eg pcmanfm
on LXDE).