MIME ("Multipurpose Internet Mail Extensions" - Extensões de Internet Multipropósito) descreve o tipo de dados contido em um arquivo. MIME é amplamente utilizado para indicar qual programa deve abrir um arquivo de dados.
Definição de MIME: http://www.wikipedia.org/wiki/MIME
Visão geral
Uma variedade de métodos são usados para determinar o tipo MIME de um arquivo. Protocolos de Internet como http e e-mail geralmente fornecem o tipo de dados MIME explicitamente. Ao abrir um arquivo clicando nele em um gerenciador de arquivos, o sufixo do nome do arquivo (como .pdf) e os chamados "números mágicos" (como os bytes fixos em um cabeçalho elf) são comumente usados.
Sufixos de nome de arquivo: O mapeamento em todo o sistema de sufixos de arquivos para tipos MIME é definido em ?/etc/mime.types. Usuários(as) podem definir seu próprio sufixo para preferências MIME em $HOME/.mime.types. Tradicionalmente, os sufixos de nome de arquivo são ignorados nos sistemas Unix.
Para mantenedores(as) de pacotes, uma maneira melhor de configurar novos tipos MIME é a Especificção MIME-info compartilhada de fd.o.
Números mágicos: Os números mágicos são bytes ou strings que são definidos como valores específicos dentro de arquivos de um determinado tipo e que podem ser usados para adivinhar o tipo de arquivo com razoável certeza. Por exemplo, scripts awk geralmente começam com a linha "#!/usr/bin/awk" ou "#!/bin/awk", possivelmente com espaços após o ponto de exclamação (!).
Uma ferramenta mais útil para adivinhar o tipo de um arquivo baseado em seu conteúdo é o comando do terminal "file". O comando "file --mime nomedoarquivo" tenta fornecer o tipo MIME de nomedearquivo.
O comando "file" usa números mágicos armazenados em "/usr/share/file/mágico". Esse arquivo é automaticamente construído e, portanto, não deve ser personalizado, pois suas preciosas personalizações serão perdidas quando o arquivo for reconstruído. O formato do arquivo é descrito em man magic.
Adições no sistema à biblioteca de reconhecimento de números mágicos ficam em /etc/magic.
Para determinada aplicação: aplicações podem ter suas próprias regras MIME. Como implementam e registram essas regras depende de cada aplicativo. O "aplicativo" pode ser a área de trabalho GNOME ou um navegador da web executado dentro do GNOME, portanto, vários conjuntos de regras podem ser verificados antes de /etc/mime.types ser referenciado.
Padrão: se o tipo MIME não puder ser determinado, por padrão é definido como application/octet-stream.
Associação às aplicações
Nota: gnome-file-types-properties, que às vezes era referenciado, agora está obsoleto e não está mais presente nos sistemas Debian.
A associação no sistema entre os tipos MIME e os aplicativos é gerada a partir dos arquivos .desktop fornecidos pelos pacotes. Os arquivos .desktop são armazenados no diretório e subdiretórios /usr/share/applications/, e update-desktop-database analisa suas informações e gera o arquivo /usr/share/applications/mimeinfo.cache, que especifica para cada tipo MIME os arquivos .desktop válidos (ou seja, a aplicação correspondente).
O mimeinfo.cache é basicamente um cache reverso bruto para a informação .desktop. Não há como definir prioridades nele. Para poder especificar aplicativos padrão, um arquivo mimeapps.list (anteriormente chamado defaults.list até o Debian 5) deve ser criado. Pode ser válido para todo o sistema (em /usr/share/applications ou um subdiretório) ou específico a um(a) usuário(a) (em $HOME/.local/share/applications). Uma heurística é usada pelo glib (FIXME: e no KDE?) para usar o arquivo mimeapps.list apropriado de acordo com o ambiente do(a) usuário(a) (Gnome Evince x KDE Okular para arquivos PDF, por exemplo). O arquivo mimeapps.list segue a mesma sintaxe que mimeinfo.cache, ou seja:
[Default Applications] application/pdf=evince.desktop image/png=eog.desktop
Consulte https://bugs.freedesktop.org/show_bug.cgi?id=30214 and https://bugzilla.gnome.org/show_bug.cgi?id=630171 para mais informações.
