关于 mimetype
我创建了一个 mimetype,我想为其添加一个图标。该 mimetype 用于待办事项列表,它与TODO
模式匹配并且类型为text/todo
。
我可以确认,在创建名为 的文件时TODO
,它显示为 mimetype text/todo
。
尝试添加图标
因此,我链接了一个 SVG 文件,
~/.local/share/icons/hicolor/48x48/mimetypes/text-todo.svg
希望该文件可以用作我的 mimetype 的图标。然而,事实并非如此。我继续运行
sudo update-icon-caches ~/.local/share/icons/hicolor
,它安静地运行,但没有任何变化。然后我运行
sudo gtk-update-icon-cache ~/.local/share/icons/hicolor
,但收到消息:
gtk-update-icon-cache:没有主题索引文件。
或者
gtk-update-icon-cache:生成的缓存无效。
运行时sudo gtk-update-icon-cache -tf ~/.local/share/icons/hicolor
。正如您所期望的,这也不会改变任何事情。
所以,如何在我的主目录中为我的 mimetype 添加图标?
答案1
我花了相当长的时间来尝试解决这个问题,现在我终于做到了。
创建 mimetype
首先,您需要创建一个 mimetype 文件并将其保存到本地~/.local/share/mime/packages/
目录。该文件的结构如下:
<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/todo">
<comment>To-do list</comment>
<glob case-sensitive="true" pattern="TODO" />
<glob case-sensitive="true" pattern="TODO *"/>
</mime-type>
</mime-info>
确保元素标签type
中的字段与mime-type
您所需的 mimetype 相匹配,并且glob
元素标签包含一个pattern
属性,其值与您所需的 mimetype 的模式相匹配。如您所见,您的 mimetype 可以通过多个glob
元素覆盖多种文件名模式。
就我的而言去做mimetype,我需要模式区分大小写,所以我加入了一个case-sensitive="true"
属性值对;如果你不需要区分大小写,那么这个属性值对就不是必需的。
完成 mimetype 文件后,请使用方便的名称保存它,例如todo.xml
. (笔记:XML 扩展可能很重要。
现在运行命令update-mime-database ~/.local/share/mime/
,您就大功告成了。此命令会将您的 mimetype 放在 下的正确类别目录中~/.local/share/mime
。
测试
~/.local/share/mime/glob
你可以通过读取文件并使用以下命令测试特定文件来测试你的 mimetype 是否被正确解析
mimetype FILENAME
xdg-mime query filetype FILENAME
只有在更新 mime 数据库后,这些才会起作用。
添加图标
在许多 Linux 发行版中,第三方/插件图标都归入“hicolor”图标主题,这是其他图标主题所依赖的后备图标主题。
将您的图标添加到正确的目录中~/.local/share/icons/hicolor/
(根据/usr/share/icons/hicolor/index.theme
列出有效子目录的描述文件),运行update-icon-caches ~/.local/share/icons/hicolor
,然后一切就绪!
您的桌面管理器可能需要重新启动才能将新的 mimetype 与新的图标关联起来。
故障排除
如果您的文件没有获得您为其设置的 mimetype/icon,请务必仔细检查 mimetype XML 文件中的模式。有时测试一个明显的模式可能会帮助您验证这一点。
答案2
我测试了所有能找到的方法(测试了很多目录),下面这个方法我认为是正确的。我的系统版本是 16.04。
由于 mimetype 适合 freecad 文档,因此我只设置了图标。
找到 mimetype 名称,例如应用程序/x-扩展-fcstd:
▶ mimetype '/home/eexp/文档/freecad/cigar1.fcstd' /home/eexp/文档/freecad/cigar1.fcstd: application/x-extension-fcstd
找到合适的 svg 文件并 cp 到这里/usr/share/icons/hicolor/scalable/mimetypes,并且文件名必须是应用程序-x-扩展-fcstd就像 mimetype 名称一样:
▶ sudo cp ~/FreeCAD-logo.svg /usr/share/icons/hicolor/scalable/mimetypes/application-x-extension-fcstd.svg
使用更新图标缓存-F,(这里有index.theme文件):
▶ sudo gtk-update-icon-cache /usr/share/icons/hicolor/ -f
鹦鹉螺更改文件图标立即地。