Gnome

將圖示分配給自定義 mimetype

  • June 17, 2020

我嘗試通過使用以下內容創建文件 ~/.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

但是 nautilus 中不顯示 my.graphml 文件的圖示(它是一個 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/applicons/yed.desktop 文件)

但是沒有圖示!:-(

修復

請改用此 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

它預設為通用文本圖示。不過,這似乎取決於文件​​管理器和桌面。

這是一個錯誤嗎?你決定!

引用自:https://unix.stackexchange.com/questions/585997