How does Ubuntu or any other Linux systems store file associations?
Is there some /etc/asscociations
file or something?
I know that I can right click on file and change it via "open with", but I'm just curious to know how it's stored internally.
file associationfilesmime-type
How does Ubuntu or any other Linux systems store file associations?
Is there some /etc/asscociations
file or something?
I know that I can right click on file and change it via "open with", but I'm just curious to know how it's stored internally.
Best Answer
The file manager (Nautilus, by default) uses the MIME type of a file to determine which program to open it with. When an application is installed, it can specify what MIME types it can open and the command to use to open the files in the .desktop file which is placed in
/usr/share/applications
. This is the file used for menus, desktop shortcuts, etc.For example, GIMP has the following .desktop file:
See the
MimeType
field - this lists the supported MIME types.TheExec
field tells the system to use the commandgimp-2.7 %U
, replacing '%U' with the files to open. (Note GIMP 2.7 is a version I have installed from a PPA, so is higher than the current version in the Ubuntu repositories).When the application package is installed, the system extracts this MIME type data into a more easily accessible database because looking in each .desktop file would take too long if it was done every time a file was opened.
This tells the system what applications can be used for that MIME type and provides the applications in the 'Open With' list. The default is defined elsewhere. The file
/usr/share/applications/defaults.list
provides the information for the system defaults. Unless you choose otherwise, these are the applications used when you 'Open' a file.