There are two ways a MIME type and a .desktop
file are associated.
Method 1
The first way is through *.list
MIME config files (many exist on the system, see below). For example, a typical entry in ~/.local/share/applications/mimeapps.list
might be:
[Default Applications]
application/x-bittorrent=transmission.desktop;deluge.desktop
This means that the preferred application is transmission
, if it cannot be found, then the second choice is deluge
.
Method 2
The second way is through the .desktop
file itself. The application advertises which MIME types it can open. For example, in transmission-gtk.desktop
, we have the following line
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
which indicates that this program can handle those two MIME types.
Which Application To Use?
The association between MIME types and Applications is defined by the freedesktop.org
standards. Here are the steps taken when determining which application (i.e. which .desktop
file) to launch for a given MIME type.
Step 1: Look for an association in the MIME config files. The lookup order is as follows:
$XDG_CONFIG_HOME/$desktop-mimeapps.list
$XDG_CONFIG_HOME/mimeapps.list
$XDG_CONFIG_DIRS/$desktop-mimeapps.list
$XDG_CONFIG_DIRS/mimeapps.list
$XDG_DATA_HOME/applications/$desktop-mimeapps.list
$XDG_DATA_HOME/applications/mimeapps.list
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list
$XDG_DATA_DIRS/applications/mimeapps.list
Step 2: Once all levels have been checked, if no entry could be found, the implementations can pick any of the .desktop
files associated with the MIME type, taking into account added and removed associations (which exist in the MIME config files).
Although you do not have any MIME config files, the reason that transmission
is being used is because of Step 2 as defined by the standard. Check your transmission-gtk.desktop
file to see whether it advertises its ability to open torrents.
I suggest reading the linked document for a full understanding.
Save the following as e.g. less.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/x-less">
<comment>LESS file</comment>
<glob pattern="*.less"/>
</mime-type>
</mime-info>
Then open a Terminal and run
xdg-mime install --novendor less.xml
Now all files with the extension .less
should have the MIME type text/x-less
.
See Shared MIME-info Database if you want to learn more about how MIME types are defined.
Best Answer
You can add mime types to a system by using xdg-mime.
Command to add a new mime type:
xdg-mime install [--mode mode] [--novendor] mimetypes-file
From the man page:
Alternatively you could use the ubuntu wiki on mime types. This uses manual instructions to edit in this text
gksudo gedit /etc/mime.types
and to edit it something like
text/extension extension
This editing of /etc/mime.types can also be accomplished with the command line stream line editor
sed
but I would suggest using xdg-mime.