更新Linux系统中文件管理器里显示的文件图标

2020-10-25   862 次阅读


文件图标

在使用Linux桌面的时候,打开文件管理器,会显示当前目录下的文件,通常这个文件会带一个图标,通过图标就比较容易了解文件的类型,例如WPS的PPT文件,就会显示WPP的图像。

但是,有些文件是不显示这种跟应用关联的图标,即使你设置了默认打开程序。这个时候就需要手动更改了。好在了解了后面的机制后,改起来还算比较容易。

文件图标选择机理

这里是选择机理,其实是图标显示是没问题的,问题往往出在文件管理器无法找到正确的图标。对于像Xfce4这样的桌面系统,背后使用的是GTK,它是怎么确定文件类型和图标的呢?

  • 第一步:确定文件类型,即MIME。这个是通过目录/usr/share/mime里面的xml文档来定义的,文档的格式自行搜索学习,这里不解释,可以打开任意一个类型看一下。里面一个比较关键的地方,是可以根据文件的扩展名来匹配对应的mime类型。比方说我可以定义一个application/x-xmind类型,然后将匹配模式定义为"*.xmind",这样文件管理器在遇到xmind扩展名的文件时,就知道它的类型了。
  • 第二步:根据类型找到图标索引。同样是在上面的那个XML文件里,会定义图标文件的索引,例如上面那个xmind文档,定义图标索引为xmind。
  • 第三步:根据图标索引加载图标。对于GTK而言,使用了缓存技术,即将需要使用的图标存到了.cache文件中,这样即使你修改了图标甚至删除了图标文件,也不影响图标的显示。图标一般存储在/usr/share/icons目录下的对应主题目录里,可以自行查阅。图标文件名就是第二步找到的索引名(无扩展名)加上文件扩展名。注意图标文件都是放在对应尺寸的目录里的,放在外面无效。

具体操作

所以,弄明白原理后,具体操作就很简单了。首先你要搞到图标文件,最好是有不同尺寸的,放到对应的目录中,接下来比较关键,必须要更新一下图标的缓存,使用这个命令

sudo gtk-update-icon-cache /usr/share/icons/hicolor/

然后去/usr/share/mime/packages里创建一个XML文档,编辑里面的内容(以下仅为例子,请自行发挥):

<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
 <mime-type type="application/x-xmind">
  <comment>xmind document</comment>
  <comment xml:lang="zh">XMind 思维导图文件</comment>
  <glob pattern="*.xmind"/>
  <generic-icon name="xmind"/>
 </mime-type>
</mime-info>

最后,更新一下mime数据库:

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

回到文件管理器界面,Ctrl-R刷新一下即可。

Good luck!

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

No PAINS No GAINS.