Difference between revisions of "Xdg-open"

From ArchWiki
Jump to: navigation, search
m
(move some content around with Default Applications)
Line 1: Line 1:
 
[[Category:Desktop environments]]
 
[[Category:Desktop environments]]
 
{{lowercase title}}
 
{{lowercase title}}
xdg-open is a desktop-independent tool for configuring the default applications of a user. Many applications invoke the {{ic|xdg-open}} command internally.
+
xdg-open is a desktop-independent tool for configuring the [[default applications]] of a user. Many applications invoke the {{ic|xdg-open}} command internally.
  
 
Inside a [[desktop environment]] (e.g. [[GNOME]], [[KDE]], or [[Xfce]]), {{ic|xdg-open}} simply passes the arguments to that desktop environment's file-opener application ({{ic|gvfs-open}}, {{ic|kde-open}}, or {{ic|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]]), {{ic|xdg-open}} will use its own configuration files.
 
Inside a [[desktop environment]] (e.g. [[GNOME]], [[KDE]], or [[Xfce]]), {{ic|xdg-open}} simply passes the arguments to that desktop environment's file-opener application ({{ic|gvfs-open}}, {{ic|kde-open}}, or {{ic|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]]), {{ic|xdg-open}} will use its own configuration files.
Line 9: Line 9:
  
 
== Configuration ==
 
== Configuration ==
=== The config file ===
+
xdg-open uses the configuration file mentioned in [[Default Applications#Using MIME types and desktop entries]]. You can edit this file by using {{ic|xdg-mime}}.
{{Merge|Default Applications|Default Applications article describes (or at least should describe) the standard in general, as well as manual method of configuration}}
+
{{ic|xdg-open}} uses configuration files located at {{ic|$XDG_DATA_HOME/applications/mimeapps.list}} (for a single user; {{ic|$XDG_DATA_HOME}} defaults to {{ic|~/.local/share}}) and {{ic|/usr/share/applications/defaults.list}} (system wide). Its format is as follows:
+
[Default Applications]
+
mimetype=desktopfile1;desktopfile2...
+
For example:
+
[Default Applications]
+
text/html=firefox.desktop
+
inode/directory=kde4-dolphin.desktop;Thunar.desktop;nautilus.desktop
+
  
The best way to look up the MIME type is to read the {{ic|MimeTypes}} list in your application's {{ic|.desktop}} file (see [[Desktop Entries]] for details).
+
=== Examples ===
 
+
==== get mime type ====
Some tools are available to edit the configuration files:
+
 
+
=== xdg-mime ===
+
<ul>
+
<li>
+
 
To get mime type of {{ic|photo.jpg}}:
 
To get mime type of {{ic|photo.jpg}}:
 
{{hc|$ xdg-mime query filetype photo.jpg|
 
{{hc|$ xdg-mime query filetype photo.jpg|
Line 31: Line 18:
 
     image/jpeg
 
     image/jpeg
 
}}
 
}}
</li>
 
  
<li>
+
==== get default application ====
 
To get default {{ic|.desktop}} file starter for {{ic|image/jpeg}} mime type:
 
To get default {{ic|.desktop}} file starter for {{ic|image/jpeg}} mime type:
 
{{hc|$ xdg-mime query default image/jpeg|
 
{{hc|$ xdg-mime query default image/jpeg|
 
gpicview.desktop;
 
gpicview.desktop;
 
}}
 
}}
</li>
 
  
<li>
+
==== set the default file-browser ====
 
To make Thunar the default file-browser, i.e. the default application for opening folders:
 
To make Thunar the default file-browser, i.e. the default application for opening folders:
{{bc|$ xdg-mime default Thunar.desktop inode/directory}}
+
$ xdg-mime default Thunar.desktop inode/directory
</li>
+
  
<li>
+
==== set the default PDF viewer ====
 
To use {{Pkg|xpdf}} as the default PDF viewer:
 
To use {{Pkg|xpdf}} as the default PDF viewer:
{{bc|$ xdg-mime default xpdf.desktop application/pdf}}
+
$ xdg-mime default xpdf.desktop application/pdf
  
Previous command should create an entry in your local MIME database like this:
+
==== set the default browser ====
{{hc|~/.local/share/applications/mimeapps.list|2=
+
To set the default application for {{ic|http(s)://}} links (replace {{ic|''browser.desktop''}} by your browser's .desktop, e.g. {{ic|firefox.desktop}} or {{ic|chromium.desktop}}):
[Default Applications]
+
   $ xdg-mime default ''browser.desktop'' x-scheme-handler/http
application/pdf=xpdf.desktop
+
   $ xdg-mime default ''browser.desktop'' x-scheme-handler/https
}}
+
</li>
+
</ul>
+
 
+
==== Setting the default browser for xdg-open ====
+
 
+
{{Poor writing|The following subsections should be merged, there is no difference between Firefox and Chromium (and other browsers) in terms of configuring default browser.}}
+
 
+
===== Firefox =====
+
This can be tricky to find, so to save you some work, type the following commands:
+
 
+
   $ xdg-mime default firefox.desktop x-scheme-handler/http
+
   $ xdg-mime default firefox.desktop x-scheme-handler/https
+
  
 
or
 
or
 
+
   $ xdg-mime default ''browser.desktop'' text/html
   $ xdg-mime default firefox.desktop text/html
+
 
+
===== Chromium =====
+
<ul>
+
<li>
+
The simplest way to make Chromium the default browser is to set the {{ic|BROWSER}} environment variable:
+
{{hc|~/.profile|2=
+
if [ -n "$DISPLAY" ]; then
+
    BROWSER=chromium
+
fi
+
}}
+
  
 
To test if this was applied successfully, try to open an URL with {{ic|xdg-open}} as follows:
 
To test if this was applied successfully, try to open an URL with {{ic|xdg-open}} as follows:
 
  $ xdg-open http://google.com
 
  $ xdg-open http://google.com
 
If everything went well, either a new tab inside Chromium, or a new window would open and display the Google homepage, depending on your settings.
 
</li>
 
 
<li>
 
Another option, if you are using {{AUR|mimeo}}, is to associate {{ic|http://}} links with Chromium:
 
{{hc|~/.config/mimeo.conf|2=
 
/usr/bin/chromium
 
  ^http://
 
}}
 
</li>
 
 
<li>
 
If all of the previous configurations still do not get it working, you can try the following:
 
{{hc|~/.local/share/applications/mimeapps.list|2=
 
[Added Associations]
 
[...]
 
x-scheme-handler/http=chromium.desktop
 
 
[Default Applications]
 
[...]
 
}}
 
</li>
 
 
<li>
 
If even that didn't work, try this:
 
{{bc|$ xdg-mime default chromium.desktop x-scheme-handler/http
 
$ xdg-mime default chromium.desktop x-scheme-handler/https}}
 
</li>
 
</ul>
 
  
 
== Drop-in replacements and useful tools ==
 
== Drop-in replacements and useful tools ==

Revision as of 11:12, 2 November 2013

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. xdg-open is for use inside a desktop session only. It is not recommended to use xdg-open as root.

Configuration

xdg-open uses the configuration file mentioned in Default Applications#Using MIME types and desktop entries. You can edit this file by using xdg-mime.

Examples

get mime type

To get mime type of photo.jpg:

$ xdg-mime query filetype photo.jpg
photo.jpg
    image/jpeg

get default application

To get default .desktop file starter for image/jpeg mime type:

$ 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

set the default PDF viewer

To use xpdf as the default PDF viewer:

$ xdg-mime default xpdf.desktop application/pdf

set the default browser

To set the default application for http(s):// links (replace browser.desktop by your browser's .desktop, e.g. firefox.desktop or chromium.desktop):

 $ xdg-mime default browser.desktop x-scheme-handler/http
 $ xdg-mime default browser.desktop x-scheme-handler/https

or

 $ xdg-mime default browser.desktop text/html

To test if this was applied successfully, try to open an URL with xdg-open as follows:

$ xdg-open http://google.com

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
exproAUR Opens objects in associated applications by matching regular expressions against object name or MIME-type. file (but alternatives can be configured) 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

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.

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.

See also