From d8119cb3546db179d289ebd1dd26e0eb596740ad Mon Sep 17 00:00:00 2001 From: Jos Dehaes Date: Mon, 20 Apr 2026 15:53:34 +0200 Subject: [PATCH] build: ship labwc-session.target systemd user unit Add a small systemd user target modelled on miracle-wm-session.target. It binds to graphical-session.target and orders after graphical-session-pre.target, so systemd user services declaring WantedBy=graphical-session.target (panels, portals, notification daemons, ...) start and stop in sync with a labwc session. Installed into $systemduserunitdir when the systemd dependency is available at configure time; on systems without systemd the install is skipped and labwc's runtime activation of the target fails gracefully. --- data/labwc-session.target | 6 ++++++ meson.build | 9 +++++++++ 2 files changed, 15 insertions(+) create mode 100644 data/labwc-session.target diff --git a/data/labwc-session.target b/data/labwc-session.target new file mode 100644 index 00000000..e71f20e5 --- /dev/null +++ b/data/labwc-session.target @@ -0,0 +1,6 @@ +[Unit] +Description=labwc session +Documentation=man:labwc(1) man:systemd.special(7) +BindsTo=graphical-session.target +Wants=graphical-session-pre.target +After=graphical-session-pre.target diff --git a/meson.build b/meson.build index 2c2d8e57..e2d2f585 100644 --- a/meson.build +++ b/meson.build @@ -211,6 +211,15 @@ install_data('data/labwc.desktop', install_dir: get_option('datadir') / 'wayland install_data('data/labwc-portals.conf', install_dir: get_option('datadir') / 'xdg-desktop-portal') +# Install labwc-session.target so that systemd user services with +# WantedBy=graphical-session.target start under labwc. Labwc activates +# this target itself in src/config/session.c on autostart. +systemd = dependency('systemd', required: false) +if systemd.found() + install_data('data/labwc-session.target', + install_dir: systemd.get_variable('systemduserunitdir')) +endif + icons = ['labwc-symbolic.svg', 'labwc.svg'] foreach icon : icons icon_path = join_paths('data', icon)