diff --git a/compositor/WindowManager.vala b/compositor/WindowManager.vala index 791805a5..83ef3e90 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 e8453310..f2f188c2 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 00000000..54bc3a68 --- /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); +} +