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