diff --git a/kiosk-script/meson.build b/kiosk-script/meson.build index e02bb88..ab613aa 100644 --- a/kiosk-script/meson.build +++ b/kiosk-script/meson.build @@ -18,17 +18,19 @@ i18n.merge_file( type: 'desktop' ) +if use_systemd configure_file( input: 'systemd/org.gnome.Kiosk.Script.service.in', output: '@BASENAME@', configuration: systemd_service_config_data, install_dir: systemd_user_unit_dir ) - + kiosk_script_systemd_target_dir = join_paths(systemd_user_unit_dir, 'gnome-session@gnome-kiosk-script.target.d') install_data('systemd/session.conf', install_dir: kiosk_script_systemd_target_dir ) +endif install_data('gnome-session/gnome-kiosk-script.session', install_dir: session_dir, diff --git a/meson.build b/meson.build index c27c073..21dd706 100644 --- a/meson.build +++ b/meson.build @@ -43,9 +43,19 @@ config_h = configure_file( configuration: config_data ) + # Check for systemd +use_systemd = get_option('logind') == 'systemd' +if use_systemd + libsystemd_dep = dependency('libsystemd', version: '>= 209', required: true) +elif get_option('logind') == 'elogind' + libelogind_dep = dependency('libelogind', version: '>= 209', required: true) +endif +systemd_user_unit_dir = get_option('systemduserunitdir') +if systemd_user_unit_dir == '' and use_systemd systemd_user_unit_dir = dependency('systemd').get_pkgconfig_variable('systemduserunitdir', define_variable: ['prefix', prefix]) systemd_dependency = dependency('libsystemd') +endif dbus_proxies = [] dbus_proxies += { @@ -135,7 +145,10 @@ compositor_dependencies += dependency('gdk-pixbuf-2.0') compositor_dependencies += dependency(libmutter_cogl_name) compositor_dependencies += dependency(libmutter_clutter_name) compositor_dependencies += mutter_dependency + +if use_systemd compositor_dependencies += systemd_dependency +endif compositor_headers = [] compositor_headers += 'compositor/kiosk-app.h' @@ -199,15 +212,18 @@ i18n.merge_file( type: 'desktop' ) +if use_systemd systemd_service_config_data = configuration_data() systemd_service_config_data.set('bindir', bindir) systemd_service_files = [] systemd_service_files += 'compositor/data/systemd/org.gnome.Kiosk@wayland.service.in' -if mutter_have_x11 - systemd_service_files += 'compositor/data/systemd/org.gnome.Kiosk@x11.service.in' + if mutter_have_x11 + systemd_service_files += 'compositor/data/systemd/org.gnome.Kiosk@x11.service.in' + endif endif +if use_systemd foreach service_file : systemd_service_files configure_file( input: service_file, @@ -216,7 +232,6 @@ foreach service_file : systemd_service_files install_dir: systemd_user_unit_dir ) endforeach - targetconf = configuration_data() sessions_wants = ['org.gnome.Kiosk@wayland.service'] @@ -233,6 +248,7 @@ target = configure_file( systemd_service_config_data = configuration_data() systemd_service_config_data.set('bindir', bindir) +endif dconf_config_data = configuration_data() dconf_config_data.set('PACKAGE', meson.project_name()) diff --git a/meson_options.txt b/meson_options.txt index 900652d..3eb4802 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -15,3 +15,14 @@ option('search-app', value: true, description: 'Build kiosk search app example' ) + +option('logind', + type: 'combo', + choices: ['systemd', 'elogind'], value: 'systemd', + description: 'logind implementation' +) + +option('systemduserunitdir', + type: 'string', + description: 'Directory for systemd user service files' +) \ No newline at end of file diff --git a/search-app/meson.build b/search-app/meson.build index a1d683f..963be0a 100644 --- a/search-app/meson.build +++ b/search-app/meson.build @@ -39,14 +39,16 @@ i18n.merge_file( type: 'desktop' ) +if use_systemd configure_file( input: 'systemd/org.gnome.Kiosk.SearchApp.service.in', output: '@BASENAME@', configuration: systemd_service_config_data, install_dir: systemd_user_unit_dir ) - + kiosk_search_appliance_systemd_target_dir = join_paths(systemd_user_unit_dir, 'gnome-session@org.gnome.Kiosk.SearchApp.target.d') install_data('systemd/session.conf', install_dir: kiosk_search_appliance_systemd_target_dir ) +endif diff --git a/compositor/kiosk-compositor.c b/compositor/kiosk-compositor.c index f79cbc4..a9bc0de 100644 --- a/compositor/kiosk-compositor.c +++ b/compositor/kiosk-compositor.c @@ -134,12 +134,6 @@ register_with_display_manager (KioskCompositor *self) } } -static void -register_with_systemd (KioskCompositor *self) -{ - sd_notify (TRUE, "READY=1"); -} - static void register_session (KioskCompositor *self) { diff --git a/compositor/kiosk-compositor.c b/compositor/kiosk-compositor.c index a9bc0de..f93f459 100644 --- a/compositor/kiosk-compositor.c +++ b/compositor/kiosk-compositor.c @@ -141,7 +141,6 @@ register_session (KioskCompositor *self) register_with_display_manager (self); - register_with_systemd (self); } static void diff --git a/kiosk-script/gnome-kiosk-script b/kiosk-script/gnome-kiosk-script index c4ab176..c2d6f58 100755 --- a/kiosk-script/gnome-kiosk-script +++ b/kiosk-script/gnome-kiosk-script @@ -1,9 +1,10 @@ #!/usr/bin/sh EXECDIR=~/.local/bin +CONFIG=/etc/xdg/autostart if [ ! -e $EXECDIR/gnome-kiosk-script ]; then - mkdir -p $EXECDIR ~/.config + mkdir -p $EXECDIR $CONFIG ~/.config cat > $EXECDIR/gnome-kiosk-script <<- "EOF" #!/bin/sh # This script is located in ~/.local/bin. @@ -18,7 +19,20 @@ if [ ! -e $EXECDIR/gnome-kiosk-script ]; then exec "$0" "$@" EOF +cat > $CONFIG/gnome-kiosk.desktop <<- "EOF" + +[Desktop Entry] +Type=Application +Exec=~/.local/bin/gnome-kiosk-script +Hidden=false +NoDisplay=false +X-GNOME-Autostart-enabled=true +Name=Kiosk Script +Comment=Starts the gnome-kiosk-script on login +EOF + chmod +x $EXECDIR/gnome-kiosk-script + chmod -x $CONFIG/gnome-kiosk.desktop touch ~/.config/gnome-initial-setup-done fi