Pierre-Henry Soria – CTO Insights, Software Architecture & Product Leadership

Set a Default Application on Linux with xdg-mime

My original article changed /etc/gnome/defaults.list with an editor running as root. That advice was tied to an old Ubuntu configuration and could be overwritten by an update.

I now change the association at user level with xdg-mime. This follows the desktop MIME association system instead of modifying a distribution file.

Identify the MIME Type

Linux desktop environments choose an application from the file’s MIME type, not only from its extension.

I start with a real file:

1xdg-mime query filetype ./notes.txt

For a text file, the result will often be:

1text/plain

I do not assume that every Markdown, image, or archive file has the same type on every system. I query one of the files I actually need to open.

Check the Current Handler

I can then ask which desktop entry handles that MIME type:

1xdg-mime query default text/plain

The command returns a desktop file ID such as org.gnome.TextEditor.desktop or geany.desktop. A desktop file describes how an installed graphical application is launched and which file types it supports.

Find the Application’s Desktop File

If I do not know the desktop file ID, I search the standard application directories. For Geany, for example:

1find /usr/share/applications ~/.local/share/applications \
2  -iname '*geany*.desktop' 2>/dev/null

The ID passed to xdg-mime is normally the filename, not its full path.

Set and Verify the Default

To use Geany for plain-text files:

1xdg-mime default geany.desktop text/plain
2xdg-mime query default text/plain

I run these commands inside my desktop session and without sudo. The xdg-mime manual specifically treats the default-handler operation as a desktop-user action. A desktop environment can also apply its own policy, which is why I always run the query again.

I finish with an end-to-end check:

1xdg-open ./notes.txt

If the wrong application still opens, I check that the desktop file exists, declares support for the MIME type, and is the value returned by the query. The underlying associations are stored in mimeapps.list files with a defined order of precedence, but I prefer the command-line tool for a normal change.

The freedesktop.org MIME applications specification explains how defaults are selected. The xdg-mime manual documents the commands used here.

The durable lesson from my original Ubuntu note is still useful: when a desktop setting is missing from the graphical interface, inspect the MIME association before editing a system configuration file.


Pierre-Henry Soria

GitHub · PierreHenry.Dev · YouTube

<< Previous Post

|

Next Post >>

#Linux #Ubuntu #Xdg-Mime #MIME Types #Desktop Applications #Command Line