如何查找Nautilus为指定MIME类型选择显示的图标文件路径
遇到Nautilus显示空白图标这种情况确实头疼,不过我们可以从系统给出的线索一步步找出它实际选用的图标路径。
首先看你提供的gio info mcc.nex输出,里面已经明确列出了Nautilus会按优先级尝试使用的图标列表:
standard::icon: application-vnd.treeviewer.nexus.nex, application-x-generic, application-vnd.treeviewer.nexus.nex-symbolic, application-x-generic-symbolic
Nautilus会按这个顺序找第一个能加载的图标,所以我们可以逐个验证这些图标对应的实际文件位置,下面是几个实用方法:
方法1:用gio info直接查询单个图标的路径
针对每个候选图标名称,直接用gio info命令就能查到它的实际文件路径,比如先查优先级最高的那个:
gio info "application-vnd.treeviewer.nexus.nex"
如果这个图标能被系统识别,输出里会有local-path字段,显示它的具体位置;要是找不到,就接着查下一个候选(比如application-x-generic)。
方法2:用图形化工具gtk3-icon-browser查找(推荐)
这个工具能直观浏览所有系统图标,还能直接复制路径:
- 先安装它(Debian/Ubuntu系可以用):
sudo apt install gtk3-icon-browser - 打开后在搜索框输入你的图标名称(比如
application-vnd.treeviewer.nexus.nex),找到对应图标后右键选择“Copy Path”,就能拿到它的实际文件路径了。
方法3:用find命令遍历系统图标目录搜索
系统图标一般存在这些位置:/usr/share/icons/、~/.local/share/icons/、/usr/share/pixmaps/,你可以用find命令搜索目标图标:
find ~/.local/share/icons /usr/share/icons /usr/share/pixmaps -name "*application-vnd.treeviewer.nexus.nex*"
要是这个命令找不到你放的自定义图标,大概率是图标缓存没更新,先执行下面的命令更新缓存:
gtk-update-icon-cache ~/.local/share/icons/hicolor/
之后重启Nautilus(执行nautilus -q再重新打开),再试试查找图标。
结合你提供的ls输出,你已经在~/.local/share/icons/hicolor/下放置了各个尺寸的图标,但Nautilus还是显示空白,可能是缓存没更新,或者系统优先加载了后面的候选图标(比如application-x-generic对应的默认空白图标?)。你可以先用上面的方法确认application-vnd.treeviewer.nexus.nex是否能被正确识别到路径,排查下问题。
备注:内容来源于stack exchange,提问作者jrom

