我尝试通过创建包含以下内容的文件 ~/.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 info 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 文件,并且应用程序确实在应用程序面板中显示了相应的图标)。
但没有图标!:-(
编辑:
这是一个 Debian 测试系统,使用 debootstrap 安装并从那里开始扩展(尽量保持最小)。我担心这也可能意味着某些软件包可能缺失...
答案1
Nathaniel M. Beaver 是对的——这个问题他已经在为自定义 mimetype 分配图标 - Unix 和 Linux
修复
请改用此 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
它默认为通用文本图标。不过这似乎取决于文件管理器和桌面。