Docker 桌面图标折腾记录
日期: 2026-08-12
问题
给 Docker 桌面快捷方式加图标,SVG 格式不显示,PNG 格式正常。
排查过程
1. 尝试系统图标
Icon=docker→ 空白(图标名未注册)Icon=yast-docker→ 空白(符号链接到 preferences-virtualization-container,不是 Docker 鲸鱼)Icon=folder-docker→ 空白(图标名未在 index.theme 注册)Icon=/usr/share/icons/breeze/places/64/folder-docker.svg→ 显示了文件夹套鲸鱼(KDE 能识别完整路径的 SVG)
2. 尝试自定义 SVG
用户提供的 text-dockerfile.svg(Docker 鲸鱼):
Icon=/home/a1/sh/docker/docker.svg→ 不显示- 测试 .desktop 也不显示
3. 根因定位
SVG 文件里有 Inkscape 特有标签(sodipodi、inkscape),KDE 的 SVG 渲染器(librsvg)无法解析:
有 Inkscape 标签 → 40 处
能显示的 SVG → 0 处 Inkscape 标签rsvg-convert 也报错:
Error reading SVG: XML parse error: Attribute inkscape:connector-curvature redefined4. 解决方案
去掉 Inkscape 标签,保留纯 SVG 路径,再转 PNG:
bash
# 清理后的 SVG 转 PNG
rsvg-convert -w 256 -h 256 docker-clean.svg -o docker.png最终配置
/home/a1/sh/docker/docker.svg ← 原始 SVG(有 Inkscape 标签,KDE 不认)
/home/a1/sh/docker/docker.png ← 清理后转的 PNG(KDE 正常显示)
/home/a1/sh/docker/docker-toggle.sh
/home/a1/桌面/docker-toggle.desktop → Icon=/home/a1/sh/docker/docker.png关键结论
| 格式 | KDE 支持 | Inkscape SVG | 纯 SVG |
|---|---|---|---|
| SVG | ⚠️ 要求纯 SVG | ❌ 不显示 | ✅ 显示 |
| PNG | ✅ 通用 | - | - |
KDE 图标用 PNG 最稳,SVG 要确保没有 Inkscape/sodipodi 标签。
工具
rsvg-convert(librsvg2-bin):SVG 转 PNGkbuildsycoca5:重建 KDE 图标缓存