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:

Further readings

Information to write this page were collected in during a discussion on the debian-mentors mailing list : <20071222143401.GB2565@kunpuu.plessy.org>