Xdg-open: Difference between revisions
m (→Configuration: typo typo :)) |
Andy Crowd (talk | contribs) (→Set the default browser: added my script example and removed tag {{Accuracy|There are many more MIME types for browsers}}. Section is similar to other "association " and can be removed.) |
||
Line 49: | Line 49: | ||
=== Set the default browser === | === Set the default browser === | ||
{{ | Internet protocols are using ''x-scheme-handler'' as first part of MIME-type. To show all available ''x-scheme-handler'' MIME-types and related to them ''*.desktop'' files in your system use tool {{AUR|lsdesktopf}}. | ||
lsdesktopf --gm | grep x-scheme-handler | |||
To set the default application for {{ic|http(s)://}} web URLs, write | To set the default application for {{ic|http(s)://}} web URLs, write | ||
Revision as of 19:35, 16 May 2016
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.
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 ~/.config/mimeapps.list
and ~/.local/share/applications/mimeapps.list
(deprecated).
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:
$ 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
Note that you should not specify the complete path, but only the name of the .desktop
file.
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
Internet protocols are using x-scheme-handler as first part of MIME-type. To show all available x-scheme-handler MIME-types and related to them *.desktop files in your system use tool lsdesktopfAUR.
lsdesktopf --gm | grep x-scheme-handler
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[broken link: Template:Aur-mirror] | 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[broken link: Template:Aur-mirror] | Regular expressions | file, bash regex | custom |
ranger (rifle command) | MIME-type, name, regular expressions | custom |
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
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.