在Linux下注册自己的MIME类型

在使用Linux系统的过程中,通常会需要使用程序来打开某种类型的文件,但是与Windows系统下通过扩展名来确定文件类型不同,Linux系统通过查找MIME类型表来确定文件类型,如果失败则读取文件的部分内容来判断,而这对于自己编写的文件类型通常会带来麻烦。例如,我们使用XML格式编写了一种数据文件,在文件管理器中双击文件,此时系统首先在MIME表中查找,找不到,又尝试读入部分文件内容,判断出是XML文件,此时系统会自动使用XML应用打开这个文件,这通常没有问题。但是如果你又编写了自己的程序来处理这个文件,这问题来了!系统认为你的文件就是一个XML文件,如果你关联你的程序和你的文件,则所有的XML文件都被关联了!此时我们就需要定义自己的MIME类型并注册到系统。

Linux系统得MIME类型信息是通过xdg-util软件来管理的。假设我们的文件扩展名为abcd,使用MIME类型application/x-abcd来注册。我们需要编写一个文件,内容如下:

<?xml version="1.0"?>
 <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
   <mime-type type="application/x-abcd">
   <comment>My abcd file type</comment>
   <comment xml:lang="zh_CN">我的ABCD文件类型</comment>
   <glob pattern="*.abcd"/>
  </mime-type>
 </mime-info>
假设上面这个文件名为abcd.xml,则运行下面的命令来注册:
xdg-mime install abcd.xml
如果想要使用图标,并且图标文件abcd.png,大小为48x48,则运行下面的命令来注册图标:
xdg-icon-resource install --context mimetypes \
  --size 48 abcd.png application-x-abcd