修复

修复

我尝试通过创建包含以下内容的文件 ~/.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

它默认为通用文本图标。不过这似乎取决于文件管理器和桌面。

相关内容