[Treeland] dp25.2.2,Treeland模式多显示器切换仅外接屏,分辨率丢失为空置
Tofloor
poster avatar
琴软
deepin
2026-09-08 12:55
Author

dp25.2.2,Treeland模式多显示器,切换仅外接屏,分辨率丢失,为空置。运行环境和日志在下面压缩文件

显示问题反馈_20260908.zip

Reply Favorite View the author
All Replies
avatar
deepin流云
Super Moderator
Community OP
2026-09-08 13:35
#1

是N卡么?

Reply View the author
avatar
琴软
deepin
2026-09-08 14:01
#2
It has been deleted!
avatar
琴软
deepin
2026-09-08 14:02
#3

Deepin 25 外接显示器切换后分辨率空值 — 问题分析报告

生成时间:2026-09-08 12:35
用途:反馈官方(建议连同 journalctl -b 完整日志、busctl --user list 输出、/var/lib/dde-daemon/display/config.json 一并提交)


一、问题现象

  1. 在"显示设置"中切换为 仅外接显示器 模式后,分辨率/刷新率下拉框显示为空值;
  2. 画面显示内容异常放大、显示不全,无法在图形界面操作控制中心修改;
  3. 通过终端执行 wlr-randr --output HDMI-A-1 --mode 1920x1080@60.000000 可恢复实际输出,但控制中心分辨率空值问题依旧存在(D-Bus 服务未恢复)。

二、环境信息

项目 信息
系统 Deepin 25(crimson)
桌面/合成器 DDE +Treeland(Wayland,DDE_CURRENT_COMPOSITOR=TreeLand)
显卡 AMD Picasso/Raven [Radeon Vega]1002:15d8,驱动 amdgpu
设备 华为笔记本(Subsystem 19e5:3e19)
外接显示器 AOC U3277WB(HDMI-A-1,4K 3840×2160)
内屏 eDP-1

三、关键日志证据(journalctl -b)

3.1 会话启动即缺失 Display1(任务栏 dde-shell,12:00:02)

dde-shell[1672]: Failed to fetch ListOutputNames QDBusError("org.freedesktop.DBus.Error.ServiceUnknown",
    "The name org.deepin.dde.Display1 was not provided by any .service files")
dde-shell[1672]: Failed to fetch DisplayMode QDBusError("org.freedesktop.DBus.Error.ServiceUnknown",
    "The name org.deepin.dde.Display1 was not provided by any .service files")

⚠️ 该错误在开机时即出现,说明 Display1 会话服务缺失并非切换显示器引起。

3.2 控制中心显示页报错(12:02:40 / 12:03:23,分辨率空值直接原因)

dde-control-center: DisplayMain.qml:633: TypeError: Cannot read property 'screenItems' of undefined
dde-control-center: DisplayMain.qml:731: TypeError: Cannot read property 'currentResolution' of undefined
dde-control-center: DisplayMain.qml:717: TypeError: Cannot read property 'resolutionList' of undefined
dde-control-center: DisplayMain.qml:850: TypeError: Cannot read property 'currentRate' of undefined
dde-control-center: DisplayMain.qml:840: TypeError: Cannot read property 'rateList' of undefined
...(screenItems / availableFillModes / brightness / scale / maxScale / rotate 等均 undefined)

3.3 切换"仅外接"时刻 Treeland 输出管理报错(12:02:53 / 12:02:57)

deepin-service-manager[1745]: treeland_output_manager_v1#39: error 0: Invalid output resource
deepin-service-manager[3460]: treeland_output_manager_v1#39: error 0: Invalid output resource

3.4 dde-session-daemon 显示模块初始化异常(monitor 数据为空)

daemon/display: manager.go:1702: updateBestmodeRefreshRate: monitor.Modes is empty, return preferredMode
daemon/display: xorg.go:798: setMonitorFillMode monitor is nil, return.

3.5 终端修复后(12:23–12:25)Display1 仍缺失

dde-shell[1672]: Failed to fetch ListOutputNames QDBusError(... "The name org.deepin.dde.Display1 was not provided by any .service files")
dde-shell[1672]: Failed to fetch DisplayMode QDBusError(... "The name org.deepin.dde.Display1 was not provided by any .service files")

四、根因分析

4.1 根本原因:会话总线缺少 org.deepin.dde.Display1 服务

  • 会话总线上注册有 60+ 个 org.deepin.dde.* 服务(Power1 / Network1 / Audio1 / Appearance1 / Graphic1 等),唯独没有 Display1;
  • 控制中心与任务栏(dde-shell)均通过会话总线查询 org.deepin.dde.Display1 获取显示器列表、分辨率、刷新率数据 → 查询失败(ServiceUnknown)→ QML 界面 screenItems、currentResolution、resolutionList 等全部为 undefined → 分辨率下拉框显示空值;
  • 对照:系统总线上存在 org.deepin.dde.Display1(由 dde-system-daemon 提供,/usr/share/dbus-1/system-services/org.deepin.dde.Display1.service 正常),说明会话总线上的显示服务缺失/未注册是问题核心。

4.2 触发因素:切换时刻 Treeland 输出管理协议报错

  • 应用"仅外接"模式时 treeland_output_manager_v1: Invalid output resource —— 输出资源无效,模式应用链路失败;
  • 配置文件 /var/lib/dde-daemon/display/config.json 中同一 HDMI 口存在两套不同 EDID 哈希(dba318e8...@60Hz 与 e61d5eda...@30Hz),提示外接屏 HDMI 链路 EDID 不稳定,切换/重新枚举时输出资源失效。

4.3 结论

Deepin 25 (Treeland) 下会话总线 Display1 服务缺失 + Treeland 输出管理协议(treeland_output_manager)在切换外接屏时返回 Invalid output resource,二者叠加导致:实际输出异常 + 控制中心分辨率数据源缺失(空值)。切换"仅外接"操作只是触发并暴露了问题。

五、临时修复与评估

# 查看输出与模式
wlr-randr
# 设置外接屏 1920x1080@60(成功,绕过 D-Bus 直连 Treeland 输出协议)
wlr-randr --output HDMI-A-1 --mode 1920x1080@60.000000
# 恢复 4K
wlr-randr --output HDMI-A-1 --mode 3840x2160@60.000000
项 结果
实际输出 ✅ 已恢复 1920×1080@60(wlr-randr 确认 current)
控制中心分辨率下拉 ❌ 仍为空(Display1 会话服务未恢复,12:23–12:25 日志证实)

六、给官方的反馈要点

  1. 会话总线缺少 org.deepin.dde.Display1:busctl --user list 中无 Display1;控制中心/dde-shell 全部报 ServiceUnknown;而系统总线有该服务(dde-system-daemon)。
  2. treeland_output_manager 协议错误:切换显示模式时报 treeland_output_manager_v1#39: error 0: Invalid output resource(12:02:53、12:02:57)。
  3. dde-session-daemon 显示模块拿不到 monitor 数据:monitor.Modes is empty、monitor is nil,疑似 Treeland 下显示服务初始化链路缺陷。
  4. EDID 不稳定佐证:/var/lib/dde-daemon/display/config.json 中同一 HDMI 口存在两个 EDID 哈希(60Hz 与 30Hz 两套记录)。
  5. 建议复现步骤:连接外接屏(HDMI)→ 显示设置切换为"仅外接" → 观察分辨率下拉空值;终端执行 gdbus call --session --dest org.deepin.dde.Display1 --object-path /org/deepin/dde/Display1 --method org.freedesktop.DBus.Introspectable.Introspect 可复现 ServiceUnknown。

七、建议修复方向

  1. 恢复会话总线 Display1 服务注册(或修正控制中心/dde-shell 查询的系统总线路径);
  2. 修复 Treeland 输出管理在热插拔/模式切换时 Invalid output resource 的处理与重试;
  3. 增强 EDID 变化时的重枚举容错(双 EDID 哈希场景)。
Reply View the author
avatar
琴软
deepin
2026-09-08 14:04
#4
deepin流云:

是N卡么?

不是 。显卡信息 | 显卡 | AMD Picasso/Raven [Radeon Vega] 1002:15d8,驱动 amdgpu |

Reply View the author
avatar
琴软
deepin
2026-09-08 14:07
#5
deepin流云:

是N卡么?

新问题,截屏无法使用。系统截屏工具,三方截屏都无法使用。

Reply View the author