From cf5dc02c0e9a3327f3f37cddf3ed2e60a89ddfe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 23 Apr 2026 15:03:02 -0700 Subject: [PATCH] Add systemd notify --- compositor/WindowManager.vala | 1 + compositor/meson.build | 3 ++- vapi/libsystemd.vapi | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 vapi/libsystemd.vapi diff --git a/compositor/WindowManager.vala b/compositor/WindowManager.vala index 791805a5a..83ef3e905 100644 --- a/compositor/WindowManager.vala +++ b/compositor/WindowManager.vala @@ -208,6 +208,7 @@ namespace GreeterCompositor { Idle.add (() => { // let the session manager move to the next phase + Systemd.Daemon.notify (true, "READY=1"); display.get_context ().notify_ready (); ShellClientsManager.init (this); diff --git a/compositor/meson.build b/compositor/meson.build index e84533107..f2f188c20 100644 --- a/compositor/meson.build +++ b/compositor/meson.build @@ -5,6 +5,7 @@ gtk_dep = [dependency('gtk+-3.0'), dependency('gdk-x11-3.0')] gee_dep = dependency('gee-0.8') m_dep = meson.get_compiler('c').find_library('m', required: false) posix_dep = meson.get_compiler('vala').find_library('posix', required: false) +systemd_dep = dependency('libsystemd') # Mutter is a complicated library with many API changes, copied from Gala. mutter_dep = [] @@ -133,7 +134,7 @@ executable( meson.project_name()+'-compositor', compositor_files, config_header, - dependencies: [glib_dep, gtk_dep, gee_dep, m_dep, posix_dep, mutter_dep, gnome_desktop_dep, pantheon_desktop_shell_dep], + dependencies: [glib_dep, gtk_dep, gee_dep, m_dep, posix_dep, mutter_dep, systemd_dep, gnome_desktop_dep, pantheon_desktop_shell_dep], vala_args: vala_flags, c_args: compositor_c_args, build_rpath: mutter_typelib_dir, diff --git a/vapi/libsystemd.vapi b/vapi/libsystemd.vapi new file mode 100644 index 000000000..54bc3a681 --- /dev/null +++ b/vapi/libsystemd.vapi @@ -0,0 +1,18 @@ +[CCode (cheader_filename = "systemd/sd-daemon.h")] +namespace Systemd.Daemon { + [CCode (cname="sd_notify")] + int notify([CCode (type="int")]bool unset_environment, string state); + + [CCode (cname="sd_notifyf")] + int notifyf([CCode (type="int")]bool unset_environment, string format, ...); + + [CCode (cname="sd_pid_notify")] + int pid_notify(Posix.pid_t pid, [CCode (type="int")]bool unset_environment, string state); + + [CCode (cname="sd_pid_notifyf")] + int pid_notifyf(Posix.pid_t pid, [CCode (type="int")]bool unset_environment, string format, ...); + + [CCode (cname="sd_pid_notify_with_fds")] + int pid_notify_with_fds(Posix.pid_t pid, [CCode (type="int")]bool unset_environment, string state, int[] fds); +} +