diff --git a/data/calls-daemon.service.in b/data/calls-daemon.service.in new file mode 100644 index 0000000..bb83118 --- /dev/null +++ b/data/calls-daemon.service.in @@ -0,0 +1,11 @@ +[Unit] +Description=A phone dialer and call handler (daemon mode) +PartOf=graphical-session.target + +[Service] +BusName=org.gnome.Calls +ExecStart=@bindir@/gnome-calls --daemon +Type=dbus + +[Install] +WantedBy=graphical-session.target diff --git a/data/meson.build b/data/meson.build index 080a2a1..4fe62e2 100644 --- a/data/meson.build +++ b/data/meson.build @@ -20,11 +20,11 @@ desktop_daemon_file = i18n.merge_file( install_dir : join_paths(sysconfdir, 'xdg/autostart') ) -# DBus service service_data = configuration_data() service_data.set('bindir', full_bindir) -service_file = 'org.gnome.Calls.service' +# DBus service +service_file = 'org.gnome.Calls.service' configure_file( input : service_file + '.in', output : service_file, @@ -33,6 +33,16 @@ configure_file( install_dir : full_servicedir, ) +# Systemd user service +systemd_unit = 'calls-daemon.service' +configure_file( + input : systemd_unit + '.in', + output : systemd_unit, + configuration : service_data, + install : true, + install_dir : systemd_user_unit_dir, +) + desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', diff --git a/data/org.gnome.Calls-daemon.desktop.in b/data/org.gnome.Calls-daemon.desktop.in index 0b9febb..0d2e342 100644 --- a/data/org.gnome.Calls-daemon.desktop.in +++ b/data/org.gnome.Calls-daemon.desktop.in @@ -15,3 +15,4 @@ Terminal=false Categories=Network;GNOME;GTK;Telephony; X-GNOME-AutoRestart=true X-GNOME-UsesNotifications=true +X-GNOME-HiddenUnderSystemd=true diff --git a/meson.build b/meson.build index 5794842..8961a1a 100644 --- a/meson.build +++ b/meson.build @@ -59,6 +59,16 @@ libcall_ui_dep = dependency('call-ui', default_options: ['tests=false', 'examples=false', 'gtk_doc=false'], ) +systemd_user_unit_dir = get_option('systemd_user_unit_dir') +systemd_dep = dependency('systemd', required: false) +if systemd_user_unit_dir == '' + if systemd_dep.found() + systemd_user_unit_dir = systemd_dep.get_variable('systemd_user_unit_dir') + else + systemd_user_unit_dir = prefix / libdir / 'systemd/user' + endif +endif + config_data = configuration_data() config_data.set_quoted('APP_ID', calls_id) config_data.set_quoted('APP_DATA_NAME', calls_name) @@ -145,6 +155,7 @@ summary({ 'Build manpages': get_option('manpages'), 'Build tests': get_option('tests'), 'Use gstreamers debug API': get_option('gst_debug'), + 'Directory for systemd user units': systemd_user_unit_dir, }) subdir('po') diff --git a/meson_options.txt b/meson_options.txt index 264489c..d9c08c9 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -13,3 +13,7 @@ option('manpages', option('gst_debug', type: 'boolean', value: true, description: 'Whether to use gstreamers debugging API') + +option('systemd_user_unit_dir', + type: 'string', value: '', + description: 'Directory for systemd user units')