适用场景:启用第三方图标主题后,Nautilus 打开含压缩包、安装包等特定文件的目录时立即退出;切回系统图标主题后恢复正常。
这通常不是目录或文件损坏,而是旧版 SVG 图标、错误的 index.theme,或它们与新版 GTK、Cairo 的兼容性问题。
1. 排除文件损坏
以 .tar.xz 为例:
xz -t /path/to/archive.tar.xz
命令无输出且退出状态为 0,说明压缩包结构正常。
2. 确认问题来自图标主题
查看当前主题:
gsettings get org.gnome.desktop.interface icon-theme
临时切回 Ubuntu 默认主题后重新打开目录:
gsettings set org.gnome.desktop.interface icon-theme 'Yaru'
nautilus -q
gio open /path/to/problem-directory
如果目录可以正常打开,问题基本位于第三方图标主题。
还可以检查日志中的典型错误:
journalctl --user --since '10 minutes ago' --no-pager \
| grep -Ei 'nautilus|cairo|icon|theme directory'
常见信息包括 cairo_surface_set_device_scale 断言失败,或主题目录缺少 Size 字段。
3. 检查主题索引
主题通常位于 ~/.icons/主题名/ 或 ~/.local/share/icons/主题名/。打开其中的 index.theme,确认:
Directories=中的每个目录真实存在;- 每个目录都有对应的
[目录名]段; - 使用
Size=24,不要写成区分大小写后无法识别的size=24; - 删除重复项和不存在的目录声明。
修改后重启 Nautilus:
nautilus -q
4. 修复不兼容的 SVG 图标
先根据文件 MIME 类型找到候选图标名:
gio info /path/to/problem-file | grep -E 'content-type|standard::icon'
如果某个旧 SVG 触发崩溃,最稳妥的办法是暂时移走它,让 GTK 使用继承主题中的安全图标:
mv ~/.icons/主题名/128x128/mimetypes/问题图标.svg \
~/.icons/主题名/128x128/mimetypes/问题图标.svg.disabled
若希望保留原外观,可安装 librsvg2-bin,将 SVG 转成 PNG:
sudo apt install librsvg2-bin
rsvg-convert -w 128 -h 128 问题图标.svg -o 问题图标.png
mv 问题图标.svg 问题图标.svg.disabled
5. 重新启用并验证
gsettings set org.gnome.desktop.interface icon-theme '主题目录名'
nautilus -q
gio open /path/to/problem-directory
pgrep -a nautilus
目录能打开、pgrep 能看到 Nautilus,且日志中没有新的 Cairo 断言,即表示修复成功。
确认稳定后,可将测试主题、.bak、.disabled 等文件移入回收站:
gio trash /path/to/confirmed-test-copy
不要批量删除整个 ~/.icons,也不要在未验证前删除原始图标;保留系统主题作为随时可用的回退方案。