Your question is all about MIME types.
MIME type is resolved not only by file extension (glob patterns), but also by file contents (magic rules).
See http://library.gnome.org/admin/system-admin-guide/stable/mimetypes-modifying.html.en#-note-id301200:
When no glob patterns or magic rules match a file, then it is resolved
to the MIME type text/plain if it contains textual data or
application/octet-stream for binary data. If the file is empty, then
it defaults to text/plain.
So exactly as you noted, file with unknown extension is resolved to text/plain, but if it contains binary data, it is resolved to application/octet-stream, which is shown as "Unknown" (if you are curious why, search for "application/octet-stream" in /usr/share/mime/packages/freedesktop.org.xml
).
If you need to register new extension and associate some application with it, you should first register new MIME type, associated with desired extension, and then associate some application with this new MIME type. The following links explain this:
If you don't need to register new extension, I don't see any reason to change the default behavior (resolve text data to text/plain). It's natural.
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.
Best Answer
From this answer in What makes grep consider a file to be binary?
I first tried it with one file in a test directory:
And the result, a
plain text document (text/plain)
text mime file.Then since I am working with multiple files, I tried running the same command for multiple files in a directory:
And awesome, all my log files are now in a readable format!! :)