com.tdx.tdxcfv
玲珑包 com.tdx.tdxcfv 安装时 linyaps 漏导出了图标文件:SVG 图标完好地躺在应用层(layer)里,但没有被链接/复制到玲珑的图标导出目录。桌面文件声明的 Icon=com.tdx.tdxcfv 在系统全部图标搜索路径中找不到任何对应文件,Qt 主题查找失败 → 启动器与任务栏统一回退为占位图标。
Icon=com.tdx.tdxcfv
修复:把应用层内的 SVG 复制到用户级图标目录 ~/.local/share/icons/hicolor/scalable/apps/com.tdx.tdxcfv.svg,重启 dde-shell@DDE.service 让 launchpad/dock 重扫图标主题。全程无需 root,玲珑后续更新不影响。
~/.local/share/icons/hicolor/scalable/apps/com.tdx.tdxcfv.svg
dde-shell@DDE.service
第二点至关重要:启动器不经过 dock 的槽位绑定逻辑,它直接按桌面文件解析图标。启动器也异常,即可排除本机此前确认的 dock 行号漂移 bug(见 deepin25-dock-icon-mismatch-rootcause.md,该 bug 表现为任务栏固定槽位"串"到别的应用的图标,且不影响启动器),问题必然出在图标名 → 图标文件的解析环节。
deepin25-dock-icon-mismatch-rootcause.md
任务栏固定列表(DConfig)里只有 3 个条目,通达信是以"运行中应用"身份出现在任务栏的。在应用管理器(AM)中发现其对象路径,确认它由玲珑安装:
$ busctl --user tree org.desktopspec.ApplicationManager1 | grep -i tdx ├─ /org/desktopspec/ApplicationManager1/com_2etdx_2etdxcfv │ └─ /org/desktopspec/ApplicationManager1/com_2etdx_2etdxcfv/8e9a8b2c... # 运行中实例 $ ll-cli list | grep -i tdx com.tdx.tdxcfv ... 7.64.0.0 main binary convert from 7.64 ...
桌面文件(玲珑导出位置,注意是 entries/apps/share/... 而非 entries/share/...):
entries/apps/share/...
entries/share/...
$ cat /var/lib/linglong/entries/apps/share/applications/com.tdx.tdxcfv.desktop [Desktop Entry] X-linglong=com.tdx.tdxcfv Name=tdxcfv Name[zh_CN]=通达信金融终端 Exec=/usr/bin/ll-cli run com.tdx.tdxcfv -- /opt/apps/com.tdx.tdxcfv/files/bin/start.sh Icon=com.tdx.tdxcfv # ← 按"图标名"查找,不是绝对路径 ...
$ tr '\0' '\n' < /proc/$(pgrep -u meteor -f dde-shell | head -1)/environ | grep XDG XDG_DATA_DIRS=/var/lib/linglong/entries/apps/share:/usr/local/share:/usr/share:/var/lib/linglong/entries/share XDG_DATA_HOME=/home/meteor/.local/share
按 freedesktop 图标规范,com.tdx.tdxcfv 这个名字会在上述各根的 icons/ 子树(hicolor 主题等)中查找。
icons/
$ find /var/lib/linglong/entries -iname "*tdx*" # 全导出树搜索 (空) $ find /home/meteor/.local/share/icons /usr/share/pixmaps -iname "*tdx*" (空)
但图标在应用层里完好存在(256×256 SVG,内嵌 PNG,格式合法):
$ ls /var/lib/linglong/layers/3fe8408c.../entries/share/icons/hicolor/scalable/apps/ com.tdx.tdxcfv.svg
即:linyaps 导出该应用时桌面文件导出了、图标没导出。
同为玲珑应用、同在一个桌面文件目录,同花顺显示正常,差异只在导出完整性:
com.tdx.tdxcfv.desktop
cn.com.10jqka.desktop
Icon=HevoIcon
/var/lib/linglong/entries/share/icons/hicolor/scalable/apps/HevoIcon.svg
$ busctl --user get-property org.desktopspec.ApplicationManager1 \ /org/desktopspec/ApplicationManager1/com_2etdx_2etdxcfv \ org.desktopspec.ApplicationManager1.Application Icons a{ss} 1 "Desktop Entry" "com.tdx.tdxcfv"
AM 只负责把桌面文件里的图标名字透传给 dde-shell,由 shell 做主题解析。名字本身正确、传输链路正常——问题只剩"名字找不到文件"这一环。证据链闭合:
桌面文件 Icon=com.tdx.tdxcfv ✓ 正确 → AM 透传图标名 ✓ 正确 → shell 主题查找 ✗ 全路径无此文件(漏导出) → 回退占位图标(启动器 & 任务栏同步异常)
~/.local/share/icons
/usr/share/pixmaps
file
linyaps 对 deb 转制包 com.tdx.tdxcfv 的条目导出(entries export)不完整:/var/lib/linglong/layers//entries/share/icons/... 下的 SVG 未被链接到系统导出目录 /var/lib/linglong/entries/share/icons/...。图标名解析在全部搜索路径落空,启动器与任务栏共用同一解析结果,故两处同时显示占位图。
/var/lib/linglong/layers//entries/share/icons/...
/var/lib/linglong/entries/share/icons/...
属于打包/导出环节缺陷(该包 description 中可见 convert from 7.64 字样,为 deb 转制包),非用户配置问题,也非桌面环境 bug。
convert from 7.64
# 1. 把层内完好的 SVG 补放到用户级 hicolor 主题目录 mkdir -p ~/.local/share/icons/hicolor/scalable/apps cp /var/lib/linglong/layers/3fe8408c3e3429ac45bd3bad0dcd06c4a56ee95990774505d699d4a5d55fe370/entries/share/icons/hicolor/scalable/apps/com.tdx.tdxcfv.svg \ ~/.local/share/icons/hicolor/scalable/apps/com.tdx.tdxcfv.svg # 2. 重启 dde-shell,让 launchpad / dock 重扫图标主题(图标主题在内存中有缓存) systemctl --user restart dde-shell@DDE.service
选型理由:
XDG_DATA_HOME/icons
gtk-update-icon-cache
index.theme
scalable/apps
ll-cli
/var/lib/linglong/...
Icon=
# 玲珑应用定位 ll-cli list | grep -i <关键词> busctl --user tree org.desktopspec.ApplicationManager1 | grep -i <关键词> # 玲珑桌面文件与图标导出目录(两处都在会话 XDG_DATA_DIRS 内) ls /var/lib/linglong/entries/apps/share/applications/ find /var/lib/linglong/entries/share/icons -iname "*<关键词>*" # 应用层内原始文件 find /var/lib/linglong/layers -ipath "*<关键词>*" \( -iname "*.svg" -o -iname "*.png" \) # 桌面会话真实的图标搜索路径 tr '\0' '\n' < /proc/$(pgrep -u $USER -f dde-shell | head -1)/environ | grep XDG # AM 透传的图标名 busctl --user get-property org.desktopspec.ApplicationManager1 \ /org/desktopspec/ApplicationManager1/<转义后的appid> \ org.desktopspec.ApplicationManager1.Application Icons # 生效修复后刷新界面 systemctl --user restart dde-shell@DDE.service
entries/apps/share/applications/
entries/share/icons/
不知道通达信玲珑版是论坛哪位朋友打包维护的,如果这位朋友看到了,可不可以下个版本更新的时候修复一下这个图标漏导出的问题
Featured Collection
Popular Events
com.tdx.tdxcfv7.64.0.0,deb 转制包)一、摘要(TL;DR)
玲珑包
com.tdx.tdxcfv安装时 linyaps 漏导出了图标文件:SVG 图标完好地躺在应用层(layer)里,但没有被链接/复制到玲珑的图标导出目录。桌面文件声明的Icon=com.tdx.tdxcfv在系统全部图标搜索路径中找不到任何对应文件,Qt 主题查找失败 → 启动器与任务栏统一回退为占位图标。修复:把应用层内的 SVG 复制到用户级图标目录
~/.local/share/icons/hicolor/scalable/apps/com.tdx.tdxcfv.svg,重启dde-shell@DDE.service让 launchpad/dock 重扫图标主题。全程无需 root,玲珑后续更新不影响。二、现象记录
第二点至关重要:启动器不经过 dock 的槽位绑定逻辑,它直接按桌面文件解析图标。启动器也异常,即可排除本机此前确认的 dock 行号漂移 bug(见
deepin25-dock-icon-mismatch-rootcause.md,该 bug 表现为任务栏固定槽位"串"到别的应用的图标,且不影响启动器),问题必然出在图标名 → 图标文件的解析环节。三、排查与证据链
3.1 定位应用身份与桌面文件
任务栏固定列表(DConfig)里只有 3 个条目,通达信是以"运行中应用"身份出现在任务栏的。在应用管理器(AM)中发现其对象路径,确认它由玲珑安装:
桌面文件(玲珑导出位置,注意是
entries/apps/share/...而非entries/share/...):3.2 图标搜索路径取证(取自 dde-shell 进程真实环境)
按 freedesktop 图标规范,
com.tdx.tdxcfv这个名字会在上述各根的icons/子树(hicolor 主题等)中查找。3.3 关键证据:导出目录里根本没有这个图标
但图标在应用层里完好存在(256×256 SVG,内嵌 PNG,格式合法):
即:linyaps 导出该应用时桌面文件导出了、图标没导出。
3.4 对照组:同花顺为何正常
同为玲珑应用、同在一个桌面文件目录,同花顺显示正常,差异只在导出完整性:
com.tdx.tdxcfv.desktopcn.com.10jqka.desktopIcon=com.tdx.tdxcfvIcon=HevoIcon/var/lib/linglong/entries/share/icons/hicolor/scalable/apps/HevoIcon.svg✅3.5 AM 透传机制确认
AM 只负责把桌面文件里的图标名字透传给 dde-shell,由 shell 做主题解析。名字本身正确、传输链路正常——问题只剩"名字找不到文件"这一环。证据链闭合:
3.6 已排除的备选假设
~/.local/share/icons、/usr/share/pixmaps搜索为空;file验证为合法 SVG,内容完好;四、根因
linyaps 对 deb 转制包
com.tdx.tdxcfv的条目导出(entries export)不完整:/var/lib/linglong/layers//entries/share/icons/...下的 SVG 未被链接到系统导出目录/var/lib/linglong/entries/share/icons/...。图标名解析在全部搜索路径落空,启动器与任务栏共用同一解析结果,故两处同时显示占位图。属于打包/导出环节缺陷(该包 description 中可见
convert from 7.64字样,为 deb 转制包),非用户配置问题,也非桌面环境 bug。五、解决方案
已实施(用户侧修复,推荐)
选型理由:
~/.local/share/icons(即XDG_DATA_HOME/icons)在规范搜索路径内,且优先级高于系统目录;gtk-update-icon-cache——缓存是可选项,Qt 无缓存时直接扫目录(已确认系统 hicolor 的index.theme包含scalable/apps段)。备选方案(未采用)
ll-cli卸载重装触发重新导出:下载量约 685 MB,且转制包重导出是否补上图标并无保证;不建议的做法
/var/lib/linglong/...下桌面文件的Icon=改成绝对路径:文件归 root/玲珑管理,任何重装或更新即丢失,且治标不治本。六、验证
~/.local/share/icons/hicolor/scalable/apps/com.tdx.tdxcfv.svgindex.theme含scalable/apps段(Size=128, MaxSize=256)dde-shell@DDE.service重启后 active,AM 中应用对象正常附录 A:关键排查命令(可复现)
附录 B:经验要点
entries/apps/share/applications/,图标在entries/share/icons/——排查时两处都要看,缺一处即为本案模式。Icon=声明与导出文件是否存在,差异即根因方向。dde-shell@DDE.service;个别组件缓存更顽固时注销重登即可。