这都能查出来
原因:QQ 是 Electron(Chromium) 应用,启动后自报的应用 ID 为
org.chromium.Chromium(其 systemd scope 名为app-org.chromium.Chromium-.scope),但系统应用管理器中没有注册 ID 为org.chromium.Chromium的应用条目(无对应 desktop 文件)。
你的 QQ 是什么版本(比如是官方提供的 AppImage 版?)以及是从哪里启动的(文件管理器双击?)?
dde-application-manager 在尝试运行程序时会根据 desktop id 将其放在恰当的 cgroup 里,按你上面的描述的话看上去压根不存在对应的 .desktop 文件,不像是商店版或者 deb 版。所以想确认下实际情况。
另外“排查中发现的缺陷”里的 1 大概是 AI 幻觉?现有代码未发现有写成 /proc//exe 的。2应该是确实存在的问题。
原因:QQ 是 Electron(Chromium) 应用,启动后自报的应用 ID 为
org.chromium.Chromium(其 systemd scope 名为app-org.chromium.Chromium-.scope),但系统应用管理器中没有注册 ID 为org.chromium.Chromium的应用条目(无对应 desktop 文件)。
你的 QQ 是什么版本(比如是官方提供的 AppImage 版?)以及是从哪里启动的(文件管理器双击?)?
dde-application-manager 在尝试运行程序时会根据 desktop id 将其放在恰当的 cgroup 里,按你上面的描述的话看上去压根不存在对应的 .desktop 文件,不像是商店版或者 deb 版。所以想确认下实际情况。
另外“排查中发现的缺陷”里的 1 大概是 AI 幻觉?现有代码未发现有写成 /proc//exe 的。2应该是确实存在的问题。
我的QQ就是从应用商店下载安装的deb版,启动方式跟其他应用一样,就两个途径:启动器(开始菜单)启动和桌面双击启动。
高手,膜拜
Popular Ranking
ChangePopular Events
More

中文 


【Bug 反馈】关机"以上程序阻止关机"界面中 QQ 图标显示为通用齿轮占位图
基本信息
问题描述
点击关机/重启时,若 QQ 正在运行,"以上程序阻止关机"界面中 QQ 条目不显示 QQ 图标,而是显示通用占位图标(application-x-desktop,即"带齿轮的页面")。其他应用(如百度网盘、腾讯会议)在更新后可正常显示图标,QQ 一直异常。
复现步骤
根因分析(已通过源码+运行时验证)
QQ 会向 logind 注册 inhibitor(
who="qq"),因此出现在阻止关机列表中。关机界面图标解析流程(dde-session-shellsrc/widgets/inhibitwarnview.cppInhibitorRow图标解析):Dtk::Core::DSGApplication::getId(pid)调用应用管理器org.desktopspec.ApplicationManager1.Identify(pidfd)识别进程对应的应用 ID;org.desktopspec.ApplicationManager1.Application.Icons属性中的"Desktop Entry"图标名;QIcon::fromTheme(iconName)从图标主题加载图标。关键失败点:对 QQ 进程调用
Identify(pidfd)时报错:原因:QQ 是 Electron(Chromium) 应用,启动后自报的应用 ID 为
org.chromium.Chromium(其 systemd scope 名为app-org.chromium.Chromium-.scope),但系统应用管理器中没有注册 ID 为org.chromium.Chromium的应用条目(无对应 desktop 文件)。因此:Identify失败 →appId为空 → 图标名称为空 →QIcon::fromTheme("")返回空 → 回退到application-x-desktop(齿轮图)。百度网盘、腾讯会议等应用能正常显示,是因为它们的进程可被正常识别(应用 ID 已注册)。
用户侧临时解决方案(已验证有效)
在
~/.local/share/applications/下创建org.chromium.Chromium.desktop(NoDisplay=true,Icon=qq),并在图标主题中提供qq图标,使应用管理器能识别 QQ 进程并返回正确图标名。但该方案为单用户级 hack,需要官方修复。建议官方修复方案
Identify失败或返回空 appId 时,回退使用/proc//exe的可执行文件名作为图标名(当前代码存在缺陷,见下)或按可执行文件路径匹配 desktop 文件;org.chromium.Chromium应用条目(或在识别逻辑中将 Chromium/Electron 自报 ID 映射到实际 desktop 文件);--app-id/DSG_APP_ID),避免 Electron 默认使用org.chromium.Chromium。附:排查中发现的 dde-session-shell 源码缺陷(供开发者参考)
inhibitwarnview.cpp图标解析存在两个已知缺陷,影响所有"进程名回退"场景:QString("/proc//exe")(缺少%1占位符),.arg(pid)无法注入 PID,导致回退永远失败;QString iconName = executable_info.fileName();为局部变量,遮蔽了外层iconName,赋值无法传出。建议一并修复(改为
QString("/proc/%1/exe").arg(pid)并去除遮蔽)。验证信息
"shutdown" "qq" "Ensure a clean shutdown" "delay" 1000can't find application:org.chromium.Chromium{"Desktop Entry": "/opt/apps/linux.qq.com/entries/icons/hicolor/512x512/apps/qq.png"}(绝对路径,且因 Identify 失败根本取不到)用户侧已通过注册应用条目临时解决,但仍建议官方修复