From 0f24ba65020b0fc3d947e9160ae702f6f3c1ffbf Mon Sep 17 00:00:00 2001 From: Fabio Fantoni Date: Sun, 9 Aug 2026 17:47:44 +0200 Subject: [PATCH] session: Add a drop-in for the application scopes cinnamon creates Cinnamon puts every application it launches into a transient app-cinnamon-*.scope. Those scopes are created with just a PID list, so by default systemd knows nothing about their lifetime: on logout they are torn down abruptly when the user instance goes away, and if the user has lingering enabled they are not torn down at all. Ship the same drop-in gnome-session ships for its own scopes: PartOf=graphical-session.target ties them to the session, TimeoutStopSec gives applications a moment to exit before being killed, and CollectMode keeps failed units from piling up. This relies on graphical-session.target being activated by the session, which is the case since commit e01c8c3. Assisted-by: Claude Code:claude-opus-5 --- data/systemd/user/app-override.scope.conf | 6 ++++++ data/systemd/user/meson.build | 8 ++++++++ debian/cinnamon-session.install | 1 + 3 files changed, 15 insertions(+) create mode 100644 data/systemd/user/app-override.scope.conf diff --git a/data/systemd/user/app-override.scope.conf b/data/systemd/user/app-override.scope.conf new file mode 100644 index 0000000..810bf23 --- /dev/null +++ b/data/systemd/user/app-override.scope.conf @@ -0,0 +1,6 @@ +[Unit] +CollectMode=inactive-or-failed +PartOf=graphical-session.target + +[Scope] +TimeoutStopSec=5s diff --git a/data/systemd/user/meson.build b/data/systemd/user/meson.build index 15834e4..4201de8 100644 --- a/data/systemd/user/meson.build +++ b/data/systemd/user/meson.build @@ -5,4 +5,12 @@ install_data( ], install_dir: systemduserunitdir, ) + +# Applies to the transient scopes cinnamon creates for launched applications +install_data( + [ + 'app-override.scope.conf', + ], + install_dir: systemduserunitdir / 'app-cinnamon-.scope.d', +) endif diff --git a/debian/cinnamon-session.install b/debian/cinnamon-session.install index fdaef25..8d75028 100644 --- a/debian/cinnamon-session.install +++ b/debian/cinnamon-session.install @@ -1,5 +1,6 @@ usr/bin/cinnamon-session* usr/lib/*/cinnamon-session* +usr/lib/systemd/user/app-cinnamon-.scope.d/app-override.scope.conf usr/lib/systemd/user/cinnamon-session.target usr/share/cinnamon-session usr/share/glib-2.0/schemas/org.cinnamon.SessionManager.gschema.xml