我想为某些类型的文件创建新的 mime 类型(文本/某些内容)。我知道如何做,但我不知道如何让文件管理器为这些文件类型显示不同的图标?
我正在使用 LXDE 和 PCManFM,但当然一些通用解决方案会更好。
答案1
让我们调用新的 mimetypetext/x-foo
并假设文件都以 结尾.foo
。首先,我们需要一个 mimeinfo 文件。它是一个名为的小型 XML 文件x-foo.xml
,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-foo">
<comment>FOO file</comment>
<glob pattern="*.foo"/>
<icon name="foo-icon"/>
</mime-type>
</mime-info>
此处这一行是关键:
<icon name="foo-icon"/>
因为它会告诉文件管理器等应用程序查找名为foo-icon.png
或 的图标foo-icon.svg
。要安装 mimeinfo 文件,我们运行以下命令:
$ xdg-mime install --mode user x-foo.xml
现在您应该在此处看到 XML 文件:
~/.local/share/mime/text/x-foo.xml
接下来,让我们更新 mime 数据库。
update-mime-database ~/.local/share/mime
最后,让我们安装图标。一种方式是使用命令xdg-icon-resource
。例如,如果您有一个名为的 48x48 PNG 图标x-foo.png
,请执行以下操作:
$ xdg-icon-resource install --context mimetypes --size 48 x-foo.png foo-icon
现在你应该在这里看到它:
~/.local/share/icons/hicolor/48x48/mimetypes/foo-icon.png
然而,xdg-icon-resource
不支持 SVG 图像,实际上这也达到了同样的效果:
$ cp foo-icon.svg ~/.local/share/icons/hicolor/48x48/mimetypes/
$ cp foo-icon.svg ~/.local/share/icons/hicolor/scalable/mimetypes/
(这不是打字错误:将 SVG 文件放入48x48/mimetypes
文件夹中,菜单和面板就会完美显示。)
最后,更新图标缓存。
$ update-icon-caches ~/.local/share/icons
现在,您的自定义 mimetype 的自定义图标应该会显示在所有文件管理器中。(您可能需要按 F5 刷新任何打开的目录中的图标,或者关闭并重新加载文件管理器的所有正在运行的实例。)
对比之前和之后分别是:
资料来源/相关:
- https://askubuntu.com/questions/1238924/assign-an-icon-to-a-custom-mimetype
- https://unix.stackexchange.com/questions/23776/how-to-change-a-file-type-icon-in-xfce-thunar
- https://unix.stackexchange.com/questions/585997/assign-an-icon-to-a-custom-mimetype
- https://ubuntuforums.org/showthread.php?t=770142