--- gnome-settings-daemon-2.22.0/gnome-settings-daemon/main.c-orig	2008-05-01 18:08:08.665065000 -0500
+++ gnome-settings-daemon-2.22.0/gnome-settings-daemon/main.c	2008-05-01 18:39:40.872028000 -0500
@@ -26,6 +26,7 @@
 #include <locale.h>
 
 #include <glib/gi18n.h>
+#include <glib/gstdio.h>
 #include <gtk/gtk.h>
 #include <libgnome/libgnome.h>
 
@@ -191,6 +192,7 @@ main (int argc, char *argv[])
         GnomeProgram         *program;
         gboolean              res;
         GError               *error;
+        gboolean              create_dirs = TRUE;
 
         manager = NULL;
         program = NULL;
@@ -224,12 +226,22 @@ main (int argc, char *argv[])
                 goto out;
         }
 
+        /*
+         * If the user does not have a writable HOME directory, then
+         * init libgnome with appropriate arguments to run without
+         * needing one.
+         */
+        if (g_access (g_get_home_dir(), W_OK) != 0)
+           create_dirs = FALSE;
+
         program = gnome_program_init (PACKAGE,
                                       VERSION,
                                       LIBGNOME_MODULE,
                                       argc,
                                       argv,
-                                      GNOME_PARAM_NONE);
+                                      GNOME_PARAM_CREATE_DIRECTORIES,
+                                      create_dirs,
+                                      NULL);
 
         manager = gnome_settings_manager_new ();
         if (manager == NULL) {
