From fa7a1b7258ac379f31418efd57ee64ba9acf1763 Mon Sep 17 00:00:00 2001 From: zhaoyingzhen Date: Mon, 21 Sep 2026 16:32:40 +0800 Subject: [PATCH] feat: order tray loader services behind the dock and reset retries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Start dde-tray-loader.target behind dde-shell@DDE.service so tray plugin loader services only start after the dock acquires org.deepin.dde.Dock1 once the QML DockCompositor is ready, and reset failed tray loader instances when a new dock process starts so each dock lifetime gets a fresh retry budget. 在 dde-shell@DDE.service 之后启动 dde-tray-loader.target,使托盘插件加载 服务仅在 dock 的 QML DockCompositor 就绪并获取 org.deepin.dde.Dock1 后 启动;并在新 dock 进程启动时重置失败的托盘加载器实例,使每个 dock 生命 周期获得全新的重试预算。 Log: order tray loader services behind the dock and reset retries Pms: TASK-395865 Change-Id: Iaf17347b6cde3495bf50f240d1d7da4faa1456d0 --- debian/control | 2 ++ .../dde-shell@DDE.service | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 32d793e..0b91439 100644 --- a/debian/control +++ b/debian/control @@ -33,5 +33,7 @@ Depends: systemd, ${misc:Depends}, ${shlibs:Depends}, +Breaks: + dde-shell (<< 2.0.55), Description: dde session module dde-session is used for launching DDE components systemd service project. diff --git a/systemd/dde-session-core.target.wants/dde-shell@DDE.service b/systemd/dde-session-core.target.wants/dde-shell@DDE.service index 2309b09..37b7756 100644 --- a/systemd/dde-session-core.target.wants/dde-shell@DDE.service +++ b/systemd/dde-session-core.target.wants/dde-shell@DDE.service @@ -17,11 +17,19 @@ After=dbus.socket # AM Wants=org.desktopspec.ApplicationManager1.service +# Tray plugin loader services (owned by dde-tray-loader). BusName is acquired +# only after the QML DockCompositor is ready, and Before= here ensures the +# dockplugin Wayland socket exists before the loaders start. +Wants=dde-tray-loader.target +Before=dde-tray-loader.target + [Service] Type=dbus BusName=org.deepin.dde.Dock1 +# A new dock lifetime gets a fresh retry budget for its tray plugin groups. +ExecStartPre=-/usr/bin/systemctl --user reset-failed dde-tray-loader@*.service ExecStart=/usr/bin/dde-shell -C %I --serviceName=org.deepin.dde.shell -d org.deepin.ds.desktop -TimeoutStartSec=10s +TimeoutStartSec=30s Slice=session.slice Restart=always RestartSec=1s