MIME > Mime Types Support
Support of Media (MIME) types in Debian packages
For the command line
Declarations of which program handles which media type is done by placing files in /usr/lib/mime/packages/. The format of the file is described in the mailcap(5) manpage, and many examples can be found in /etc/mailcap. On recent systems, dpkg triggers from the mailcap package do all the necessary operations when packages are installed or removed. Also, information from FreeDesktop menu entry files (see below) is automatically translated to mailcap entries, so it is not necessary to have both. Media type (MIME) support in Debian is formally described in the Debian policy.
For the file /etc/mime.types, the modification has to be requested by filing a bug on the media-types package. If the media type is not registered to the IANA, please consider doing so or asking the relevant persons to do so.
Mutt and maybe other applications use the copiousoutput flag to select which command to run for inline display. If you are curious, a complete list of packages and the MIME types they support, generated from AppStream data is available.
To use the desktop file handling from the command line, run xdg-open <path/to/file> to start the program. To query which MIME type is associated with a given file, use xdg-mime query filetype <path/to/file>.
For the desktop
The Internet Media Types (IMT) defined as part of the Multipurpose Internet Mail Extensions (MIME) have been reused by freedesktop.org (formerly known as the X Develepment Group, XDG) to associate applications and files in desktop environments.
Association between a file suffix and/or content and file type is done through XML files following the Shared MIME-info Database specification. The Debian package shared-mime-info contains the specification and the program update-mime-database that is used to populate the /usr/share/mime with relevant entries, using the XML file as a source. Again, dpkg triggers will update the database each time a package is installed or removed.
Programs are indirectly associated to file suffixes through the association with a file type. This is done through their .desktop file, with the MimeType entry.
For package installation
Packages can declare support for media types using the AppStream system, by placing metainfo XML files in /usr/share/appdata/, with names such as <package>.metainfo.xml. Commands like appstreamcli will then be able to report which package supports which media types, and package managers will be able to suggest the package for installation.
In summary, if you use debhelper:
create a XML file named by the package name plus .sharedmimeinfo as a suffix, containing information about a given file type, and its usual suffix.
- either:
- create a FreeDesktop entry named by the program name plus .desktop as a suffix, and document inside what file types the program can accept. Install it in /usr/share/applications,
- or, when FreeDesktop entries are not relevant or not expressive enough, create a file named by the package name plus .mime as a suffix, containing information in the mailcap format.
Further readings
The Debian policy for multimedia handlers: http://www.debian.org/doc/debian-policy/ch-opersys.html#s-mime
- The manual pages of update-mime, update-mime-database, dh_installmime, and mailcap.
The Shared MIME info specification: http://standards.freedesktop.org/shared-mime-info-spec/latest
The Desktop entry specification: http://standards.freedesktop.org/desktop-entry-spec/latest/
More information can be found at http://sourceforge.net/docman/?group_id=159685
The procedure for registration of new media types (please follow it !)
Information to write this page were collected in during a discussion on the debian-mentors mailing list : <20071222143401.GB2565@kunpuu.plessy.org>