Difference between revisions of "Xdg-open"

From ArchWiki
Jump to: navigation, search
(Configuration: formatting mainly)
(Configuration: replace the example entry with something more verbose)
Line 19: Line 19:
 
== Configuration ==
 
== Configuration ==
  
''xdg-open'' uses the files mentioned in [[Default applications#Using MIME types and desktop entries|Default applications]]. ''xdg-mime'' modifies the local file {{ic|~/.local/share/applications/mimeapps.list}}.
+
''xdg-open'' is configured by the files mentioned in [[Default applications#Using MIME types and desktop entries|Default applications]]. ''xdg-mime'' modifies the local file {{ic|~/.local/share/applications/mimeapps.list}}.
  
=== Query MIME type ===
+
To query the mime type used by an existing file, use {{ic|xdg-mime query '''filetype''' ''file.ext''}}. Reversely, to query the default [[desktop entry]] associated to a specific mime type, run {{ic|xdg-mime query '''default''' ''mime/type''. Common mime types include {{ic|inode/directory}} (file browser), {{ic|image/jpeg}} (JPEG images), and {{ic|application/pdf}} (PDF viewer).
  
To query the mime type of {{ic|photo.jpg}}:
+
To change the default desktop entry, use {{ic|xdg-mime '''default''' ''application.desktop'' ''mime/type''}}. To for example set [[Thunar]] as the default file browser, run:
 
 
{{hc|$ xdg-mime query filetype photo.jpg|
 
photo.jpg
 
    image/jpeg
 
}}
 
 
 
=== Query default application ===
 
 
 
To query the default [[desktop entry]] for the {{ic|image/jpeg}} mime type:
 
 
 
{{hc|$ xdg-mime query default image/jpeg|
 
gpicview.desktop;
 
}}
 
 
 
=== Set the default file-browser ===
 
 
 
To make Thunar the default file browser, i.e. the default application for opening folders:
 
  
 
  $ xdg-mime default Thunar.desktop inode/directory
 
  $ xdg-mime default Thunar.desktop inode/directory
  
=== Set the default PDF viewer ===
+
This command can take multiple mime-types, allowing related mime types to be handled by the same program. This example matches a pattern against {{ic|/etc/mime.types}} (from {{Pkg|mime-types}}), to match [[Emacs]] against all text files:
 
 
To use {{AUR|xpdf}} as the default PDF viewer:
 
  
  $ xdg-mime default xpdf.desktop application/pdf
+
  $ xdg-mime default emacs.desktop $(grep 'text/*' /etc/mime.types | awk '{ print $1 }')
  
 
=== Set the default browser ===
 
=== Set the default browser ===

Revision as of 18:10, 22 January 2015

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 (e.g. GNOME, KDE, or Xfce), xdg-open simply passes the arguments to that desktop environment's file-opener application (gvfs-open, kde-open, or exo-open, respectively), 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, e.g. 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 to a specific mime type, run {{ic|xdg-mime query default mime/type. Common mime types include inode/directory (file browser), image/jpeg (JPEG images), and application/pdf (PDF viewer).

To change the default desktop entry, use xdg-mime default application.desktop mime/type. To for example set Thunar as the default file browser, run:

$ xdg-mime default Thunar.desktop inode/directory

This command can take multiple mime-types, allowing related mime types to be handled by the same program. This example matches a pattern against /etc/mime.types (from mime-types), to match Emacs against all text files:

$ xdg-mime default emacs.desktop $(grep 'text/*' /etc/mime.types | awk '{ print $1 }')

Set the default browser

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

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

To set the default application for http(s):// links:

$ 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

Drop-in replacements and useful tools

xdg-open replacements

Name/Package Description Based on Configuration file
busking-gitAUR A simple, regex-based xdg-open replacement. perl-file-mimeinfo custom
linopenAUR An intelligent and suckless replacement for xdg-open. file custom
mimeoAUR Open files by MIME-type or file name using regular expressions. It can be used on its own or through xdg-utils-mimeoAUR. file standard mimeapps.list or defaults.list; custom is optional
mimi-gitAUR A working replacement for xdg-open. file custom
easeAUR Opens files and URLs with applications associated by name and/or mimetype. With a wrapper script, can serve as a working replacement for xdg-open giving maximum control over associations. Bash expressions and regexes; mimetype determination commands also customizable. SQLite database for customized associations or freedesktop.org standard mimeapps.list and mimeinfo.cache files for mimetype associations. Desktop application files are located according to freedesktop.org standards.
ayrAUR Manages menus of application launchers, either executables or desktop files. Also opens files and URLs with launchers, desktop files, or applications associated by name or mimetype. Can use a wrapper script to replace xdg-open. file and/or perl-file-mimeinfo; other alternatives and fallbacks can be configured. freedesktop.org standard mimeapps.list and mimeinfo.cache (and the older defaults.list) to determine mimetype associations. Optionally can also use regular expressions to match file or URL names to applications.
sx-open A very simple xdg-open replacement in bash. file and bash regexes custom

run-mailcap

The .mailcap file format used by the mutt mail program is way easier to read and write. The run-mailcapAUR package from the AUR provides a executable that could be easily symlinked to /usr/bin/xdg-open, but that parser is unable to handle directories or links. The simplest solution would be to install mimeo from the AUR too and create a /usr/bin/xdg-open with the following content:

#!/bin/sh
run-mailcap $1 || mimeo $1

Then use the defaults.list at ~/.local/share/applications/ to associate URLs and folders with applications and the .mailcap file for normal mimetypes.

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.