关于 mimetype

关于 mimetype

关于 mimetype

我创建了一个 mimetype,我想为其添加一个图标。该 mimetype 用于待办事项列表,它与TODO模式匹配并且类型为text/todo

我可以确认,在创建名为 的文件时TODO,它显示为 mimetype text/todo

尝试添加图标

  1. 因此,我链接了一个 SVG 文件,~/.local/share/icons/hicolor/48x48/mimetypes/text-todo.svg希望该文件可以用作我的 mimetype 的图标。然而,事实并非如此。

  2. 我继续运行sudo update-icon-caches ~/.local/share/icons/hicolor,它安静地运行,但没有任何变化。

  3. 然后我运行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 文档,因此我只设置了图标。

  1. 找到 mimetype 名称,例如应用程序/x-扩展-fcstd

    ▶ mimetype '/home/eexp/文档/freecad/cigar1.fcstd' /home/eexp/文档/freecad/cigar1.fcstd: application/x-extension-fcstd

  2. 找到合适的 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

  3. 使用更新图标缓存-F,(这里有index.theme文件):

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

  4. 鹦鹉螺更改文件图标立即地

相关内容