[gdm] greeter: frob session defaults in gsettings world



commit 4ca9d99ec29f9874d8fa1282a1e178fc48e5658b
Author: Ray Strode <rstrode redhat com>
Date:   Thu Dec 16 10:34:31 2010 -0500

    greeter: frob session defaults in gsettings world
    
    This commit changes the defaults for various parts of the
    GNOME,, so that things are properly locked down again
    in the greeter session.
    
    The current gconf overrides don't apply for recent
    components, since they have been ported to gsettings.
    
    The approach used here requires a binary gsettings database
    to get generated during "make dist" time and shipped in the
    tarball.  This is suboptimal.
    
    In future versions of dconf we'll be able to ship keyfiles
    instead and then generate the database in package %post.

 autogen.sh                     |    2 +
 daemon/gdm-welcome-session.c   |    1 +
 data/Makefile.am               |   34 ++++++++++++++++++++++++-
 data/make-dconf-override-db.sh |   54 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 90 insertions(+), 1 deletions(-)
---
diff --git a/autogen.sh b/autogen.sh
index f857474..4b9ec1e 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -17,6 +17,8 @@ PKG_NAME="GDM"
     exit 1
 }
 
+(cd data/ ; ./make-dconf-override-db.sh)
+
 which gnome-autogen.sh || {
     echo "You need to install gnome-common from the GNOME SVN"
     exit 1
diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-welcome-session.c
index 806e76f..b8ec8d7 100644
--- a/daemon/gdm-welcome-session.c
+++ b/daemon/gdm-welcome-session.c
@@ -439,6 +439,7 @@ get_welcome_environment (GdmWelcomeSession *welcome_session,
         g_hash_table_insert (hash, g_strdup ("WINDOWPATH"), g_strdup (g_getenv ("WINDOWPATH")));
         g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
         g_hash_table_insert (hash, g_strdup ("GVFS_DISABLE_FUSE"), g_strdup ("1"));
+        g_hash_table_insert (hash, g_strdup ("DCONF_PROFILE"), g_strdup ("gdm"));
 
         g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
         g_hash_table_destroy (hash);
diff --git a/data/Makefile.am b/data/Makefile.am
index 8624306..7059a51 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -94,6 +94,8 @@ EXTRA_DIST =			\
 	PostLogin 		\
 	gconf.path		\
 	session-setup.entries	\
+	make-dconf-override-db.sh \
+	dconf-profile \
 	$(NULL)
 
 CLEANFILES = 				\
@@ -113,6 +115,9 @@ MAINTAINERCLEANFILES =			\
 	*~				\
 	Makefile.in
 
+dist-hook:
+	$(srcdir)/make-dconf-override-db.sh
+	mv dconf-override-db $(distdir)
 
 uninstall-hook:
 	rm -f \
@@ -125,12 +130,19 @@ uninstall-hook:
 	$(DESTDIR)$(PAM_PREFIX)/pam.d/gdm \
 	$(DESTDIR)$(PAM_PREFIX)/pam.d/gdm-autologin \
 	$(DESTDIR)$(workingdir)/.gconf.path \
+	$(DESTDIR)$(sysconfdir)/dconf/db/gdm \
+	$(DESTDIR)$(sysconfdir)/dconf/profile/gdm \
 	-rf \
 	$(DESTDIR)$(workingdir)/.gconf.mandatory \
+	$(DESTDIR)$(workingdir)/.config/dconf \
 	$(DESTDIR)$(screenshotdir) \
 	$(DESTDIR)$(xauthdir)
 
-install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path
+	-rmdir \
+	$(DESTDIR)$(sysconfdir)/dconf/db \
+	$(DESTDIR)$(sysconfdir)/dconf
+
+install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path dconf-override-db
 	if test '!' -d $(DESTDIR)$(gdmconfdir); then \
 		$(mkinstalldirs) $(DESTDIR)$(gdmconfdir); \
 		chmod 755 $(DESTDIR)$(gdmconfdir); \
@@ -222,6 +234,24 @@ install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.pa
 		chown root:gdm $(DESTDIR)$(workingdir) || : ; \
 	fi
 
+	if test '!' -d $(DESTDIR)$(workingdir)/.config/dconf; then \
+		$(mkinstalldirs) $(DESTDIR)$(workingdir)/.config/dconf; \
+		chmod 0755 $(DESTDIR)$(workingdir)/.config/dconf; \
+		chown gdm:gdm $(DESTDIR)$(workingdir)/.config/dconf || : ; \
+	fi
+
+	if test '!' -d $(DESTDIR)$(sysconfdir)/dconf/profile; then \
+		$(mkinstalldirs) $(DESTDIR)$(sysconfdir)/dconf/profile; \
+		chmod 0755 $(DESTDIR)$(sysconfdir)/dconf/profile; \
+		chown root:root $(DESTDIR)$(sysconfdir)/dconf/profile || : ; \
+	fi
+
+	if test '!' -d $(DESTDIR)$(sysconfdir)/dconf/db; then \
+		$(mkinstalldirs) $(DESTDIR)$(sysconfdir)/dconf/db; \
+		chmod 0755 $(DESTDIR)$(sysconfdir)/dconf/db; \
+		chown root:root $(DESTDIR)$(sysconfdir)/dconf/db || : ; \
+	fi
+
 	if test '!' -d $(DESTDIR)$(cachedir); then \
 		$(mkinstalldirs) $(DESTDIR)$(cachedir); \
 		chmod 1755 $(DESTDIR)$(cachedir); \
@@ -235,4 +265,6 @@ install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.pa
 	chmod 1750 $(DESTDIR)$(workingdir)/.gconf.mandatory
 	chmod 1640 $(DESTDIR)$(workingdir)/.gconf.mandatory/*.xml
 
+	$(INSTALL_DATA) $(srcdir)/dconf-override-db $(DESTDIR)$(sysconfdir)/dconf/db/gdm
+	$(INSTALL_DATA) $(srcdir)/dconf-profile $(DESTDIR)$(sysconfdir)/dconf/profile/gdm
 
diff --git a/data/make-dconf-override-db.sh b/data/make-dconf-override-db.sh
new file mode 100755
index 0000000..7ae1957
--- /dev/null
+++ b/data/make-dconf-override-db.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+set -e
+
+export XDG_CONFIG_HOME=$(mktemp -d --tmpdir="$PWD")
+eval `dbus-launch --sh-syntax`
+
+trap 'kill $DBUS_SESSION_BUS_PID' ERR
+
+gsettings set org.gnome.power-manager show-actions false
+
+gsettings set org.gnome.desktop.a11y.keyboard enable true
+gsettings set org.gnome.desktop.background show-desktop-icons false
+gsettings set org.gnome.desktop.default-applications.terminal exec '"/bin/true"'
+gsettings set org.gnome.desktop.interface accessibility true
+
+gsettings set org.gnome.desktop.lockdown disable-application-handlers true
+gsettings set org.gnome.desktop.lockdown disable-command-line true
+gsettings set org.gnome.desktop.lockdown disable-lock-screen true
+gsettings set org.gnome.desktop.lockdown disable-print-setup true
+gsettings set org.gnome.desktop.lockdown disable-printing true
+gsettings set org.gnome.desktop.lockdown disable-save-to-disk true
+
+gsettings set org.gnome.settings-daemon.plugins.media-keys eject '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys calculator '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys email '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys help '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys home '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys media '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys next '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys pause '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys play '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys previous '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys screensaver '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys search '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys stop '""'
+gsettings set org.gnome.settings-daemon.plugins.media-keys www '""'
+
+gsettings list-schemas | egrep '^org\.gnome\.gnome-settings-daemon\.plugins\.' | while read schema; do
+    gsettings set $schema active false
+done
+
+gsettings set org.gnome.settings-daemon.plugins.a11y-keyboard active true
+gsettings set org.gnome.settings-daemon.plugins.background active true
+gsettings set org.gnome.settings-daemon.plugins.media-keys active true
+gsettings set org.gnome.settings-daemon.plugins.power active true
+gsettings set org.gnome.settings-daemon.plugins.sound active true
+gsettings set org.gnome.settings-daemon.plugins.xrandr active true
+gsettings set org.gnome.settings-daemon.plugins.xsettings active true
+
+mv $XDG_CONFIG_HOME/dconf/user dconf-override-db
+rm -rf $XDG_CONFIG_HOME
+
+kill $DBUS_SESSION_BUS_PID



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]