From 757b2d5ae3c9b9be6e01a8fa40f1e6793c9726f1 Mon Sep 17 00:00:00 2001 From: zhaoyingzhen Date: Mon, 13 Apr 2026 16:11:17 +0800 Subject: [PATCH] perf: optimize systemd services startup and cleanup dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change dde-shell and dde-shell-plugin services to Type=dbus and specify BusName to ensure correct startup order. - Remove obsolete application manager dependencies and comments in dde-shell service. - Use ConditionEnvironment in dde-session@x11 service and consolidate ExecStartPre for better performance. - 将 dde-shell 和 dde-shell-plugin 服务类型改为 Type=dbus 并指定 BusName,确保正确的启动顺序。 - 移除 dde-shell 服务中过时的应用管理器依赖及注释。 - 在 dde-session@x11 服务中改用 ConditionEnvironment 并合并 ExecStartPre 以提升性能。 Log: optimize systemd services startup and cleanup dependencies Pms: TASK-384099 Change-Id: I75754a0dd09172d891237955456d881a86cee34b --- .../dde-shell-plugin@org.deepin.ds.desktop.service | 3 ++- .../dde-shell@DDE.service | 14 +++----------- .../dde-session@x11.service | 10 +++------- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service b/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service index 4b08dbe..4452fdb 100644 --- a/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service +++ b/systemd/dde-session-core.target.wants/dde-shell-plugin@org.deepin.ds.desktop.service @@ -15,7 +15,8 @@ Requires=dbus.socket After=dbus.socket [Service] -Type=simple +Type=dbus +BusName=com.deepin.dde.desktop ExecStart=/usr/bin/dde-shell -p %I TimeoutStartSec=infinity Slice=session.slice 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 dfe1e04..82e64c4 100644 --- a/systemd/dde-session-core.target.wants/dde-shell@DDE.service +++ b/systemd/dde-session-core.target.wants/dde-shell@DDE.service @@ -14,20 +14,12 @@ Before=dde-session-core.target Requires=dbus.socket After=dbus.socket -#FIXME: maybe AM is invalid -# old AM -Wants=org.deepin.dde.Application1.Manager.service -After=org.deepin.dde.Application1.Manager.service -# new AM +# AM Wants=org.desktopspec.ApplicationManager1.service -After=org.desktopspec.ApplicationManager1.service - -# No longer needed. Just a dependency of some of dde-shell's plugins. -# Wants=org.dde.session.Daemon1.service -# After=org.dde.session.Daemon1.service [Service] -Type=simple +Type=dbus +BusName=org.deepin.dde.Dock1 ExecStart=/usr/bin/dde-shell -C %I --serviceName=org.deepin.dde.shell -d org.deepin.ds.desktop TimeoutStartSec=infinity Slice=session.slice diff --git a/systemd/dde-session-pre.target.wants/dde-session@x11.service b/systemd/dde-session-pre.target.wants/dde-session@x11.service index bd69529..5ff802a 100644 --- a/systemd/dde-session-pre.target.wants/dde-session@x11.service +++ b/systemd/dde-session-pre.target.wants/dde-session@x11.service @@ -1,6 +1,8 @@ [Unit] Description=dde on X11 CollectMode=inactive-or-failed +# Only start if the template instance matches the session type (systemd >= 246) +ConditionEnvironment=XDG_SESSION_TYPE=%I PartOf=dde-session-pre.target Before=dde-session-pre.target @@ -12,13 +14,7 @@ StartLimitBurst=3 [Service] Slice=session.slice Type=notify -# NOTE: This can be replaced with ConditionEnvironment=XDG_SESSION_TYPE=%I in -# the [Unit] section with systemd >= 246. Also, the current solution is -# kind of painful as systemd had a bug where it retries the condition. -# Only start if the template instance matches the session type. -ExecCondition=/bin/sh -c 'test "$XDG_SESSION_TYPE" = "%I" || exit 2' -ExecStartPre=-/bin/sh -c 'cp -n /etc/xdg/kglobalshortcutsrc $HOME/.config/kglobalshortcutsrc' -ExecStartPre=-/bin/sh -c 'sed -i "s/deepin-kwin/kwin/g" $HOME/.config/kglobalshortcutsrc' +ExecStartPre=-/bin/sh -c 'cp -n /etc/xdg/kglobalshortcutsrc "$HOME/.config/kglobalshortcutsrc"; sed -i "s/deepin-kwin/kwin/g" "$HOME/.config/kglobalshortcutsrc"' ExecStart=/usr/bin/kwin_x11 --replace # Exit code 1 means we are probably *not* dealing with an extension failure SuccessExitStatus=1