Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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.

share|improve this question
add comment

4 Answers 4

up vote 34 down vote accepted

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:

[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;

See the MimeType field - this lists the supported MIME types.The Exec field tells the system to use the command gimp-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.

share|improve this answer
    
woow. very informative. thanks dv3500ea –  Stann Dec 7 '10 at 21:10
2  
After changing MIME types in /usr/share/applications .desktop files, is there a command to re-create that MIME database to see new associations in action? –  Redsandro Oct 10 '12 at 16:40
4  
Yes. sudo update-desktop-database See jarrpa.net/2011/10/28/… –  NoBugs Dec 22 '12 at 4:13
add comment

To supplement dv3500ea's excellent answer, I would like to add some information about what happens when you change your associations.

While the defaults.list (which you can find by typing 'locate defaults.list') provides the list of applications that are associated with each MIME type, any customizations that you make are stored in your home directory, in ~/.local/share/applications/mimeapps.list. So if you add or remove associations, or change the default association, this file is updated.

The GNOME Desktop System Administration Guide at http://library.gnome.org/admin/system-admin-guide/stable/ does not appear to discuss mimeapps.list, but I found the following description on http://live.gnome.org/SysAdminGuideUpdate:

mimeapps.list is located in $XDG_DATA_DIRS/applications. Its purpose is to add or remove mime associations from applications. nautilus writes ~/.local/share/applications/mimeapps.list when the user makes changes in the "Open With" dialog.

share|improve this answer
    
But using Ubuntu 12.04, I realize that the mimeapps.list is overridden by entries in the defaults.list. –  feeela Jun 25 '12 at 12:55
add comment

Create a file truecrypt.desktop in ~/.local/share/applications with the following lines:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes

then edit the file ~/.local/share/applications/mimeapps.list and add the following line:

application/octet-stream=truecrypt.desktop

I found out the mime type of Truecrypt by following running this command:

file --mime-type -b <any truecrypt filename>
share|improve this answer
    
Nice answer, because it works for those of use who use kde, but have a couple of gtk-native programs, like firefox. –  naught101 Apr 24 '12 at 5:57
add comment

I found this link concerning default association, it might be helpful. https://wiki.archlinux.org/index.php/Default_Applications
for global association:

/usr/share/applications/mimeapps.list

per user association:

~/.local/share/applications/mimeapps.list

syntax is as follow:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN

[Added Associations] section is used to specify preferred (default) applications in decreasing preference. which means desktopfile1 is the most preferred and desktopfileN is least preferred.
[Removed Associations] section is used to explicitly remove any previously inherited associations.

share|improve this answer
    
This comes from an archlinux site, doesn't necessarily apply on Ubuntu, /usr/share/applications/mimeapps.list doesn't exist. –  guntbert Aug 23 '13 at 16:44
    
Thank you for pointing this out, however the user said in Ubuntu or other Linux systems, this mean this is an answer to his question too :P. –  MusuNaji Aug 23 '13 at 17:00
1  
This answer is perfectly ok if you replace mimeapps.desktop with defaults.desktop –  szx Apr 26 at 9:26
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.