diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am
index ed4fd0a..26b4af3 100644
--- a/gui/simple-greeter/Makefile.am
+++ b/gui/simple-greeter/Makefile.am
@@ -27,10 +27,10 @@ AM_CPPFLAGS = \
 	$(NULL)
 
 @INTLTOOL_SCHEMAS_RULE@
+@INTLTOOL_XML_NOMERGE_RULE@
 
-schemasdir   = @GCONF_SCHEMA_FILE_DIR@
-schemas_in_files = gdm-simple-greeter.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
+gsettings_SCHEMAS = org.gnome.gdm.simple-greeter.gschema.xml
+@GSETTINGS_RULES@
 
 noinst_PROGRAMS = 			\
 	test-filesystem-type		\
@@ -228,27 +228,16 @@ ui_DATA = 					\
 	gdm-greeter-login-window.ui		\
 	$(NULL)
 
-EXTRA_DIST = 			\
-	$(schemas_in_files)	\
-	$(ui_DATA)		\
+EXTRA_DIST = 						\
+	$(schemas_in_files)				\
+	$(ui_DATA)					\
+	org.gnome.gdm.simple-greeter.gschema.xml.in	\
 	$(NULL)
 
-DISTCLEANFILES =                        \
-        $(schemas_DATA)                 \
+CLEANFILES =				\
+        $(gsettings_SCHEMAS)		\
         $(NULL)
 
 MAINTAINERCLEANFILES =                  \
         *~                              \
         Makefile.in
-
-if GCONF_SCHEMAS_INSTALL
-# don't do this if we are building in eg. rpm
-install-data-local: $(schemas_DATA)
-	if test -z "$(DESTDIR)" ; then \
-		for p in $(schemas_DATA) ; do \
-			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/gui/simple-greeter/$$p ; \
-		done \
-	fi
-else
-install-data-local:
-endif
diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
index ba8a0c5..00623d8 100644
--- a/gui/simple-greeter/gdm-greeter-login-window.c
+++ b/gui/simple-greeter/gdm-greeter-login-window.c
@@ -41,6 +41,7 @@
 #include <glib/gi18n.h>
 #include <glib/gstdio.h>
 #include <glib-object.h>
+#include <gio/gio.h>
 
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdkx.h>
@@ -48,8 +49,6 @@
 
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
-
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
 
@@ -83,12 +82,12 @@
 
 #define UI_XML_FILE       "gdm-greeter-login-window.ui"
 
-#define KEY_GREETER_DIR             "/apps/gdm/simple-greeter"
-#define KEY_BANNER_MESSAGE_ENABLED  KEY_GREETER_DIR "/banner_message_enable"
-#define KEY_BANNER_MESSAGE_TEXT     KEY_GREETER_DIR "/banner_message_text"
-#define KEY_BANNER_MESSAGE_TEXT_NOCHOOSER     KEY_GREETER_DIR "/banner_message_text_nochooser"
-#define KEY_LOGO                    KEY_GREETER_DIR "/logo_icon_name"
-#define KEY_DISABLE_USER_LIST       "/apps/gdm/simple-greeter/disable_user_list"
+#define KEY_GREETER_SCHEMA          "org.gnome.gdm.simple-greeter"
+#define KEY_BANNER_MESSAGE_ENABLED  "banner-message-enable"
+#define KEY_BANNER_MESSAGE_TEXT     "banner-message-text"
+#define KEY_BANNER_MESSAGE_TEXT_NOCHOOSER     "banner-message-text-nochooser"
+#define KEY_LOGO                    "logo-icon-name"
+#define KEY_DISABLE_USER_LIST       "disable-user-list"
 
 #define LSB_RELEASE_COMMAND "lsb_release -d"
 
@@ -123,14 +122,14 @@ struct GdmGreeterLoginWindowPrivate
         GtkWidget       *auth_page_box;
         guint            display_is_local : 1;
         guint            user_chooser_loaded : 1;
-        GConfClient     *client;
+        GSettings       *settings;
         GList           *extensions;
         GdmLoginExtension *active_extension;
         GList           *extensions_to_enable;
         GList           *extensions_to_stop;
 
         gboolean         banner_message_enabled;
-        guint            gconf_cnxn;
+        gulong           gsettings_cnxn;
 
         guint            last_mode;
         guint            dialog_mode;
@@ -1872,14 +1871,8 @@ load_theme (GdmGreeterLoginWindow *login_window)
         image = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "logo-image"));
         if (image != NULL) {
                 char        *icon_name;
-                GError      *error;
 
-                error = NULL;
-                icon_name = gconf_client_get_string (login_window->priv->client, KEY_LOGO, &error);
-                if (error != NULL) {
-                        g_debug ("GdmGreeterLoginWindow: unable to get logo icon name: %s", error->message);
-                        g_error_free (error);
-                }
+                icon_name = g_settings_get_string (login_window->priv->settings, KEY_LOGO);
 
                 g_debug ("GdmGreeterLoginWindow: Got greeter logo '%s'",
                           icon_name ? icon_name : "(null)");
@@ -2046,7 +2039,6 @@ gdm_greeter_login_window_get_preferred_height (GtkWidget *widget,
 static void
 update_banner_message (GdmGreeterLoginWindow *login_window)
 {
-        GError      *error;
         gboolean     enabled;
 
         if (login_window->priv->auth_banner_label == NULL) {
@@ -2055,12 +2047,7 @@ update_banner_message (GdmGreeterLoginWindow *login_window)
                 return;
         }
 
-        error = NULL;
-        enabled = gconf_client_get_bool (login_window->priv->client, KEY_BANNER_MESSAGE_ENABLED, &error);
-        if (error != NULL) {
-                g_debug ("GdmGreeterLoginWindow: unable to get configuration: %s", error->message);
-                g_error_free (error);
-        }
+        enabled = g_settings_get_boolean (login_window->priv->settings, KEY_BANNER_MESSAGE_ENABLED);
 
         login_window->priv->banner_message_enabled = enabled;
 
@@ -2069,21 +2056,11 @@ update_banner_message (GdmGreeterLoginWindow *login_window)
                 gtk_widget_hide (login_window->priv->auth_banner_label);
         } else {
                 char *message = NULL;
-                error = NULL;
                 if (user_chooser_has_no_user (login_window)) {
-                        message = gconf_client_get_string (login_window->priv->client, KEY_BANNER_MESSAGE_TEXT_NOCHOOSER, &error);
-                        if (error != NULL) {
-                                g_debug("GdmGreeterLoginWindow: unable to get nochooser banner text: %s", error->message);
-                                g_error_free(error);
-                        }
+                        message = g_settings_get_string (login_window->priv->settings, KEY_BANNER_MESSAGE_TEXT_NOCHOOSER);
                 }
-                error = NULL;
                 if (message == NULL) {
-                        message = gconf_client_get_string (login_window->priv->client, KEY_BANNER_MESSAGE_TEXT, &error);
-                        if (error != NULL) {
-                                g_debug("GdmGreeterLoginWindow: unable to get banner text: %s", error->message);
-                                g_error_free(error);
-                        }
+                        message = g_settings_get_string (login_window->priv->settings, KEY_BANNER_MESSAGE_TEXT);
                 }
                 if (message != NULL) {
                         char *markup;
@@ -2238,29 +2215,19 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
 }
 
 static void
-on_gconf_key_changed (GConfClient           *client,
-                      guint                  cnxn_id,
-                      GConfEntry            *entry,
-                      GdmGreeterLoginWindow *login_window)
+on_gsettings_key_changed (GSettings             *settings,
+                          gchar                 *key,
+                          gpointer               user_data)
 {
-        const char *key;
-        GConfValue *value;
-
-        key = gconf_entry_get_key (entry);
-        value = gconf_entry_get_value (entry);
+        GdmGreeterLoginWindow *login_window = (GdmGreeterLoginWindow *) user_data;
 
         if (strcmp (key, KEY_BANNER_MESSAGE_ENABLED) == 0) {
-                if (value->type == GCONF_VALUE_BOOL) {
-                        gboolean enabled;
+                gboolean enabled;
 
-                        enabled = gconf_value_get_bool (value);
-                        g_debug ("setting key %s = %d", key, enabled);
-                        login_window->priv->banner_message_enabled = enabled;
-                        update_banner_message (login_window);
-                } else {
-                        g_warning ("Error retrieving configuration key '%s': Invalid type",
-                                   key);
-                }
+                enabled = g_settings_get_boolean (settings, key);
+                g_debug ("setting key %s = %d", key, enabled);
+                login_window->priv->banner_message_enabled = enabled;
+                update_banner_message (login_window);
         } else if (strcmp (key, KEY_BANNER_MESSAGE_TEXT) == 0 || strcmp (key, KEY_BANNER_MESSAGE_TEXT_NOCHOOSER) == 0) {
                 if (login_window->priv->banner_message_enabled) {
                         update_banner_message (login_window);
@@ -2575,9 +2542,8 @@ load_login_extensions (GdmGreeterLoginWindow *login_window)
 static void
 gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
 {
-        GConfClient *client;
-        GError      *error;
-        gboolean     user_list_disable;
+        GSettings *settings;
+        gboolean   user_list_disable;
 
         gdm_profile_start (NULL);
 
@@ -2586,19 +2552,12 @@ gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
         login_window->priv->dialog_mode = MODE_UNDEFINED;
         login_window->priv->next_mode = MODE_UNDEFINED;
 
-        client = gconf_client_get_default ();
-        error = NULL;
+        settings = g_settings_new (KEY_GREETER_SCHEMA);
 
         /* The user list is not shown only if the user list is disabled and
          * timed login is also not being used.
          */
-        user_list_disable = gconf_client_get_bool (client,
-                                                   KEY_DISABLE_USER_LIST,
-                                                   &error);
-        if (error != NULL) {
-                g_debug ("GdmUserChooserWidget: unable to get disable-user-list configuration: %s", error->message);
-                g_error_free (error);
-        }
+        user_list_disable = g_settings_get_boolean (settings, KEY_DISABLE_USER_LIST);
 
         login_window->priv->user_list_disabled = user_list_disable;
 
@@ -2618,17 +2577,13 @@ gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
                           G_CALLBACK (on_window_state_event),
                           NULL);
 
-        login_window->priv->client = gconf_client_get_default ();
-        gconf_client_add_dir (login_window->priv->client,
-                              KEY_GREETER_DIR,
-                              GCONF_CLIENT_PRELOAD_ONELEVEL,
-                              NULL);
-        login_window->priv->gconf_cnxn = gconf_client_notify_add (login_window->priv->client,
-                                                                  KEY_GREETER_DIR,
-                                                                  (GConfClientNotifyFunc)on_gconf_key_changed,
-                                                                  login_window,
-                                                                  NULL,
-                                                                  NULL);
+        login_window->priv->settings = g_settings_new (KEY_GREETER_SCHEMA);
+
+        login_window->priv->gsettings_cnxn = g_signal_connect (login_window->priv->settings,
+                                                               "changed",
+                                                               G_CALLBACK (on_gsettings_key_changed),
+                                                               login_window);
+
         g_idle_add ((GSourceFunc) load_login_extensions, login_window);
         gdm_profile_end (NULL);
 }
@@ -2645,8 +2600,8 @@ gdm_greeter_login_window_finalize (GObject *object)
 
         g_return_if_fail (login_window->priv != NULL);
 
-        if (login_window->priv->client != NULL) {
-                g_object_unref (login_window->priv->client);
+        if (login_window->priv->settings != NULL) {
+                g_object_unref (login_window->priv->settings);
         }
 
         G_OBJECT_CLASS (gdm_greeter_login_window_parent_class)->finalize (object);
diff --git a/gui/simple-greeter/gdm-greeter-panel.c b/gui/simple-greeter/gdm-greeter-panel.c
index 598aadf..af9027e 100644
--- a/gui/simple-greeter/gdm-greeter-panel.c
+++ b/gui/simple-greeter/gdm-greeter-panel.c
@@ -40,7 +40,6 @@
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
 #include <dbus/dbus-glib.h>
 
 #ifdef HAVE_UPOWER
@@ -61,7 +60,8 @@
 #define GPM_DBUS_PATH      "/org/gnome/SettingsDaemon/Power"
 #define GPM_DBUS_INTERFACE "org.gnome.SettingsDaemon.Power"
 
-#define KEY_DISABLE_RESTART_BUTTONS "/apps/gdm/simple-greeter/disable_restart_buttons"
+#define KEY_GREETER_SCHEMA          "org.gnome.gdm.simple-greeter"
+#define KEY_DISABLE_RESTART_BUTTONS "disable-restart-buttons"
 #define KEY_NOTIFICATION_AREA_PADDING "/apps/notification_area_applet/prefs/padding"
 
 #define GDM_GREETER_PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_PANEL, GdmGreeterPanelPrivate))
@@ -762,18 +762,12 @@ do_disconnect (GtkWidget       *widget,
 static gboolean
 get_show_restart_buttons (GdmGreeterPanel *panel)
 {
-        gboolean     show;
-        GError      *error;
-        GConfClient *client;
+        gboolean   show;
+        GSettings *settings;
 
-        client = gconf_client_get_default ();
+        settings = g_settings_new (KEY_GREETER_SCHEMA);
 
-        error = NULL;
-        show = ! gconf_client_get_bool (client, KEY_DISABLE_RESTART_BUTTONS, &error);
-        if (error != NULL) {
-                g_debug ("GdmGreeterPanel: unable to get disable-restart-buttons configuration: %s", error->message);
-                g_error_free (error);
-        }
+        show = ! g_settings_get_boolean (settings, KEY_DISABLE_RESTART_BUTTONS);
 
 #ifdef ENABLE_RBAC_SHUTDOWN
         {
@@ -790,7 +784,7 @@ get_show_restart_buttons (GdmGreeterPanel *panel)
                 }
         }
 #endif
-        g_object_unref (client);
+        g_object_unref (settings);
 
         return show;
 }
diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
index 60acc45..d0ce274 100644
--- a/gui/simple-greeter/gdm-greeter-session.c
+++ b/gui/simple-greeter/gdm-greeter-session.c
@@ -31,7 +31,6 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glib-object.h>
-#include <gconf/gconf-client.h>
 
 #include "gdm-greeter-session.h"
 #include "gdm-greeter-client.h"
diff --git a/gui/simple-greeter/gdm-recent-option-widget.c b/gui/simple-greeter/gdm-recent-option-widget.c
index 0606753..5479c7c 100644
--- a/gui/simple-greeter/gdm-recent-option-widget.c
+++ b/gui/simple-greeter/gdm-recent-option-widget.c
@@ -34,17 +34,17 @@
 #include <glib/gstdio.h>
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
-
 #include "gdm-recent-option-widget.h"
 
 #define GDM_RECENT_OPTION_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_RECENT_OPTION_WIDGET, GdmRecentOptionWidgetPrivate))
 
+#define KEY_GREETER_SCHEMA          "org.gnome.gdm.simple-greeter"
+
 struct GdmRecentOptionWidgetPrivate
 {
-        GConfClient                   *gconf_client;
-        char                          *gconf_key;
-        guint                          notification_id;
+        GSettings                     *settings;
+        char                          *gsettings_key;
+        gulong                         change_signal_id;
         GdmRecentOptionLookupItemFunc  lookup_item_func;
 
         int                            max_item_count;
@@ -66,52 +66,28 @@ static void     gdm_recent_option_widget_finalize    (GObject              *obje
 G_DEFINE_TYPE (GdmRecentOptionWidget, gdm_recent_option_widget, GDM_TYPE_OPTION_WIDGET)
 
 static GSList *
-gdm_recent_option_widget_get_list_from_gconf (GdmRecentOptionWidget *widget)
+gdm_recent_option_widget_get_list_from_gsettings (GdmRecentOptionWidget *widget)
 {
-        GConfValue *value;
-        GSList     *value_list;
-        GSList     *list;
-        GSList     *tmp;
-        GError     *lookup_error;
-
-        lookup_error = NULL;
-        value = gconf_client_get (widget->priv->gconf_client,
-                                  widget->priv->gconf_key,
-                                  &lookup_error);
-
-        if (lookup_error != NULL) {
-                g_warning ("could not get gconf key '%s': %s",
-                           widget->priv->gconf_key,
-                           lookup_error->message);
-                g_error_free (lookup_error);
-                return NULL;
-        }
+        gchar  **value_list;
+        GSList  *list;
+        gint     i;
 
-        if (value == NULL) {
-                g_warning ("gconf key '%s' is unset",
-                           widget->priv->gconf_key);
-                return NULL;
-        }
+        value_list = g_settings_get_strv (widget->priv->settings,
+                                          widget->priv->gsettings_key);
 
-        if (value->type != GCONF_VALUE_LIST ||
-            gconf_value_get_list_type (value) != GCONF_VALUE_STRING) {
-                g_warning ("gconf key is not a list of strings");
+        if (value_list == NULL) {
+                g_warning ("gsettings key '%s' is unset",
+                           widget->priv->gsettings_key);
                 return NULL;
         }
 
-        value_list = gconf_value_get_list (value);
-
         list = NULL;
-        for (tmp = value_list; tmp != NULL; tmp = tmp->next) {
-                const char *id;
-
-                id = gconf_value_get_string ((GConfValue *)tmp->data);
-
-                list = g_slist_prepend (list, g_strdup (id));
+        for (i = 0; value_list[i]; i++) {
+                list = g_slist_prepend (list, g_strdup (value_list[i]));
         }
         list = g_slist_reverse (list);
 
-        gconf_value_free (value);
+        g_strfreev (value_list);
 
         return list;
 }
@@ -136,23 +112,32 @@ truncate_list (GSList *list,
 }
 
 static void
-gdm_recent_option_widget_sync_items_from_gconf (GdmRecentOptionWidget *widget)
+gdm_recent_option_widget_sync_items_from_gsettings (GdmRecentOptionWidget *widget)
 {
         GSList     *list;
         GSList     *tmp;
         gboolean    default_is_set;
+        gchar     **listv;
+        gint        i = 0;
 
-        list = gdm_recent_option_widget_get_list_from_gconf (widget);
+        list = gdm_recent_option_widget_get_list_from_gsettings (widget);
 
         if (widget->priv->max_item_count > 0 && g_slist_length (list) > widget->priv->max_item_count) {
                 list = truncate_list (list, widget->priv->max_item_count);
-                gconf_client_set_list (widget->priv->gconf_client,
-                                       widget->priv->gconf_key,
-                                       GCONF_VALUE_STRING, list, NULL);
+                listv = g_new0 (gchar *, g_slist_length (list) + 1);
+                for (tmp = list; tmp; tmp = g_slist_next (list)) {
+                        listv[i] = (gchar *) tmp->data;
+                }
+
+                g_settings_set_strv (widget->priv->settings,
+                                     widget->priv->gsettings_key,
+                                     (const gchar* const *) listv);
+
+                g_free (listv);
                 g_slist_foreach (list, (GFunc) g_free, NULL);
                 g_slist_free (list);
 
-                list = gdm_recent_option_widget_get_list_from_gconf (widget);
+                list = gdm_recent_option_widget_get_list_from_gsettings (widget);
         }
 
         gdm_option_widget_remove_all_items (GDM_OPTION_WIDGET (widget));
@@ -197,51 +182,46 @@ gdm_recent_option_widget_sync_items_from_gconf (GdmRecentOptionWidget *widget)
 }
 
 static void
-gdm_recent_option_widget_notify_func (GConfClient *client,
-                                      guint        connection_id,
-                                      GConfEntry  *entry,
-                                      gpointer     user_data)
+gdm_recent_option_widget_notify_func (GSettings *settings,
+                                      gchar     *key,
+                                      gpointer   user_data)
 {
-        gdm_recent_option_widget_sync_items_from_gconf (GDM_RECENT_OPTION_WIDGET (user_data));
+        gdm_recent_option_widget_sync_items_from_gsettings (GDM_RECENT_OPTION_WIDGET (user_data));
 }
 
 gboolean
-gdm_recent_option_widget_set_gconf_key (GdmRecentOptionWidget          *widget,
-                                        const char                     *gconf_key,
-                                        GdmRecentOptionLookupItemFunc   lookup_item_func,
-                                        GError                        **error)
+gdm_recent_option_widget_set_gsettings_key (GdmRecentOptionWidget          *widget,
+                                            const char                     *gsettings_key,
+                                            GdmRecentOptionLookupItemFunc   lookup_item_func,
+                                            GError                        **error)
 {
-        GError *notify_error;
+        gchar  *detailed_signal;
 
-        if (widget->priv->gconf_key != NULL &&
-            strcmp (widget->priv->gconf_key, gconf_key) == 0) {
+        if (widget->priv->gsettings_key != NULL &&
+            strcmp (widget->priv->gsettings_key, gsettings_key) == 0) {
                 return TRUE;
         }
 
-        if (widget->priv->notification_id != 0) {
-                gconf_client_notify_remove (widget->priv->gconf_client,
-                                            widget->priv->notification_id);
+        if (widget->priv->change_signal_id != 0) {
+                g_signal_handler_disconnect (widget->priv->settings,
+                                             widget->priv->change_signal_id);
 
-                widget->priv->notification_id = 0;
+                widget->priv->change_signal_id = 0;
         }
 
-        g_free (widget->priv->gconf_key);
-        widget->priv->gconf_key = g_strdup (gconf_key);
+        g_free (widget->priv->gsettings_key);
+        widget->priv->gsettings_key = g_strdup (gsettings_key);
 
         widget->priv->lookup_item_func = lookup_item_func;
 
-        gdm_recent_option_widget_sync_items_from_gconf (widget);
-
-        notify_error = NULL;
-        widget->priv->notification_id = gconf_client_notify_add (widget->priv->gconf_client,
-                                                                 gconf_key,
-                                                                 (GConfClientNotifyFunc)
-                                                                 gdm_recent_option_widget_notify_func,
-                                                                 widget, NULL, &notify_error);
-        if (notify_error != NULL) {
-                g_propagate_error (error, notify_error);
-                return FALSE;
-        }
+        gdm_recent_option_widget_sync_items_from_gsettings (widget);
+
+        detailed_signal = g_strdup_printf ("changed::%s", gsettings_key);
+        widget->priv->change_signal_id = g_signal_connect (widget->priv->settings,
+                                                           detailed_signal,
+                                                           G_CALLBACK (gdm_recent_option_widget_notify_func),
+                                                           widget);
+        g_free (detailed_signal);
 
         return TRUE;
 }
@@ -322,7 +302,7 @@ gdm_recent_option_widget_init (GdmRecentOptionWidget *widget)
 {
         widget->priv = GDM_RECENT_OPTION_WIDGET_GET_PRIVATE (widget);
 
-        widget->priv->gconf_client = gconf_client_get_default ();
+        widget->priv->settings = g_settings_new (KEY_GREETER_SCHEMA);
         widget->priv->max_item_count = 5;
 }
 
@@ -338,7 +318,7 @@ gdm_recent_option_widget_finalize (GObject *object)
 
         g_return_if_fail (widget->priv != NULL);
 
-        g_object_unref (widget->priv->gconf_client);
+        g_object_unref (widget->priv->settings);
 
         G_OBJECT_CLASS (gdm_recent_option_widget_parent_class)->finalize (object);
 }
@@ -361,18 +341,27 @@ void
 gdm_recent_option_widget_add_item (GdmRecentOptionWidget *widget,
                                    const char            *id)
 {
-        GSList *list;
+        GSList  *list;
+        GSList  *tmp;
+        gchar  **listv;
+        gint     i = 0;
 
-        list = gdm_recent_option_widget_get_list_from_gconf (widget);
+        list = gdm_recent_option_widget_get_list_from_gsettings (widget);
 
         list = g_slist_prepend (list, g_strdup (id));
 
-        gconf_client_set_list (widget->priv->gconf_client,
-                          widget->priv->gconf_key,
-                          GCONF_VALUE_STRING, list, NULL);
+        listv = g_new0 (gchar *, g_slist_length (list) + 1);
+        for (tmp = list; tmp; tmp = g_slist_next (list)) {
+                listv[i] = (gchar *) tmp->data;
+        }
+
+        g_settings_set_strv (widget->priv->settings,
+                             widget->priv->gsettings_key,
+                             (const gchar* const *) listv);
 
+        g_free (listv);
         g_slist_foreach (list, (GFunc) g_free, NULL);
         g_slist_free (list);
 
-        gdm_recent_option_widget_sync_items_from_gconf (widget);
+        gdm_recent_option_widget_sync_items_from_gsettings (widget);
 }
diff --git a/gui/simple-greeter/gdm-recent-option-widget.h b/gui/simple-greeter/gdm-recent-option-widget.h
index e5d1d73..bad8b2a 100644
--- a/gui/simple-greeter/gdm-recent-option-widget.h
+++ b/gui/simple-greeter/gdm-recent-option-widget.h
@@ -57,8 +57,8 @@ typedef char * (* GdmRecentOptionLookupItemFunc) (GdmRecentOptionWidget  *widget
 GType                  gdm_recent_option_widget_get_type               (void);
 GtkWidget *            gdm_recent_option_widget_new                    (const char *label_text,
                                                                         int         max_item_count);
-gboolean               gdm_recent_option_widget_set_gconf_key          (GdmRecentOptionWidget *widget,
-                                                                        const char *gconf_key,
+gboolean               gdm_recent_option_widget_set_gsettings_key      (GdmRecentOptionWidget *widget,
+                                                                        const char *gsettings_key,
                                                                         GdmRecentOptionLookupItemFunc func,
                                                                         GError     **error);
 void                   gdm_recent_option_widget_add_item               (GdmRecentOptionWidget *widget,
diff --git a/gui/simple-greeter/gdm-simple-greeter.schemas.in b/gui/simple-greeter/gdm-simple-greeter.schemas.in
deleted file mode 100644
index fe598ad..0000000
--- a/gui/simple-greeter/gdm-simple-greeter.schemas.in
+++ /dev/null
@@ -1,263 +0,0 @@
-<gconfschemafile>
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/banner_message_enable</key>
-      <applyto>/apps/gdm/simple-greeter/banner_message_enable</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>false</default>
-      <locale name="C">
-        <short>Enable showing the banner message</short>
-        <long>Set to true to show the banner message text.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/banner_message_text</key>
-      <applyto>/apps/gdm/simple-greeter/banner_message_text</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>string</type>
-      <default></default>
-      <locale name="C">
-        <short>Banner message text</short>
-        <long>Text banner message to show in the login window.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/banner_message_text_nochooser</key>
-      <applyto>/apps/gdm/simple-greeter/banner_message_text_nochooser</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>string</type>
-      <default></default>
-      <locale name="C">
-        <short>Banner message text when chooser is empty</short>
-        <long>Text banner message to show in the login window when the user chooser is empty, instead of banner_message_text.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/logo_icon_name</key>
-      <applyto>/apps/gdm/simple-greeter/logo_icon_name</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>string</type>
-      <default>computer</default>
-      <locale name="C">
-        <short>Icon name to use for greeter logo</short>
-        <long>Set to the themed icon name to use for the greeter logo.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/disable_restart_buttons</key>
-      <applyto>/apps/gdm/simple-greeter/disable_restart_buttons</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>FALSE</default>
-      <locale name="C">
-        <short>Disable showing the restart buttons</short>
-        <long>Set to true to disable showing the restart buttons in the login window.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/disable_user_list</key>
-      <applyto>/apps/gdm/simple-greeter/disable_user_list</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>FALSE</default>
-      <locale name="C">
-        <short>Do not show known users in the login window</short>
-        <long>Set to true to disable showing known users in the login window.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/recent-languages</key>
-      <applyto>/apps/gdm/simple-greeter/recent-languages</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[]</default>
-      <locale name="C">
-        <short>Recently selected languages</short>
-        <long>Set to a list of languages to be shown by default in the login window.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/wm_use_compiz</key>
-      <applyto>/apps/gdm/simple-greeter/wm_use_compiz</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>false</default>
-      <locale name="C">
-        <short>Use Compiz as the window manager</short>
-        <long>Set to true to use Compiz as the window manager.</long>
-      </locale>
-    </schema>
-
-
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/accessibility/screen_keyboard_enabled</key>
-      <applyto>/apps/gdm/simple-greeter/accessibility/screen_keyboard_enabled</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>FALSE</default>
-      <locale name="C">
-        <short>Enable on-screen keyboard</short>
-        <long>Set to true to enable the on-screen keyboard.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/accessibility/screen_reader_enabled</key>
-      <applyto>/apps/gdm/simple-greeter/accessibility/screen_reader_enabled</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>FALSE</default>
-      <locale name="C">
-        <short>Enable screen reader</short>
-        <long>Set to true to enable the screen reader.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/accessibility/screen_magnifier_enabled</key>
-      <applyto>/apps/gdm/simple-greeter/accessibility/screen_magnifier_enabled</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>FALSE</default>
-      <locale name="C">
-        <short>Enable screen magnifier</short>
-        <long>Set to true to enable the screen magnifier.</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/a11y-keyboard/active</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/a11y-keyboard/active</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>TRUE</default>
-      <locale name="C">
-        <short>Enable accessibility keyboard plugin</short>
-        <long>Set to true to enable the plugin to manage the accessibility keyboard settings.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/a11y-keyboard/priority</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/a11y-keyboard/priority</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>int</type>
-      <default>7</default>
-      <locale name="C">
-        <short></short>
-        <long></long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/background/active</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/background/active</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>TRUE</default>
-      <locale name="C">
-        <short>True if the background settings manager plugin is enabled.</short>
-        <long>Set to true to enable the background settings manager plugin.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/background/priority</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/background/priority</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>int</type>
-      <default>5</default>
-      <locale name="C">
-        <short></short>
-        <long></long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/media-keys/active</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/media-keys/active</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>false</default>
-      <locale name="C">
-        <short>True if the media-keys settings manager plugin is enabled.</short>
-        <long>Set to true to enable the media-keys settings manager plugin.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/media-keys/priority</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/media-keys/priority</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>int</type>
-      <default>20</default>
-      <locale name="C">
-        <short></short>
-        <long></long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/sound/active</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/sound/active</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>TRUE</default>
-      <locale name="C">
-        <short>True if the sound settings manager plugin is enabled.</short>
-        <long>Set to true to enable the sound settings manager plugin.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/sound/priority</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/sound/priority</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>int</type>
-      <default>3</default>
-      <locale name="C">
-        <short></short>
-        <long></long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/xrandr/active</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/xrandr/active</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>TRUE</default>
-      <locale name="C">
-        <short>True if the XRandR settings manager plugin is enabled.</short>
-        <long>Set to true to enable the XRandR settings manager plugin.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/xrandr/priority</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/xrandr/priority</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>int</type>
-      <default>1</default>
-      <locale name="C">
-        <short></short>
-        <long></long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/xsettings/active</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/xsettings/active</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>bool</type>
-      <default>TRUE</default>
-      <locale name="C">
-        <short>True if the xsettings settings manager plugin is enabled.</short>
-        <long>Set to true to enable the xsettings settings manager plugin.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/gdm/simple-greeter/settings-manager-plugins/xsettings/priority</key>
-      <applyto>/apps/gdm/simple-greeter/settings-manager-plugins/xsettings/priority</applyto>
-      <owner>gdm-simple-greeter</owner>
-      <type>int</type>
-      <default>2</default>
-      <locale name="C">
-        <short></short>
-        <long></long>
-      </locale>
-    </schema>
-
-  </schemalist>
-</gconfschemafile>
diff --git a/gui/simple-greeter/gdm-user-chooser-widget.c b/gui/simple-greeter/gdm-user-chooser-widget.c
index 60ed160..b0065c6 100644
--- a/gui/simple-greeter/gdm-user-chooser-widget.c
+++ b/gui/simple-greeter/gdm-user-chooser-widget.c
@@ -33,10 +33,9 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glib/gstdio.h>
+#include <gio/gio.h>
 #include <gtk/gtk.h>
 
-#include <gconf/gconf-client.h>
-
 #include <act/act-user-manager.h>
 #include <act/act-user.h>
 
@@ -44,7 +43,8 @@
 #include "gdm-settings-keys.h"
 #include "gdm-settings-client.h"
 
-#define KEY_DISABLE_USER_LIST "/apps/gdm/simple-greeter/disable_user_list"
+#define KEY_GREETER_SCHEMA    "org.gnome.gdm.simple-greeter"
+#define KEY_DISABLE_USER_LIST "disable-user-list"
 
 enum {
         USER_NO_DISPLAY              = 1 << 0,
@@ -753,18 +753,12 @@ gdm_user_chooser_widget_get_property (GObject        *object,
 static gboolean
 is_user_list_disabled (GdmUserChooserWidget *widget)
 {
-        GConfClient *client;
-        GError      *error;
-        gboolean     result;
-
-        client = gconf_client_get_default ();
-        error = NULL;
-        result = gconf_client_get_bool (client, KEY_DISABLE_USER_LIST, &error);
-        if (error != NULL) {
-                g_debug ("GdmUserChooserWidget: unable to get disable-user-list configuration: %s", error->message);
-                g_error_free (error);
-        }
-        g_object_unref (client);
+        GSettings *settings;
+        gboolean   result;
+
+        settings = g_settings_new (KEY_GREETER_SCHEMA);
+        result = g_settings_get_boolean (settings, KEY_DISABLE_USER_LIST);
+        g_object_unref (settings);
 
         return result;
 }
diff --git a/gui/simple-greeter/greeter-main.c b/gui/simple-greeter/greeter-main.c
index a2c533e..ef54a7b 100644
--- a/gui/simple-greeter/greeter-main.c
+++ b/gui/simple-greeter/greeter-main.c
@@ -29,7 +29,6 @@
 #include <glib/gi18n.h>
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 
 #include <dbus/dbus-glib.h>
 
diff --git a/gui/simple-greeter/org.gnome.gdm.simple-greeter.gschema.xml.in b/gui/simple-greeter/org.gnome.gdm.simple-greeter.gschema.xml.in
new file mode 100644
index 0000000..87f58a5
--- /dev/null
+++ b/gui/simple-greeter/org.gnome.gdm.simple-greeter.gschema.xml.in
@@ -0,0 +1,154 @@
+<schemalist>
+  <schema id="org.gnome.gdm.simple-greeter" path="/apps/gdm/simple-greeter/">
+    <key name="banner-message-enable" type="b">
+      <default>false</default>
+      <summary>Enable showing the banner message</summary>
+      <description>Set to true to show the banner message text.</description>
+    </key>
+
+    <key name="banner-message-text" type="s">
+      <default>''</default>
+      <summary>Banner message text</summary>
+      <description>Text banner message to show in the login window.</description>
+    </key>
+
+    <key name="banner-message-text-nochooser" type="s">
+      <default>''</default>
+      <summary>Banner message text when chooser is empty</summary>
+      <description>Text banner message to show in the login window when the user chooser is empty, instead of banner_message_text.</description>
+    </key>
+
+    <key name="logo-icon-name" type="s">
+      <default>'fedora-logo'</default>
+      <summary>Icon name to use for greeter logo</summary>
+      <description>Set to the themed icon name to use for the greeter logo.</description>
+    </key>
+
+    <key name="disable-restart-buttons" type="b">
+      <default>false</default>
+      <summary>Disable showing the restart buttons</summary>
+      <description>Set to true to disable showing the restart buttons in the login window.</description>
+    </key>
+
+    <key name="disable-user-list" type="b">
+      <default>false</default>
+      <summary>Do not show known users in the login window</summary>
+      <description>Set to true to disable showing known users in the login window.</description>
+    </key>
+
+    <key name="recent-languages" type="as">
+      <default>[]</default>
+      <summary>Recently selected languages</summary>
+      <description>Set to a list of languages to be shown by default in the login window.</description>
+    </key>
+
+    <key name="wm-use-compiz" type="b">
+      <default>false</default>
+      <summary>Use Compiz as the window manager</summary>
+      <description>Set to true to use Compiz as the window manager.</description>
+    </key>
+    <child name="accessibility" schema="org.gnome.gdm.simple-greeter.accessibility"/>
+    <child name="settings-manager-plugins" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins"/>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.accessibility" path="/apps/gdm/simple-greeter/accessibility/">
+    <key name="screen-keyboard-enabled" type="b">
+      <default>false</default>
+      <summary>Enable on-screen keyboard</summary>
+      <description>Set to true to enable the on-screen keyboard.</description>
+    </key>
+
+    <key name="screen-reader-enabled" type="b">
+      <default>false</default>
+      <summary>Enable screen reader</summary>
+      <description>Set to true to enable the screen reader.</description>
+    </key>
+
+    <key name="screen-magnifier-enabled" type="b">
+      <default>false</default>
+      <summary>Enable screen magnifier</summary>
+      <description>Set to true to enable the screen magnifier.</description>
+    </key>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins" path="/apps/gdm/simple-greeter/settings-manager-plugins/">
+    <child name="a11y-keyboard" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins.a11y-keyboard"/>
+    <child name="background" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins.background"/>
+    <child name="media-keys" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins.media-keys"/>
+    <child name="sound" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins.sound"/>
+    <child name="xrandr" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins.xrandr"/>
+    <child name="xsettings" schema="org.gnome.gdm.simple-greeter.settings-manager-plugins.xsettings"/>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins.a11y-keyboard" path="/apps/gdm/simple-greeter/settings-manager-plugins/a11y-keyboard/">
+    <key name="active" type="b">
+      <default>true</default>
+      <summary>Enable accessibility keyboard plugin</summary>
+      <description>Set to true to enable the plugin to manage the accessibility keyboard settings.</description>
+    </key>
+
+    <key name="priority" type="i">
+      <default>7</default>
+    </key>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins.background" path="/apps/gdm/simple-greeter/settings-manager-plugins/background/">
+    <key name="active" type="b">
+      <default>true</default>
+      <summary>True if the background settings manager plugin is enabled.</summary>
+      <description>Set to true to enable the background settings manager plugin.</description>
+    </key>
+
+    <key name="priority" type="i">
+      <default>5</default>
+    </key>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins.media-keys" path="/apps/gdm/simple-greeter/settings-manager-plugins/media-keys/">
+    <key name="active" type="b">
+      <default>false</default>
+      <summary>True if the media-keys settings manager plugin is enabled.</summary>
+      <description>Set to true to enable the media-keys settings manager plugin.</description>
+    </key>
+
+    <key name="priority" type="i">
+      <default>20</default>
+    </key>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins.sound" path="/apps/gdm/simple-greeter/settings-manager-plugins/sound/">
+    <key name="active" type="b">
+      <default>true</default>
+      <summary>True if the sound settings manager plugin is enabled.</summary>
+      <description>Set to true to enable the sound settings manager plugin.</description>
+    </key>
+
+    <key name="priority" type="i">
+      <default>3</default>
+    </key>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins.xrandr" path="/apps/gdm/simple-greeter/settings-manager-plugins/xrandr/">
+    <key name="active" type="b">
+      <default>true</default>
+      <summary>True if the XRandR settings manager plugin is enabled.</summary>
+      <description>Set to true to enable the XRandR settings manager plugin.</description>
+    </key>
+
+    <key name="priority" type="i">
+      <default>1</default>
+    </key>
+  </schema>
+
+  <schema id="org.gnome.gdm.simple-greeter.settings-manager-plugins.xsettings" path="/apps/gdm/simple-greeter/settings-manager-plugins/xsettings/">
+    <key name="active" type="b">
+      <default>true</default>
+      <summary>True if the xsettings settings manager plugin is enabled.</summary>
+      <description>Set to true to enable the xsettings settings manager plugin.</description>
+    </key>
+
+    <key name="priority" type="i">
+      <default>2</default>
+    </key>
+  </schema>
+</schemalist>
