summaryrefslogtreecommitdiffstats
path: root/debian/gdm3.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/gdm3.postinst')
-rw-r--r--debian/gdm3.postinst72
1 files changed, 72 insertions, 0 deletions
diff --git a/debian/gdm3.postinst b/debian/gdm3.postinst
new file mode 100644
index 0000000..f8ec06c
--- /dev/null
+++ b/debian/gdm3.postinst
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+THIS_PACKAGE=gdm3
+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
+
+# creating Debian-gdm group if it isn't already there
+if ! getent group Debian-gdm >/dev/null; then
+ addgroup --system --force-badname --quiet Debian-gdm
+fi
+
+# creating Debian-gdm user if it isn't already there
+if ! getent passwd Debian-gdm >/dev/null; then
+ adduser --system --force-badname --quiet \
+ --ingroup Debian-gdm \
+ --home /var/lib/gdm3 --no-create-home \
+ --shell /bin/false \
+ Debian-gdm
+ usermod -c "Gnome Display Manager" Debian-gdm
+fi
+
+# debconf is not a registry, so we only fiddle with the default file if
+# the configure script requested an update
+if [ -e $DEFAULT_DISPLAY_MANAGER_FILE.debconf-update ]; then
+ rm -f $DEFAULT_DISPLAY_MANAGER_FILE.debconf-update
+ if db_get shared/default-x-display-manager; then
+ # workaround debconf passthru bug (#379198)
+ if [ -z "$RET" ]; then
+ RET="$THIS_PACKAGE"
+ fi
+ if [ "$THIS_PACKAGE" != "$RET" ]; then
+ echo "Please be sure to run \"dpkg --configure $RET\"."
+ fi
+ if db_get "$RET"/daemon_name; then
+ echo "$RET" > $DEFAULT_DISPLAY_MANAGER_FILE
+ fi
+ fi
+fi
+
+DEFAULT_SERVICE=/etc/systemd/system/display-manager.service
+# set default-display-manager systemd service link according to our config
+if [ "$1" = configure ] && [ -d /etc/systemd/system/ ]; then
+ if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
+ SERVICE=/lib/systemd/system/$(basename $(cat "$DEFAULT_DISPLAY_MANAGER_FILE")).service
+ if [ -h "$DEFAULT_SERVICE" ] && [ $(readlink "$DEFAULT_SERVICE") = /dev/null ]; then
+ echo "Display manager service is masked" >&2
+ elif [ -e "$SERVICE" ]; then
+ ln -sf "$SERVICE" "$DEFAULT_SERVICE"
+ else
+ echo "WARNING: $SERVICE is the selected default display manager but does not exist" >&2
+ rm -f "$DEFAULT_SERVICE"
+ fi
+ else
+ rm -f "$DEFAULT_SERVICE"
+ fi
+fi
+
+ucf --debconf-ok --three-way /usr/share/gdm/greeter.dconf-defaults /etc/gdm3/greeter.dconf-defaults
+ucfr gdm3 /etc/gdm3/greeter.dconf-defaults
+
+# debconf hangs if gdm3 gets started below without this
+db_stop || true
+
+#DEBHELPER#
+
+if [ -x /etc/init.d/gdm3 ]; then
+ update-rc.d gdm3 defaults >/dev/null 2>&1
+ invoke-rc.d gdm3 reload || true
+fi