diff --git a/gsearchtool/Makefile.am b/gsearchtool/Makefile.am
index 77763c2..692e290 100644
--- a/gsearchtool/Makefile.am
+++ b/gsearchtool/Makefile.am
@@ -21,6 +21,11 @@ schema_in_file = gnome-search-tool.schemas.in
 schema_DATA = $(schema_in_file:.schemas.in=.schemas)
 @INTLTOOL_SCHEMAS_RULE@
 
+gsettingsschema_in_files = org.gnome.gnome-search-tool.gschema.xml.in
+gsettings_SCHEMAS = $(gsettingsschema_in_files:.xml.in=.xml)
+@INTLTOOL_XML_NOMERGE_RULE@
+@GSETTINGS_RULES@
+
 gnome_search_tool_SOURCES =     \
 	gsearchtool-support.c   \
 	gsearchtool-support.h   \
@@ -52,6 +57,7 @@ Utilities_DATA = $(Utilities_in_files:.desktop.in=.desktop)
 EXTRA_DIST = \
 	$(Utilities_in_files) \
 	$(Utilities_DATA) \
+	$(gsettingsschema_in_files) \
 	$(schema_in_file) \
 	$(man_MANS)
 
@@ -66,6 +72,7 @@ endif
 
 CLEANFILES = 				\
 	gnome-search-tool.desktop	\
+	$(gsettings_SCHEMAS)		\
 	$(schema_DATA)
 
 disthook:
diff --git a/gsearchtool/gsearchtool.c b/gsearchtool/gsearchtool.c
index c81ff0a..8c12156 100644
--- a/gsearchtool/gsearchtool.c
+++ b/gsearchtool/gsearchtool.c
@@ -2745,7 +2745,7 @@ gsearch_app_create (GSearchWindow * gsearch)
 
 	gtk_table_attach (GTK_TABLE (gsearch->name_and_folder_table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 1);
 
-	gsearch->name_contains_entry = gsearch_history_entry_new ("gsearchtool-file-entry", FALSE);
+	gsearch->name_contains_entry = gsearch_history_entry_new ("name-contains-history", FALSE);
 	gtk_label_set_mnemonic_widget (GTK_LABEL (label), gsearch->name_contains_entry);
 	gsearch_history_entry_set_history_length (GSEARCH_HISTORY_ENTRY (gsearch->name_contains_entry), 10);
 	gtk_table_attach (GTK_TABLE (gsearch->name_and_folder_table), gsearch->name_contains_entry, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0, 0);
diff --git a/gsearchtool/libgnomeui-deprecated/gsearchtool-entry.c b/gsearchtool/libgnomeui-deprecated/gsearchtool-entry.c
index df4bcb3..a579c63 100644
--- a/gsearchtool/libgnomeui-deprecated/gsearchtool-entry.c
+++ b/gsearchtool/libgnomeui-deprecated/gsearchtool-entry.c
@@ -34,7 +34,6 @@
 #include <string.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 
 #include "gsearchtool-entry.h"
 
@@ -57,7 +56,7 @@ struct _GsearchHistoryEntryPrivate
 	
 	GtkEntryCompletion *completion;
 	
-	GConfClient        *gconf_client;
+	GSettings          *settings;
 };
 
 G_DEFINE_TYPE (GsearchHistoryEntry, gsearch_history_entry, GTK_TYPE_COMBO_BOX)
@@ -129,10 +128,10 @@ gsearch_history_entry_finalize (GObject *object)
 	
 	g_free (priv->history_id);
 
-	if (priv->gconf_client != NULL)
+	if (priv->settings != NULL)
 	{
-		g_object_unref (G_OBJECT (priv->gconf_client));
-		priv->gconf_client = NULL;
+		g_object_unref (G_OBJECT (priv->settings));
+		priv->settings = NULL;
 	}
 
 	G_OBJECT_CLASS (gsearch_history_entry_parent_class)->finalize (object);
@@ -185,40 +184,23 @@ get_history_store (GsearchHistoryEntry *entry)
 	return (GtkListStore *) store;
 }
 
-static char *
-get_history_key (GsearchHistoryEntry *entry)
-{
-	gchar *tmp;
-	gchar *key;
-
-	/*
-	 * Store the data under /apps/gnome-settings/
-	 * like the old GnomeEntry did
-	 */
-
-	tmp = gconf_escape_key (entry->priv->history_id, -1);
-	key = g_strconcat ("/apps/gnome-settings/",
-			   "gnome-search-tool",
-			   "/history-",
-			   tmp,
-			   NULL);
-	g_free (tmp);
-
-	return key;
-}
-
-static GSList *
-get_history_list (GsearchHistoryEntry *entry)
+static gchar **
+get_history_items (GsearchHistoryEntry *entry)
 {
 	GtkListStore *store;
 	GtkTreeIter iter;
+	GPtrArray *array;
 	gboolean valid;
-	GSList *list = NULL;
+	gint n_children;
 
 	store = get_history_store (entry);
 
 	valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store),
 					       &iter);
+	n_children = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store),
+						     NULL);
+
+	array = g_ptr_array_sized_new (n_children + 1);
 
 	while (valid)
 	{
@@ -229,35 +211,31 @@ get_history_list (GsearchHistoryEntry *entry)
 				    0, &str,
 				    -1);
 
-		list = g_slist_prepend (list, str);
+		g_ptr_array_add (array, str);
 
 		valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store),
 						  &iter);
 	}
 
-	return g_slist_reverse (list);
+	g_ptr_array_add (array, NULL);
+
+	return (gchar **)g_ptr_array_free (array, FALSE);
 }
 
 static void
 gsearch_history_entry_save_history (GsearchHistoryEntry *entry)
 {
-	GSList *gconf_items;
-	gchar *key;
+	gchar **items;
 
 	g_return_if_fail (GSEARCH_IS_HISTORY_ENTRY (entry));
 
-	gconf_items = get_history_list (entry);
-	key = get_history_key (entry);
+	items = get_history_items (entry);
 
-	gconf_client_set_list (entry->priv->gconf_client,
-			      key,
-			      GCONF_VALUE_STRING,
-			      gconf_items,
-			      NULL);
+	g_settings_set_strv (entry->priv->settings,
+			     entry->priv->history_id,
+			     (const gchar * const *)items);
 
-	g_slist_foreach (gconf_items, (GFunc) g_free, NULL);
-	g_slist_free (gconf_items);
-	g_free (key);
+	g_strfreev (items);
 }
 
 static gboolean
@@ -377,39 +355,35 @@ gsearch_history_entry_append_text (GsearchHistoryEntry *entry,
 static void
 gsearch_history_entry_load_history (GsearchHistoryEntry *entry)
 {
-	GSList *gconf_items, *l;
+	gchar **items;
 	GtkListStore *store;
 	GtkTreeIter iter;
-	gchar *key;
-	gint i;
+	gint i = 0;
 
 	g_return_if_fail (GSEARCH_IS_HISTORY_ENTRY (entry));
 
 	store = get_history_store (entry);
-	key = get_history_key (entry);
 
-	gconf_items = gconf_client_get_list (entry->priv->gconf_client,
-					     key,
-					     GCONF_VALUE_STRING,
-					     NULL);
+	items = g_settings_get_strv (entry->priv->settings,
+	                             entry->priv->history_id);
 
 	gtk_list_store_clear (store);
 
-	for (l = gconf_items, i = 0;
-	     l != NULL && i < entry->priv->history_length;
-	     l = l->next, i++)
+	/* Now the default value is an empty string so we have to take care
+	   of it to not add the empty string in the search list */
+	while (items[i] != NULL && *items[i] != '\0' &&
+	       i < entry->priv->history_length)
 	{
 		gtk_list_store_append (store, &iter);
 		gtk_list_store_set (store, 
 				    &iter,
 				    0,
-				    l->data,
+				    items[i],
 				    -1);
+		i++;
 	}
 
-	g_slist_foreach (gconf_items, (GFunc) g_free, NULL);
-	g_slist_free (gconf_items);
-	g_free (key);
+	g_strfreev (items);
 }
 
 void
@@ -438,12 +412,12 @@ gsearch_history_entry_init (GsearchHistoryEntry *entry)
 
 	priv->completion = NULL;
 	
-	priv->gconf_client = gconf_client_get_default ();
+	priv->settings = g_settings_new ("org.gnome.gnome-search-tool.state.file-entry");
 }
 
 void
 gsearch_history_entry_set_history_length (GsearchHistoryEntry *entry,
-					guint              history_length)
+                                          guint history_length)
 {
 	g_return_if_fail (GSEARCH_IS_HISTORY_ENTRY (entry));
 	g_return_if_fail (history_length > 0);
