A Multipurpose Internet Mail Extension (MIME) type identifies the format of a file. The MIME type enables applications to read the file. Applications such as Internet browsers and e-mail applications use the MIME type to handle files of different types. For example, an e-mail application can use the MIME type to detect what type of file is attached to an e-mail.
The Nautilus file manager uses MIME types to identify the type of a file. The file manager needs to know the MIME type of a file to perform the following tasks:
If you add a new application, you must make sure that other applications can recognize the files associated with the application. You must perform several tasks to enable other applications to detect the MIME type of the application files.
This section describes how applications detect the MIME types of files, and how applications are associated with MIME types. This section also describes the procedure that you must follow to add a new application.
Applications can detect the MIME type of a file as follows:
The following sections provide further information on file content sniffers and the MIME type registry.
File content sniffers are specified in the /etc/opt/gnome/gnome-vfs-mime-magic file. The following is an example of a file content sniffer:
0 string \x89PNG image/png
The syntax for file content sniffers is as follows:
offset_start[:offset_end] pattern_type pattern [&pattern_mask] type
The following table describes the fields in a file content sniffer.
Table E-12 Fields in a File Content Sniffer
Field |
Description |
---|---|
offset_start |
Specifies the number of characters to ignore in the file before searching for a text pattern. |
pattern_type |
Specifies the type of pattern to search for. Currently, the string pattern type is the only pattern type that is supported. |
pattern |
Specifies the pattern to search for. |
pattern_mask |
Specifies a pattern mask, in hexadecimal format. For more information, see Pattern Masks. This field is optional and is not present in the previous example. |
type |
Specifies the MIME type to associate with files that match this entry. |
A pattern mask identifies bits in the pattern to ignore when searching for a pattern in a file. The following is an example of a file content sniffer with a pattern mask:
0 string BMxxxx\000\000 &0xffff00000000ffff image/bmp
The pattern and mask in the example are as follows:
Pattern B M x x x x \000 \000 Mask ff ff 00 00 00 00 ff ff
The above pattern and mask specify a file with the following characteristics:
The file content sniffer specifies that the MIME type of files that match the pattern and mask is image/bmp.
The MIME type registry is located in /opt/gnome/share/mime-info. The MIME type registry contains the following files:
Table E-13 MIME Type Registry Files
File |
File Extension |
---|---|
MIME information file |
.mime |
MIME keys file |
.keys |
The following sections describe MIME information files and MIME keys files.
MIME information files associate MIME types with one or both of the following:
When an application searches for the MIME type of a file, the application checks the filename against the MIME information files. If a match for the filename is found, the MIME type associated with the extension or pattern is the MIME type of the file.
In MIME information files, the filename pattern to search for is written as a regular expression.
The format of MIME type entries in MIME information files is as follows:
MIME-type ext[,priority]: list-of-extensions regex[,priority]: list-of-regular-expressions
You can specify a priority value for the file extension and the regular expression. You can use the priority value to differentiate composite filenames. For example, you can assign a priority of 1 to the .gz extension, and assign a higher priority of 2 to the .tar.gz extension. In this case, the file abc.tar.gz takes the MIME type for .tar.gz.
IMPORTANT:You must indent the ext field and the regex field with a Tab character (\t).
The following MIME type entries are samples from the gnome-vfs.mime MIME information file:
application/x-compressed-tar regex,2: tar\.gz$ ext: tgz audio/x-real-audio ext: rm ra ram image/jpeg ext: jpe jpeg jpg image/png ext: png text/html ext: html htm HTML text/plain ext: asc txt TXT text/x-readme regex: README.*
The file manager reads the MIME information files alphabetically. The alphabetical order determines the order in which MIME types are assigned to file extensions or regular expressions. For example, if the same file extension is assigned to different MIME types in the files abc.mime and def.mime, the MIME type in abc.mime is used.
MIME keys files provide information about MIME types that are used in the user interface. For example, the MIME keys file provides a description of a MIME type and specifies an icon to represent files of that MIME type.
The following is a sample from a MIME keys file:
text/html description=HTML page icon_filename=gnome-text-html default_action_type=application short_list_application_ids_for_novice_user_level=mozilla,netscape,galeon category=Documents/World Wide Web
IMPORTANT:You must indent the keys in a MIME keys file with a Tab character (\t).
The following table describes the most important keys in MIME keys files. Typically, the description key and the category key are localized.
Table E-14 MIME Key Files
The application registry contains text files that register applications. The application registration files contain a series of key-value pairs that specify details for applications. For example, the application registration files can contain the following information:
An application registration file can contain one or more application registrations. Application registration files have a .applications extension.
The location of the application registry is /opt/gnome/share/application-registry. This directory contains a default application registration file named gnome-vfs.applications.
To register an application, add a registration file for the application to the application registry.
The following is an example of an application registration file:
eog command=eog name=Eye of Gnome can_open_multiple_files=true expects_uris=false requires_terminal=false mime_types=image/bmp,image/gif,image/jpeg,image/png,image/tiff, image/x-xpixmap,image/x-bmp,image/x-png,image/x-portable-anymap, image/x-portable-bitmap,image/x-portable-graymap, image/x-portable-pixmap
The following table describes the keys in application registration files.
Table E-15 Application Registration File Keys
Key |
Description |
---|---|
Application identifier |
Specifies a unique identifier for the application. This identifier must be the same as the identifier in the short_list_application_ids_for_novice_user_level key in the MIME keys file for the application. |
command |
Specifies the command to use to start the application and any options to use with the command. |
name |
Specifies a name for the application. The name is used in the user interface. For example, the name is used in the Open With submenu in the file manager. |
can_open_multiple_files |
Specifies whether the application can open several files at the same time. |
expects_uris |
Specifies whether the application can process URIs. If the value of this key is true, the application registration entry must also contain a supported_uri_schemes key. |
supported_uri_schemes |
Specifies the URI schemes that the application can process. |
requires_terminal |
Specifies whether to run the application in a terminal window. Specify True for this field for an application that does not create a window in which to run. |
mime_types |
Specifies the MIME types that the application can use. |
Add a menu item for the application.
For more information, see Adding Menus.
Add an icon for the application to /opt/gnome/share/icons/theme-name/icon-size/apps.
For more information, see Installing Themes.
(Conditional) If the application uses a new MIME type, add a file content sniffer for the new MIME type.
For more information, see File Content Sniffers.
(Conditional) If the application uses a new MIME type, add a MIME information file for the application to the MIME type registry.
For more information, see MIME Information Files.
Add a MIME keys file for the application to the MIME type registry.
For more information, see MIME Keys Files.
(Conditional) If the application uses a new MIME type, add an icon for the MIME type to /opt/gnome/share/icons/theme-name/icon-size/mimetypes.
For more information, see Installing Themes.
(Optional) To associate the application with a MIME type, add an application registration file to the application registry.
For more information, see Registering Applications for MIME Types.