diff --git a/Makefile.am b/Makefile.am
index 278ef57..a264f94 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,18 +1,7 @@
-schema_in_files =  nautilus-open-terminal.schemas.in
-schemadir   = $(GCONF_SCHEMA_FILE_DIR)
-schema_DATA = $(schema_in_files:.schemas.in=.schemas)
-
-@INTLTOOL_SCHEMAS_RULE@
-
-# don't do this if we are building in eg. rpm
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
-	if test -z "$(DESTDIR)" ; then \
-		for p in $(schema_DATA) ; do \
-			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $$p; \
-		done \
-	fi
-endif
+gsettings_in_file =  apps.nautilus-open-terminal.gschema.xml.in
+gsettings_SCHEMAS = $(gsettings_in_file:.xml.in=.xml)
+@INTLTOOL_XML_NOMERGE_RULE@
+@GSETTINGS_RULES@
 
 SUBDIRS = \
 	po \
@@ -22,10 +11,10 @@ EXTRA_DIST = \
 	intltool-extract.in \
 	intltool-update.in \
 	intltool-merge.in \
-	$(schema_in_files)
+	$(gsetting_in_files)
 
 CLEANFILES = \
-	$(schema_DATA)
+	$(gsettings_SCHEMAS)
 
 DISTCLEANFILES = \
 	intltool-extract \
diff --git a/apps.nautilus-open-terminal.gschema.xml.in b/apps.nautilus-open-terminal.gschema.xml.in
new file mode 100644
index 0000000..54dfcfc
--- /dev/null
+++ b/apps.nautilus-open-terminal.gschema.xml.in
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<schemalist>
+  <schema id="apps.nautilus-open-terminal" path="/apps/nautilus-open-terminal/">
+    <key name="desktop-opens-home-dir" type="b">
+      <default>false</default>
+      <_summary>Whether opening a terminal on the desktop opens a terminal in the home directory</_summary>
+      <_description>If set to true, then opening a terminal on the desktop will open a terminal in the home directory. Otherwise, it will be opened in the desktop directory. Note that this key is irrelevant if the desktop directory is identical to the home directory.</_description>
+    </key>
+    <key name="display-mc-item" type="b">
+      <default>true</default>
+      <_summary>Whether a Midnight Commander menu item should be displayed</_summary>
+      <_description>If set to true, and if the terminal file manager "Midnight Commander" is installed, then an "Open in Midnight Commander" menu item will be displayed in the context menu.</_description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/configure.in b/configure.in
index 420f990..bd792d9 100644
--- a/configure.in
+++ b/configure.in
@@ -31,14 +31,13 @@ fi
 NAUTILUS_REQUIRED=2.91.90
 LIBGNOME_DESKTOP_REQUIRED=2.91.90
 GLIB_REQUIRED=2.16.0
+GIO_REQUIRED=2.25
 
 PKG_CHECK_MODULES(NAUTILUS, [
 	libnautilus-extension >= $NAUTILUS_REQUIRED
 	glib-2.0 >= $GLIB_REQUIRED
-	gio-2.0,
-	gconf-2.0
+	gio-2.0 >= $GIO_REQUIRED
 ])
-PKG_CHECK_MODULES(GCONF, gconf-2.0)
 PKG_CHECK_MODULES(GNOMEDESKTOP, gnome-desktop-3.0 >= $LIBGNOME_DESKTOP_REQUIRED)
 
 
@@ -47,9 +46,6 @@ PKG_CHECK_MODULES(GNOMEDESKTOP, gnome-desktop-3.0 >= $LIBGNOME_DESKTOP_REQUIRED)
 AC_SUBST(NAUTILUS_CFLAGS)
 AC_SUBST(NAUTILUS_LIBS)
 
-AC_SUBST(GCONF_CFLAGS)
-AC_SUBST(GCONF_LIBS)
-
 AC_SUBST(GNOMEDESKTOP_CFLAGS)
 AC_SUBST(GNOMEDESKTOP_LIBS)
 
@@ -61,17 +57,9 @@ GNOME_MAINTAINER_MODE_DEFINES
 NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension`
 AC_SUBST(NAUTILUS_EXTENSION_DIR)
 
+# GSettings
 
-# GConf
-
-AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
-
-if test x"$GCONFTOOL" = xno; then
-	AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
-fi
-
-AM_GCONF_SOURCE_2
-
+GLIB_GSETTINGS
 
 # i18n
 
diff --git a/nautilus-open-terminal.schemas.in b/nautilus-open-terminal.schemas.in
deleted file mode 100644
index 4560417..0000000
--- a/nautilus-open-terminal.schemas.in
+++ /dev/null
@@ -1,33 +0,0 @@
-<gconfschemafile>
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/nautilus-open-terminal/desktop_opens_home_dir</key>
-      <applyto>/apps/nautilus-open-terminal/desktop_opens_home_dir</applyto>
-      <owner>nautilus-open-terminal</owner>
-      <type>bool</type>
-      <default>false</default>
-      <locale name="C">
-         <short>Whether opening a terminal on the desktop opens a terminal in the home directory</short>
-         <long>
-          If set to true, then opening a terminal on the desktop will open a terminal in
-	  the home directory. Otherwise, it will be opened in the desktop directory.
-	  Note that this key is irrelevant if the desktop directory is identical to the home directory.
-         </long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/nautilus-open-terminal/display_mc_item</key>
-      <applyto>/apps/nautilus-open-terminal/display_mc_item</applyto>
-      <owner>nautilus-open-terminal</owner>
-      <type>bool</type>
-      <default>true</default>
-      <locale name="C">
-         <short>Whether a Midnight Commander menu item should be displayed</short>
-         <long>
-          If set to true, and if the terminal file manager "Midnight Commander" is installed,
-	  then an "Open in Midnight Commander" menu item will be displayed in the context menu.
-         </long>
-      </locale>
-    </schema>
-  </schemalist>  
-</gconfschemafile>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 8261a80..ee4d07c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,4 +1,4 @@
 # List of source files containing translatable strings.
 # Please keep this list in alphabetic order.
 src/nautilus-open-terminal.c
-nautilus-open-terminal.schemas.in
+apps.nautilus-open-terminal.gschema.xml.in
diff --git a/src/nautilus-open-terminal.c b/src/nautilus-open-terminal.c
index 5043aed..9407b13 100644
--- a/src/nautilus-open-terminal.c
+++ b/src/nautilus-open-terminal.c
@@ -34,8 +34,6 @@
 #include <glib/gi18n-lib.h>
 #include <gio/gio.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf.h>
-#include <gconf/gconf-client.h>
 
 #include <errno.h>
 #include <fcntl.h>
@@ -88,30 +86,29 @@ get_terminal_file_info (const char *uri)
 	return ret;
 }
 
-static GConfClient *gconf_client = NULL;
+static GSettings *nautilus_open_terminal_preferences = NULL;
+static GSettings *gnome_lockdown_preferences = NULL;
+static GSettings *nautilus_preferences = NULL;
 
 static inline gboolean
 desktop_opens_home_dir (void)
 {
-	return gconf_client_get_bool (gconf_client,
-				      "/apps/nautilus-open-terminal/desktop_opens_home_dir",
-				      NULL);
+	return g_settings_get_boolean (nautilus_open_terminal_preferences,
+				      "desktop-opens-home-dir");
 }
 
 static inline gboolean
 display_mc_item (void)
 {
-	return gconf_client_get_bool (gconf_client,
-				      "/apps/nautilus-open-terminal/display_mc_item",
-				      NULL);
+	return g_settings_get_boolean (nautilus_open_terminal_preferences,
+				      "display-mc-item");
 }
 
 static inline gboolean
 desktop_is_home_dir ()
 {
-	return gconf_client_get_bool (gconf_client,
-				      "/apps/nautilus/preferences/desktop_is_home_dir",
-				      NULL);
+	return g_settings_get_boolean (nautilus_preferences,
+				      "desktop-is-home-dir");
 }
 
 /* a very simple URI parsing routine from Launchpad #333462, until GLib supports URI parsing (GNOME #489862) */
@@ -462,9 +459,8 @@ open_terminal_menu_item_new (NautilusFileInfo *file_info,
 static gboolean
 terminal_locked_down (void)
 {
-	return gconf_client_get_bool (gconf_client,
-                                      "/desktop/gnome/lockdown/disable_command_line",
-                                      NULL);
+	return g_settings_get_boolean (gnome_lockdown_preferences,
+                                      "disable-command-line");
 }
 
 /* used to determine for remote URIs whether GVFS is capable of mapping them to ~/.gvfs */
@@ -614,16 +610,12 @@ nautilus_open_terminal_instance_init (NautilusOpenTerminal *cvs)
 static void
 nautilus_open_terminal_class_init (NautilusOpenTerminalClass *class)
 {
-	g_assert (gconf_client == NULL);
-	gconf_client = gconf_client_get_default ();
-}
-
-static void
-nautilus_open_terminal_class_finalize (NautilusOpenTerminalClass *class)
-{
-	g_assert (gconf_client != NULL);
-	g_object_unref (gconf_client);
-	gconf_client = NULL;
+	g_assert (nautilus_open_terminal_preferences == NULL &&
+	          nautilus_preferences == NULL &&
+		  gnome_lockdown_preferences == NULL);
+	nautilus_open_terminal_preferences = g_settings_new("apps.nautilus-open-terminal");
+	nautilus_preferences = g_settings_new("org.gnome.nautilus.preferences");
+	gnome_lockdown_preferences = g_settings_new("org.gnome.desktop.lockdown");
 }
 
 GType
@@ -640,7 +632,7 @@ nautilus_open_terminal_register_type (GTypeModule *module)
 		(GBaseInitFunc) NULL,
 		(GBaseFinalizeFunc) NULL,
 		(GClassInitFunc) nautilus_open_terminal_class_init,
-		(GClassFinalizeFunc) nautilus_open_terminal_class_finalize,
+		NULL,
 		NULL,
 		sizeof (NautilusOpenTerminal),
 		0,
diff --git a/src/open-terminal.c b/src/open-terminal.c
index 47b7577..2c555a2 100644
--- a/src/open-terminal.c
+++ b/src/open-terminal.c
@@ -27,7 +27,6 @@
 
 #include "nautilus-open-terminal.h"
 
-#include <gconf/gconf-client.h>
 #include <libintl.h>
 
 static GType type_list[1];
@@ -42,11 +41,6 @@ nautilus_module_initialize (GTypeModule *module)
 
 	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-
-        gconf_client_add_dir(gconf_client_get_default(), 
-                             "/desktop/gnome/lockdown",
-                             0,
-                             NULL);
 }
 
 void
