summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Lane <iain@orangesquash.org.uk>2018-01-17 15:56:17 +0000
committerIain Lane <iainl@gnome.org>2018-07-17 10:11:31 +0100
commitf2a09bc1f10e06cd44926c132a04ee463e185506 (patch)
tree5b3764db41ac5d71ae28042a270bb0235270ba90
parent68f00f397f36402d1d61226c0617f6044a8118d1 (diff)
downloadgnome-shell-wip/laney/systemd-user-units.tar.gz
So that we can be started by systemd --user, instead of gnome-session. There are three units: - gnome-shell.service: Start gnome-shell itself. - gnome-shell-x11.target, gnome-shell-wayland.target: Sync points for units that need to care if x11 or wayland is in use. gnome-settings-daemon will use these, for example. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/138
-rw-r--r--data/gnome-shell-wayland.target5
-rw-r--r--data/gnome-shell-x11.target5
-rw-r--r--data/gnome-shell.service.in11
-rw-r--r--data/meson.build17
-rw-r--r--meson.build15
-rw-r--r--src/meson.build2
6 files changed, 51 insertions, 4 deletions
diff --git a/data/gnome-shell-wayland.target b/data/gnome-shell-wayland.target
new file mode 100644
index 000000000..a75da3ec7
--- /dev/null
+++ b/data/gnome-shell-wayland.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=GNOME Shell (wayland sync point)
+After=gnome-shell.service
+BindsTo=gnome-shell.service
+Conflicts=gnome-shell-x11.target
diff --git a/data/gnome-shell-x11.target b/data/gnome-shell-x11.target
new file mode 100644
index 000000000..4da13509c
--- /dev/null
+++ b/data/gnome-shell-x11.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=GNOME Shell (x11 sync point)
+After=gnome-shell.service
+BindsTo=gnome-shell.service
+Conflicts=gnome-shell-wayland.target
diff --git a/data/gnome-shell.service.in b/data/gnome-shell.service.in
new file mode 100644
index 000000000..ee275fa0e
--- /dev/null
+++ b/data/gnome-shell.service.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=GNOME Shell
+Wants=gnome-session.service
+After=graphical-session-pre.target gnome-session-bus.target
+PartOf=graphical-session.target
+
+[Service]
+Type=dbus
+ExecStart=@bindir@/gnome-shell
+Restart=on-failure
+BusName=org.gnome.Shell
diff --git a/data/meson.build b/data/meson.build
index 7c9807721..1c2b952a2 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -93,6 +93,23 @@ schema = configure_file(
install_dir: schemadir
)
+if have_systemd
+ unitconf = configuration_data()
+ unitconf.set('bindir', bindir)
+
+ unit = configure_file(
+ input: 'gnome-shell.service.in',
+ output: 'gnome-shell.service',
+ configuration: unitconf,
+ install_dir: systemduserunitdir
+ )
+
+ units = files('gnome-shell-wayland.target',
+ 'gnome-shell-x11.target')
+
+ install_data(units, install_dir: systemduserunitdir)
+endif
+
# for unit tests - gnome.compile_schemas() only looks in srcdir
custom_target('compile-schemas',
input: schema,
diff --git a/meson.build b/meson.build
index d3dba0c08..edc597553 100644
--- a/meson.build
+++ b/meson.build
@@ -59,6 +59,13 @@ servicedir = join_paths(datadir, 'dbus-1', 'services')
plugindir = get_variable('BROWSER_PLUGIN_DIR', mozplugindir)
+# XXX: Once https://github.com/systemd/systemd/issues/9595 is fixed and we can
+# depend on this version, replace with something like:
+# systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
+# define_variable: ['prefix', prefix])
+# and uncomment systemd_dep below
+systemduserunitdir = join_paths(libdir, 'systemd', 'user')
+
keybindings_dep = dependency('gnome-keybindings', required: false)
if keybindings_dep.found()
keysdir = keybindings_dep.get_pkgconfig_variable('keysdir')
@@ -117,10 +124,12 @@ else
endif
if get_option('systemd')
- systemd_dep = dependency('libsystemd')
- have_systemd = systemd_dep.found()
+ libsystemd_dep = dependency('libsystemd')
+ # XXX: see systemduserunitdir
+ # systemd_dep = dependency('systemd')
+ have_systemd = true
else
- systemd_dep = []
+ libsystemd_dep = []
have_systemd = false
endif
diff --git a/src/meson.build b/src/meson.build
index 1d655f407..2670f589c 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -53,7 +53,7 @@ gnome_shell_deps = [
canberra_dep, canberra_gtk_dep,
polkit_dep,
gcr_dep,
- systemd_dep
+ libsystemd_dep
]
gnome_shell_deps += nm_deps