Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Criando meu próprio MIME-type
Colaboração: Thiago Cesar Vieira
Data de Publicação: 03 de fevereiro de 2010
Você gostaria de abrir um arquivo em determinado programa apenas com o duplo clique?
Sente falta de um ícone em determinado tipo de arquivo para identificá-los facilmente no seu ambiente gráfico?
Então, esse artigo é para você!
Introdução
MIME-type permite cadastrar determinada extensão de arquivo no ambiente gráfico. Com isso em mãos, é possível associar uma imagem a um arquivo e também abri-lo no aplicativo específico apenas clicando sobre o mesmo, sem precisar abrir o programa e carregá-lo por lá.
O ambiente gráfico GNOME permite fazer tudo isso facilmente.
Como exemplo criaremos o MIME-type para a extensão .kdb (KeePass Password Database). Esse arquivo binário armazena senhas criptografadas.
Keepass Password Safe é o programa (multiplataforma) que manipula esse arquivo. Em meu Linux uso o KeePassX.
Ao abrir o Nautilus (gerenciador de arquivos do GNOME) vemos que nenhum ícone especial é associado aos arquivos *.kdb e clicando sobre esse tipo de arquivo nenhum aplicativo é aberto:
"Could not display myfile.kdb. The file is of an unknown type."
Então, vamos iniciar o trabalho. Abaixo está o procedimento testado no GNOME 2.26.1. Os passos são similares no KDE.
Criando um MIME-type (extensão de arquivo -> MIME-type)
Crie um arquivo chamado keepass.xml em ~/.local/share/mime/packages/.
~/.local/share/mime/ é a base de dados local de MIME-type, válido apenas para o usuário corrente. A base de dados global (válida para todos os usuários da máquina) está em: /usr/share/mime/.
Mais informações sobre configurações globais veja a seção "Configurando (MIME) para todos os usuários" no final desse artigo.
O conteúdo do arquivo XML deve ser esse:
<?xml version="1.0" encoding="UTF-8"?>
< mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<!-- Creating Mime-type for KeePass -->
< mime-type type="application/keepassx">
< comment xml:lang="en">KeePass Password Database</comment>
< glob pattern="*.kdb"/>
</mime-type>
</mime-info>
Veja que estamos associando a extensão .kdb ao MIME-type application/keepassx.
Atualize a base de dados local de MIME.
$ update-mime-database ~/.local/share/mime/
Para ter certeza que o MIME-type foi instalado corretamente vamos fazer algumas verificações:
- Confira se o seguinte arquivo foi criado:
~/.local/share/mime/application/keepassx.xml - Rode os 2 comandos abaixo utilizando um arquivo .kdb como modelo
$ xdg-mime query filetype myfile.kdb application/keepassx
$ gnomevfs-info myfile.kdb ... MIME type : application/keepassx ...
- No Nautilus, clique com o botão direito do mouse sobre o arquivo .kdb e clique em "Properties". A propriedade "Type" deverá ter o valor: "
KeePass Password Database (application/keepassx)"
Se o novo MIME-type foi criado com sucesso, podemos proceder.
Associando uma imagem a um MIME-type (imagem -> extensão)
Associe o logo do KeePass a esse novo MIME-type criado. Salve essa imagem como keepass.png e rode o comando abaixo.
$ xdg-icon-resource install --context mimetypes --size 64 --mode user keepass.png application-keepassx
Confira se ocorreu tudo certo. O logo deverá ser copiado para o caminho abaixo.
~/.local/share/icons/hicolor/64x64/mimetypes/application-keepassx.png
Atualize o Nautilus para conferir se o ícone foi associado aos arquivos *.kdb.
Associando um programa a um MIME-type (programa -> extensão)
Para associar determinado aplicativo a um MIME-type, crie o arquivo ~/.local/share/applications/KeePass.desktop e insira o conteúdo abaixo:
[Desktop Entry] Value=1.0 Name=KeePassX Comment=KeePassX Cross Platform Password Manager Categories=Utility Type=Application Exec=/usr/bin/keepassx MimeType=application/keepassx Icon=keepassx Encoding=UTF-8 StartupNotify=true Terminal=false NoDisplay=true
Perceba que estamos associando o MIME-type application/keepassx ao programa /usr/bin/keepassx.
Atualize a base de dados local de aplicativos.
$ update-desktop-database ~/.local/share/applications/
Confira se o arquivo '~/.local/share/applications/mimeinfo.cache' foi atualizado.
Abra o Nautilus e dê 2 cliques sobre o arquivo myfile.kdb. Abriu o programa KeePass? Legal!
Configurando (MIME) para todos os usuários
As configurações acima para criar um MIME-type e ligá-lo a uma aplicação são válidas apenas para um único usuário (chamamos de configurações local).
Para aplicar essas configurações a todos os usuários do sistema (configurações globais), o procedimento é similar.
Alterações globais requerem permissões de root e atuam sobre diferente diretórios. Confira na tabela abaixo.
| Local config (apenas para um único usuário) | Global config (válida para todos os usuários) |
|---|---|
~/.local/share/mime/packages/ |
/usr/share/mime/packages/ |
~/.local/share/applications/ |
/usr/share/applications/ |
$ xdg-icon-resource install --mode user ... |
$ xdg-icon-resource install --mode system ... |
Isto é: para cadastrar um novo MIME-type a todos os usuários da máquina, copie o XML para /usr/share/mime/packages/ e não para ~/.local/share/mime/packages/.
Instalando MIME-type para o aplicativo desenvolvido pela sua empresa
Perceba que não é apenas em casa que podemos encontramos utilidade a MIME-types. No ambiente corporativo eles também têm seu valor.
Se você trabalha num programa stand-alone e que manipula seus próprios arquivos, seria útil que na instalação do aplicativo você também instalasse o MIME-type para esse novo tipo de arquivo, não é?!
Referências
A documentação do GNOME sobre MIME-types é muito boa. Não é necessário nada a mais.
- Introduction to MIME Types
- The MIME Database
- Modifying MIME types
- Registering Applications for MIME Types
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
03 Jan 2011, 23:03
Obrigado pela atenção.
03 Jan 2011, 20:36
É quase isso mesmo! Na verdade a associação de um tipo de arquivo a um programa e a definição de um tipo são 2 assuntos diferentes, mas muito similares.
A associação de um tipo de arquivo a um programa faz a ligação de determinada extensão a um programa. Aí um duplo-clique sobre o arquivo abrirá o programa.
Porém, é diferente de fazer com que o GNOME reconheça um novo tipo.
Fiz o teste aqui.
No Nautilus, peguei o arquivo 'teste.kdb' e renomeei a extensão: 'teste.kdd' (perceba que KDB virou KDD). Imediatamente o ícone mostrado foi alterado para aqueles tipos que o sistema não reconhece.
E as propriedades do arquivo exibia como o tipo do arquivo:
"kdd document (application/x-extension-kdd)"
Aí, segui o que você falou: botão direito do mouse > Open with Other Application > selecionei o aplicativo. Joia. Abriu o programa.
Mas, a criação de um MIME-type pode ser interpretada como uma atividade diferente.
Coloquei umas referências no artigo para que compreendamos melhor esse assunto.
Espero ter ajudado.
Abraço!
03 Jan 2011, 06:13
02 Jan 2011, 20:56
http://www.dicas-l.com.br/arquivo/criando_mime_types_no_kde4.php



