# xdg-open

Related articles

- Default applications
- Environment variables
- Desktop entries

This article or section is a candidate for merging with Default applications.

Notes: Talk:Xdg-open#About Merge (Discuss in Talk:Xdg-open#)

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.

## 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

The factual accuracy of this article or section is disputed.

Reason: There are many more MIME types for browsers (Discuss in Talk:Xdg-open#)

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

This article or section needs language, wiki syntax or style improvements.

Reason: There may be some benefit to making this a table, but Template:App including upstream URLs gives all needed information in a simple manner (Discuss in Talk:Xdg-open#)

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

Note: Some of the above packages replace `xdg-utils`. Those that do not can be symbolically linked to xdg-open in the user's `$PATH` above `/usr/bin`, but some applications hard-code the absolute path `/usr/bin/xdg-open`. In this case, install xdg-utils-no-openAUR from the AUR and copy the replacement to `/usr/bin/xdg-open`.

### mailcap

This article or section needs expansion.

Reason: When using run-mailcapAUR, xdg-open may refer to it.[1] It should then clearly not be combined with the below file to prevent endless loops. (Discuss in Talk:Xdg-open#)

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.

Category:

- Desktop environments