Users, system administrators, application vendors and distributions can change associations between applications and mimetypes by writing into a file called mimeapps.list.
The lookup order for this file is as follows:
|$XDG_CONFIG_HOME/$desktop-mimeapps.list||user overrides, desktop-specific (for advanced users)|
|$XDG_CONFIG_HOME/mimeapps.list||user overrides (recommended location for user configuration GUIs)|
|$XDG_CONFIG_DIRS/$desktop-mimeapps.list||sysadmin and ISV overrides, desktop-specific|
|$XDG_CONFIG_DIRS/mimeapps.list||sysadmin and ISV overrides|
|$XDG_DATA_HOME/applications/$desktop-mimeapps.list||for completeness, deprecated, desktop-specific|
|$XDG_DATA_HOME/applications/mimeapps.list||for compatibility, deprecated|
|$XDG_DATA_DIRS/applications/$desktop-mimeapps.list||distribution-provided defaults, desktop-specific|
In this table, $desktop is one of the names of the current desktop, lowercase (for instance, kde, gnome, xfce, etc.)
This is determined from taking the ascii-lowercase form of a component the environment variable $XDG_CURRENT_DESKTOP, which is a colon-separated list of names that the current desktop is known as.
The $desktop variable should be each of these values in turn.
All of the above files are referred to as "mimeapps.list" in the rest of this specification, for simplicity.
Note that the desktop-specific files can only be used for specifying the default application for a given type. It is not possible to add or remove associations from these files.
The algorithms for determining the list of all applications associated with a mime type and for determining the default application are (almost) completely unrelated, and so they are presented separately.