时间:2026-06-11 环境:Deepin 25(crimson)+ dde-shell (dde-dock) 涉及应用:通义灵码 (Lingma)、Snipaste
启动器中应用图标显示为"页面里嵌两个齿轮"的通用占位符,而非应用原始图标。同时 dde-dock 存在"点 A 图标出 B 窗口"的渲染映射错乱 bug。
find /usr/share/applications ~/.local/share/applications -iname '*lingma*' -iname '*snipaste*'
结果:
/usr/share/applications/lingma.desktop
~/.local/share/applications/snipaste.desktop
grep '^Icon' /usr/share/applications/lingma.desktop ~/.local/share/applications/snipaste.desktop
lingma.desktop: Icon=Lingma snipaste.desktop: Icon=snipaste
find /usr/share/icons/hicolor -iname '*lingma*' find /usr/share/icons/hicolor -iname '*snipaste*'
结果:均不存在。
find /usr/share/pixmaps -iname '*lingma*' # → /usr/share/pixmaps/Lingma.png find /usr/share/pixmaps -iname '*snipaste*' # → 无
操作:移除 Lingma 在 hicolor 中的图标 → 重启 dde-shell → 观察启动器。
mv ~/.local/share/icons/hicolor/256x256/apps/Lingma.png \ ~/.local/share/icons/hicolor/256x256/apps/Lingma.png.bak systemctl restart --user dde-shell@DDE.service
结果(实测):Lingma 图标依然正常显示,未变回齿轮。说明 dde-dock 从 pixmaps 路径成功加载了图标。
结论:Deepin 25 的 dde-dock 确实支持 freedesktop 规范的 pixmaps 回退。Lingma 的齿轮根因不是图标查找问题。
⚠️ 此为推理结论,未通过日志或源码直接证实,证据链如下。
已确认的事实:
/usr/share/pixmaps/Lingma.png
推理: 齿轮占位符与"点 A 图标出 B 窗口"高度可能是同一个 dde-shell 渲染层 bug 的不同表现——DBus 层面数据正确,屏幕渲染层偶发映射错乱。排除图标缺失、pixmaps 回退失败等可能后,渲染层 bug 是唯一合理解释。
待验证:抓取 dde-shell 日志或源码确认渲染层具体出错点,可最终定论。
Snipaste 是唯一真正存在图标配置问题的应用,根因有两层:
问题 A — AppImage 无系统图标:AppImage 是自包含镜像格式,不会有安装过程,图标只在镜像内部,系统 /usr/share/pixmaps/ 和 hicolor 中没有任何 Snipaste 图标文件。dde-dock 即使支持 pixmaps 回退也找不到。
/usr/share/pixmaps/
hicolor
问题 B — 大小写不一致:
Icon=snipaste
Snipaste.png
snipaste ≠ Snipaste
即使手动从 AppImage 提取图标放到 hicolor,只要 desktop 的 Icon= 与文件名大小写对不上,依然找不到。
Icon=
无需修复文件。只需重启 dde-shell 即可恢复:
systemctl restart --user dde-shell@DDE.service
桌面闪 1-2 秒,窗口不丢。
注:之前做的"复制图标到 hicolor"对 Lingma 是不必要的,图标本来就能从 pixmaps 找到。但做了也无害。
# 1. 从 AppImage 提取图标 cd /tmp /home/XingFangYuan/Applications/Snipaste-2.11.3-x86_64.AppImage --appimage-extract # 2. 复制所有尺寸到用户级 hicolor(无需 sudo) for size in 16 32 48 256; do mkdir -p ~/.local/share/icons/hicolor/${size}x${size}/apps cp squashfs-root/usr/share/icons/hicolor/${size}x${size}/apps/Snipaste.png \ ~/.local/share/icons/hicolor/${size}x${size}/apps/Snipaste.png done # 3. 修复 desktop 文件的大小写(核心) sed -i 's/^Icon=snipaste$/Icon=Snipaste/' ~/.local/share/applications/snipaste.desktop # 4. 生效 systemctl restart --user dde-shell@DDE.service
当任意应用出现齿轮占位符时,按以下优先级排查:
#!/bin/bash # 用法: ./debug-icon.sh 应用名 APP="$1" DESKTOP=$(find /usr/share/applications ~/.local/share/applications -iname "*${APP}*.desktop" 2>/dev/null | head -1) echo "=== 第一步:先试重启 dde-shell(排除渲染 bug) ===" echo "systemctl restart --user dde-shell@DDE.service" echo "如果重启后图标恢复 → dde-shell 渲染 bug,无需继续排查" echo "" echo "=== 第二步:Desktop 文件 ===" echo "$DESKTOP" ICON=$(grep -i '^Icon=' "$DESKTOP" | head -1 | cut -d= -f2) echo "Icon 字段: $ICON" echo "" echo "=== 第三步:hicolor 主题中是否存在 ===" find /usr/share/icons/hicolor ~/.local/share/icons/hicolor -iname "${ICON}.*" 2>/dev/null echo "(注意:文件名与 Icon= 字段必须严格大小写一致)" echo "" echo "=== 第四步:pixmaps 中是否存在 ===" find /usr/share/pixmaps -iname "${ICON}.*" 2>/dev/null echo "" echo "=== 判断 ===" echo "pixmaps 里有 → dde-shell 渲染 bug,重启即可" echo "pixmaps 没有、hicolor 也没有 → AppImage/容器类应用,需手动提取图标" echo "hicolor 里有但还齿轮 → 检查 Icon= 大小写是否与文件名严格匹配"
给 Deepin 社区:dde-shell 渲染层映射错乱(图标占位符 / 点A出B窗口)是确认存在的 bug,建议纳入 issue tracker。重启 dde-shell 可临时恢复。
给应用打包者:
xdg-icon-resource install
Icon=/usr/share/pixmaps/xxx.png
给用户:遇到齿轮占位符,第一步先重启 dde-shell —— 大概率是渲染 bug,不是图标真丢了。重启无效再按诊断脚本排查实际图标缺失问题。
No replies yet
Featured Collection
Popular Ranking
Popular Events
Deepin 25 应用图标显示齿轮占位符问题分析与修复
时间:2026-06-11
环境:Deepin 25(crimson)+ dde-shell (dde-dock)
涉及应用:通义灵码 (Lingma)、Snipaste
一、症状
启动器中应用图标显示为"页面里嵌两个齿轮"的通用占位符,而非应用原始图标。同时 dde-dock 存在"点 A 图标出 B 窗口"的渲染映射错乱 bug。
二、诊断过程
步骤 1:确认 desktop 文件位置
结果:
/usr/share/applications/lingma.desktop~/.local/share/applications/snipaste.desktop步骤 2:检查 desktop 文件中的 Icon 字段
结果:
步骤 3:检查图标主题目录(hicolor)
结果:均不存在。
步骤 4:检查 pixmaps 回退路径及系统级图标
步骤 5(验证实验):测试 pixmaps 回退是否生效
操作:移除 Lingma 在 hicolor 中的图标 → 重启 dde-shell → 观察启动器。
结果(实测):Lingma 图标依然正常显示,未变回齿轮。说明 dde-dock 从 pixmaps 路径成功加载了图标。
结论:Deepin 25 的 dde-dock 确实支持 freedesktop 规范的 pixmaps 回退。Lingma 的齿轮根因不是图标查找问题。
三、根因分析(修正)
根因 1:Lingma — dde-shell 渲染层映射错乱 (推断)
已确认的事实:
/usr/share/pixmaps/Lingma.png,1024×1024 PNG)推理:
齿轮占位符与"点 A 图标出 B 窗口"高度可能是同一个 dde-shell 渲染层 bug 的不同表现——DBus 层面数据正确,屏幕渲染层偶发映射错乱。排除图标缺失、pixmaps 回退失败等可能后,渲染层 bug 是唯一合理解释。
待验证:抓取 dde-shell 日志或源码确认渲染层具体出错点,可最终定论。
根因 2:Snipaste — 图标缺失 + 大小写不匹配
Snipaste 是唯一真正存在图标配置问题的应用,根因有两层:
问题 A — AppImage 无系统图标:AppImage 是自包含镜像格式,不会有安装过程,图标只在镜像内部,系统
/usr/share/pixmaps/和hicolor中没有任何 Snipaste 图标文件。dde-dock 即使支持 pixmaps 回退也找不到。问题 B — 大小写不一致:
Icon=snipaste(全小写)Snipaste.png(首字母大写)snipaste ≠ Snipaste即使手动从 AppImage 提取图标放到 hicolor,只要 desktop 的
Icon=与文件名大小写对不上,依然找不到。四、修复方法
Lingma(dde-shell 渲染 bug)
无需修复文件。只需重启 dde-shell 即可恢复:
桌面闪 1-2 秒,窗口不丢。
Snipaste(真正的图标缺失)
五、通用诊断脚本
当任意应用出现齿轮占位符时,按以下优先级排查:
六、结论
七、建议
给 Deepin 社区:dde-shell 渲染层映射错乱(图标占位符 / 点A出B窗口)是确认存在的 bug,建议纳入 issue tracker。重启 dde-shell 可临时恢复。
给应用打包者:
xdg-icon-resource install将图标注册到 hicolor,或 desktop 文件使用绝对路径Icon=/usr/share/pixmaps/xxx.pngIcon=值与图标文件名大小写严格一致给用户:遇到齿轮占位符,第一步先重启 dde-shell —— 大概率是渲染 bug,不是图标真丢了。重启无效再按诊断脚本排查实际图标缺失问题。