There are numerous places to configure default applications on Linux. This page will attempt to address problems related to the following issues:
- You need to change a certain default application (e.g. after switching desktop environments), but there appears to be nowhere to configure it, or an application ignores your configuration
- You regularly switch back and forth between several desktop environments, and need to configure some applications (e.g. file manager) on a per-desktop-environment basis, but need to configure others (e.g. web browser) globally
Until there is more information/organization, it will just be a dumping ground of random tricks
- 1 Changing a default application
- 2 Maintaining settings for multiple desktop environments
- 3 Troubleshooting
Changing a default application
Many applications invoke the Template:Codeline command internally.
You can bind mimetypes to .desktop files in Template:Filename with the xdg-mime command:
# This will make Thunar the default file-browser, i.e. the default application for opening folders. xdg-mime default Thunar.desktop inode/directory
The config file
[Default Applications] mimetype=desktopfile1;desktopfile2...
[Default Applications] text/html=firefox.desktop inode/directory=kde4-dolphin.desktop;Thunar.desktop;nautilus.desktop
You can't use wildcards such as image/* for opening all kinds of images.
The xdg-open settings are usually recognized by Gnome, but if they aren't, there are still other methods.
As far as I can tell, on Gnome 3, there are two configuration systems, GConf (older) and dconf (newer). GConf can be configured with Template:Codeline; in particular, you can try messing with the Template:Filename key, but changing settings there didn't fix any problems I had. dconf can be configured with the Template:Codeline command.
To configure the default terminal for the package nautilus-open-terminal to Konsole, use
$ gsettings set org.gnome.desktop.default-applications.terminal exec konsole $ gsettings set org.gnome.desktop.default-applications.terminal exec-arg "'-e'"
The second command tells Template:Codeline to expect a command to be passed to it as part of the invocation. nautilus-open-terminal needs this because it passes a Template:Codeline command in order to switch to the appropriate directory. For example, opening a terminal in your Template:Filename directory will invoke something like
$ konsole -e cd "~/Desktop"
To configure the web browser used by the AUR package gnome-gmail-notifier, run
Exactly how the config files mesh together
This is not necessary reading, but here is, as nearly as I can tell, xdg-open looks for the following sections in the following files.
~/.local/share/applications/mimeapps.list, [Default Applications] section ~/.local/share/applications/mimeapps.list, [Added Applications] section ~/.local/share/applications/defaults.list /usr/share/applications/mimeapps.list, [Default Applications] section /usr/share/applications/mimeapps.list, [Added Applications] section /usr/share/applications/defaults.list
Note that ordinarily, if a higher-precedence config file (or config file section) specifies an application that is not installed, it will fall-back to a lower-precedence config file (or section). However, if a non-existent application is specified in any Template:Filename file, then all of the Template:Filename files will be ignored for that MIME type.
See also this page on freedesktop.org, "Default application ordering" section.
make xdg-open a wrapper for exo-open
You might want to make xdg-open a wrapper for exo-open from Xfce, because exo-open tends to be more user-friendly to configure outside a desktop-environment. To do so, make sure that your configuration under .local/share/applications is gone (all those .list files) and insert the following somewhere in your .xinitrc:
This will make xdg-open use exo-open, because it assumes it is inside Xfce.
To set your default applications in exo-open, launch the GTK GUI with
Maintaining settings for multiple desktop environments
More info later...
Sometimes, a certain application will not appear in the right-click Open With... dialog. To fix this problem, locate the Template:Filename file in Template:Filename, edit it as root, and add Template:Codeline to the end of the Template:Codeline line. For example, Kile currently has this problem; you need to edit Template:Filename and change the line reading Template:Codeline to read Template:Codeline. Also, please file a bug against the upstream project if you notice this problem.