xdg-open
Related articles
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 environments 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.
Contents
Installation
xdg-open is part of the xdg-utils package available in the official repositories. It is for use inside a desktop session only, and should not be run as root.
If you run xdg-open without a desktop environment, you should also install perl-file-mimeinfo, or xdg-utils-mimeoAUR and mimeoAUR from the AUR for a faster alternative.
Configuration
xdg-open is configured by the files mentioned in Default applications. xdg-mime modifies the local file ~/.local/share/applications/mimeapps.list.
To query the mime type used by an existing file, use
$ xdg-mime query filetype file.ext
Reversely, to query the default desktop entry associated with a specific mime type, run
$ xdg-mime query default mime/type
Examples for mime/type can be:
inode/directory (file browser) image/jpeg (JPEG images) application/pdf (PDF viewer) or others
To change an associated desktop entry, use the following command. You can find the possible desktop entries in /usr/share/applications.
$ xdg-mime default application.desktop mime/type
For example set Thunar as the default file browser just run:
$ xdg-mime default Thunar.desktop inode/directory
This command can take multiple mime-types, allowing related files to be handled by the same program. The example below associates Emacs to all known source files:
$ xdg-mime default emacs.desktop $(grep '^text/x-*' /usr/share/mime/types)
Set the default browser
To set the default application for http(s):// web URLs, write
$ xdg-mime default browser.desktop x-scheme-handler/http $ xdg-mime default browser.desktop x-scheme-handler/https
To do so for .html files:
$ xdg-mime default browser.desktop text/html
Alternatively, run:
$ xdg-settings set default-web-browser browser.desktop
To test if this was applied successfully, try to open an URL with xdg-open as follows:
$ xdg-open https://archlinux.org
perl-file-mimeinfo
xdg-open uses perl-file-mimeinfo as a fallback ("generic") method if no desktop environment is detected. It can be invoked directly with:
$ mimeopen -d /path/to/file
You are asked which application to use when opening /path/to/file:
Please choose a default application for files of type text/plain
1) notepad (wine-extension-txt)
2) Leafpad (leafpad)
3) OpenOffice.org Writer (writer)
4) gVim (gvim)
5) Other...
Your answer becomes the default handler for that type of file. Mimeopen is installed as /usr/bin/vendor_perl/mimeopen.
Drop-in replacements and useful tools
xdg-open replacements
| Name/Package | Method | Based on | Configuration file |
|---|---|---|---|
| busking-gitAUR | Regular expressions | perl-file-mimeinfo | custom |
| linopenAUR | file | custom | |
| mimeoAUR | MIME-type, regular expressions | file | mimeapps.list, defaults.list; custom is optional
|
| mimi-gitAUR | file | custom | |
| whippetAUR | MIME-type, name, regular expressions | SQLite database or file, perl-file-mimeinfo, etc | custom SQLite database or mimeapps.list
|
| ayrAUR | MIME-type, name, regular expressions | file or perl-file-mimeinfo, etc | mimeapps.list, defaults.list
|
| sx-openAUR | Regular expressions | file, bash regex | custom |
mailcap
The .mailcap file format is used by mail programs such as mutt and sylpheed. To have those programs use xdg-open, edit ~/.mailcap:
~/.mailcap
*/*; xdg-open "%s
mimetype
mimetype in perl-file-mimeinfo package can display some mimetype-related information about a file.
For example:
$ mimetype file.ext
returns the mimetype of a file,
$ mimetype -d file.extension
returns a description of that mimetype.
When xdg-open fails to detect one of the desktop environments it knows about, it normally falls back to using file -i, which uses only file contents to determine the mimetype, resulting in some file types not being detected correctly. With mimetype available, xdg-open will use that instead, with better detection results, as mimetype uses the information in the shared mime info database.
Environment variables
Some environment variables, such as BROWSER, DE, and DESKTOP_SESSION, will change the behaviour of the default xdg-open. See Environment variables for more information.