我尝试通过创建包含以下内容的文件 ~/.local/share/mime/packages/graphml+xml-mime.xml 来创建自定义 mimetype (text/graphml+xml):
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/x-graphml+xml">
<comment>GraphML file</comment>
<acronym>GraphML</acronym>
<expanded-acronym>Graph Modelling Language</expanded-acronym>
<sub-class-of type="text/xml"/>
<glob pattern="*.graphml"/>
</mime-type>
</mime-info>
并安装了一个适当的图标:
xdg-icon-resource-resourse install --context mimetype --novendor --size ${size} --mode user text-x-graphml+xml.png
然后更新数据库
update-mime-database ~/.local/share/mime
但是 my.graphml 文件的图标不会显示在 nautilus 中(它是一个 debian 最小 gnome 系统)。
~/.local/share/icon/hicolor/${size}x${size}/mimetype/text-x-graphml+xml.png 中的图标确实存在。
gio 信息 my.graphml 说:
...
standard::icon: text-x-graphml+xml, text-x-generic, text-x-graphml+xml-symbolic, text-x-generic-symbolic
standard::content-type: text/x-graphml+xml
standard::fast-content-type: text/x-graphml+xml
...
我可以双击它,然后使用 yed 打开该文件(如我所愿 - 确实创建了 ~/.local/share/applicatons/yed.desktop 文件)
但没有图标! :-(
答案1
修复
请改用此 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/x-graphml+xml">
<comment>GraphML file</comment>
<acronym>GraphML</acronym>
<expanded-acronym>Graph Modelling Language</expanded-acronym>
<glob pattern="*.graphml"/>
<icon name="x-graphml+xml"/>
</mime-type>
</mime-info>
并确保你xdg-icon-resource
运行
--context mimetypes
不是
--context mimetype
否则它们会进入错误的文件夹。
例如,如果图标为 48x48,则安装命令将如下所示:
xdg-mime install --mode user graphml+xml-mime.xml
xdg-icon-resource install --context mimetypes --size 48 text-x-graphml+xml.png x-graphml+xml
update-mime-database ~/.local/share/mime
update-icon-caches ~/.local/share/icons
尝试解释
这是一个奇怪的现象。看起来困难在于当 mimetype 是
text/x-graphml+xml
代替
application/x-graphml+xml
它默认为通用文本图标。不过,这似乎取决于文件管理器和桌面。
这是一个错误吗?你决定!