Linux 文件关联和 icon

Linux Desktop 中, 文件管理器许多文件的图标都是一个 "白文件纸" 的图标,
如何根据后缀名为其设置图标和打开程序呢?

实例

以下基于 Manjaro Linux, 为 .xmind 文件设置关联 :

安装图标:

xdg-icon-resource install --size 32 --context mimetypes /foo/xmind-file-icon.png

用户的 icons 目录会多出一个文件, 比如:

/home/niko/.local/share/icons/hicolor/32x32/mimetypes/xmind-file-icon.png

建立 MIME 信息:

sudo vim /usr/share/mime/packages/xmind.xml

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/xmind">
<comment>Xmind files</comment>
<icon name="xmind-file-icon"/>
<glob pattern="*.XMIND"/>
<glob pattern="*.xmind"/>
</mime-type>
</mime-info>

上面主要定义了一个 application/xmind 的 MIME 类型, icon 是 xmind-file-icon,
文件名则用 glob 语法匹配 *.XMIND*.xmind.

刷新 mime database

sudo update-mime-database /usr/share/mime

然后重启 File Manager

重启后可以发现 xmind 文件有图标了, 而且文件类型说明变成了 "Xmind files".

后缀名文件有了 MIME, 结合 .desktop 文件, 也能方便地关联上对应的"打开程序"了.