summaryrefslogtreecommitdiffstats
path: root/debian/gdm3.init
diff options
context:
space:
mode:
Diffstat (limited to 'debian/gdm3.init')
-rw-r--r--debian/gdm3.init93
1 files changed, 93 insertions, 0 deletions
diff --git a/debian/gdm3.init b/debian/gdm3.init
new file mode 100644
index 0000000..ff4e438
--- /dev/null
+++ b/debian/gdm3.init
@@ -0,0 +1,93 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: gdm3
+# Should-Start: console-screen dbus network-manager
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: GNOME Display Manager
+# Description: Debian init script for the GNOME Display Manager
+### END INIT INFO
+#
+# Author: Ryan Murray <rmurray@debian.org>
+#
+set -e
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/gdm3
+PIDFILE=/run/gdm3.pid
+
+test -x $DAEMON || exit 0
+
+if [ -r /etc/default/locale ]; then
+ . /etc/default/locale
+ export LANG LANGUAGE
+fi
+
+. /lib/lsb/init-functions
+
+# To start gdm even if it is not the default display manager, change
+# HEED_DEFAULT_DISPLAY_MANAGER to "false."
+HEED_DEFAULT_DISPLAY_MANAGER=true
+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
+
+activate_logind() {
+ # Try to dbus activate logind to avoid a race conditions if we are not
+ # running systemd as PID1 and we have systemd << 204 package installed (see:
+ # #747292)
+ if [ ! -d /run/systemd/system ] && [ -x /lib/systemd/systemd-logind-launch ]; then
+ dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus \
+ org.freedesktop.DBus.StartServiceByName string:org.freedesktop.login1 uint32:0 2>&1 > /dev/null
+ fi
+}
+
+case "$1" in
+ start)
+ CONFIGURED_DAEMON=$(basename "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)")
+ if grep -wqs text /proc/cmdline; then
+ log_warning_msg "Not starting GNOME Display Manager; found 'text' in kernel commandline."
+ elif [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
+ [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \
+ [ "$CONFIGURED_DAEMON" != gdm3 ] ; then
+ log_action_msg "Not starting GNOME Display Manager; it is not the default display manager"
+ else
+ log_daemon_msg "Starting GNOME Display Manager" "gdm3"
+ activate_logind || log_end_msg 1
+ /usr/share/gdm/generate-config
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --background --exec $DAEMON || log_end_msg 1
+ log_end_msg 0
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping GNOME Display Manager" "gdm3"
+ set +e
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --name gdm3 --retry 5
+ set -e
+ log_end_msg $?
+ ;;
+ reload)
+ log_daemon_msg "Scheduling reload of GNOME Display Manager configuration" "gdm3"
+ /usr/share/gdm/generate-config
+ set +e
+ start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE \
+ --name gdm3
+ set -e
+ log_end_msg $?
+ ;;
+ status)
+ status_of_proc -p "$PIDFILE" "$DAEMON" gdm3 && exit 0 || exit $?
+ ;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: /etc/init.d/gdm3 {start|stop|restart|reload|force-reload|status}"
+ exit 1
+ ;;
+esac
+
+exit 0