você está aqui: Home  → Arquivo de Mensagens

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:

  1. Confira se o seguinte arquivo foi criado:

    ~/.local/share/mime/application/keepassx.xml
  2. 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
      ...
    
  3. 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.



Veja a relação completa dos artigos de Thiago Cesar Vieira

 

 

Opinião dos Leitores

Diego
03 Jan 2011, 23:03
Blz, valeu a explicação, vou da uma olhada nas referencias pra entender melhor o assunto.

Obrigado pela atenção.
Thiago Cesar Vieira
03 Jan 2011, 20:36
Olá Diego!

É 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!
Diego
03 Jan 2011, 06:13
Se eu entendi corretamente, já existe uma opção mais fácil no Gnome 2.30, bastando clicar no arquivo com o botão direito >> propriedades >> abrir com: lá você configurar com qual programa esse arquivo deve abrir, e automaticamente todos arquivos do mesmo tipo passarão a abrir com o programa escolhido.
Thiago Cesar Vieira
02 Jan 2011, 20:56
Criando MIME types no KDE4:
http://www.dicas-l.com.br/arquivo/criando_mime_types_no_kde4.php
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script