diff --git a/Makefile.am b/Makefile.am
index 1f47e59..5137f9c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,6 +9,9 @@ SUBDIRS = \
 	extras \
 	po
 
+gsettings_SCHEMAS = org.gnome.banshee.gschema.xml
+@GSETTINGS_RULES@
+
 # Important targets
 
 clean-local:
diff --git a/build/build.environment.mk b/build/build.environment.mk
index 2092e13..35fb3c7 100644
--- a/build/build.environment.mk
+++ b/build/build.environment.mk
@@ -169,7 +169,7 @@ REF_EXTENSION_WIKIPEDIA= $(LINK_BANSHEE_WEBBROWSER_DEPS)
 
 # Backends
 REF_BACKEND_GIO = $(LINK_BANSHEE_SERVICES_DEPS) $(LINK_GIO) $(LINK_GUDEV)
-REF_BACKEND_GNOME = $(LINK_BANSHEE_SERVICES_DEPS) $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_GCONF)
+REF_BACKEND_GNOME = $(LINK_BANSHEE_SERVICES_DEPS) $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_BACKEND_GSTREAMER = $(LINK_BANSHEE_SERVICES_DEPS) $(LINK_GLIB)
 REF_BACKEND_UNIX = $(LINK_BANSHEE_CORE_DEPS) $(LINK_MONO_POSIX)
 REF_BACKEND_OSX = $(LINK_BANSHEE_SERVICES_DEPS) $(LINK_BANSHEE_THICKCLIENT_DEPS) $(MONOMAC_LIBS)
diff --git a/build/m4/banshee/gconf.m4 b/build/m4/banshee/gconf.m4
deleted file mode 100644
index 16239db..0000000
--- a/build/m4/banshee/gconf.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-AC_DEFUN([BANSHEE_CHECK_GCONF],
-[
-	AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
-
-	# libgconf check needed because its -devel pkg should contain AM_GCONF_SOURCE_2 macro, see bgo#604416
-	PKG_CHECK_MODULES(LIBGCONF, gconf-2.0)
-
-	# needed so autoconf doesn't complain before checking the existence of libgconf2-devel above
-	m4_pattern_allow([AM_GCONF_SOURCE_2])
-
-	AM_GCONF_SOURCE_2
-])
diff --git a/configure.ac b/configure.ac
index 2751b13..4b88a2c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -137,10 +137,9 @@ dnl GNOME (optional)
 AC_ARG_ENABLE(gnome, AC_HELP_STRING([--disable-gnome], [Disable GNOME support]), , enable_gnome="yes")
 if test "x$enable_gnome" = "xyes"; then
 	BANSHEE_CHECK_GNOME_SHARP
-	BANSHEE_CHECK_GCONF
 	AM_CONDITIONAL(ENABLE_GNOME, true)
+	GLIB_GSETTINGS
 else
-	AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, false)
 	AM_CONDITIONAL(ENABLE_GNOME, false)
 fi
 

diff --git a/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml b/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml
index 47ad5c6..7bbed4c 100644
--- a/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml
+++ b/src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml
@@ -19,7 +19,7 @@
   </Extension>
 
   <Extension path="/Banshee/Platform/ConfigurationClient">
-    <ConfigurationClient class="Banshee.GnomeBackend.GConfConfigurationClient"/>
+    <ConfigurationClient class="Banshee.GnomeBackend.GSettingsConfigurationClient"/>
   </Extension>
 
   <Extension path="/Banshee/Platform/DiscDuplicator">
diff --git a/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj b/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj
index a25fd52..e0c6948 100644
--- a/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj
+++ b/src/Backends/Banshee.Gnome/Banshee.Gnome.csproj
@@ -70,32 +68,26 @@
   </ItemGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="gtk-sharp">
       <SpecificVersion>False</SpecificVersion>
     </Reference>
-    <Reference Include="gconf-sharp">
-      <SpecificVersion>False</SpecificVersion>
-    </Reference>
     <Reference Include="Mono.Posix">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..bin\Mono.Posix.dll</HintPath>
     </Reference>
     <Reference Include="dbus-sharp">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\bin\bin\dbus-sharp.dll</HintPath>
     </Reference>
     <Reference Include="dbus-sharp-glib">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\bin\bin\dbus-sharp-glib.dll</HintPath>
     </Reference>
+    <Reference Include="gio-sharp">
+      <SpecificVersion>False</SpecificVersion>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Banshee.GnomeBackend\GConfConfigurationClient.cs" />
     <Compile Include="Banshee.GnomeBackend\GnomeService.cs" />
     <Compile Include="Banshee.GnomeBackend\Brasero.cs" />
     <Compile Include="Banshee.GnomeBackend\DiscDuplicator.cs" />
     <Compile Include="Banshee.GnomeBackend\GnomeScreensaverManager.cs" />
-    <Compile Include="Banshee.GnomeBackend\GConfProxy.cs" />
+    <Compile Include="Banshee.GnomeBackend\GSettingsConfigurationClient.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Banshee.Gnome.addin.xml">
diff --git a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GConfConfigurationClient.cs b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GConfConfigurationClient.cs
deleted file mode 100644
index 72af89f..0000000
--- a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GConfConfigurationClient.cs
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-// GConfConfigurationClient.cs
-//
-// Author:
-//   Aaron Bockover <abockover@novell.com>
-//
-// Copyright (C) 2006-2008 Novell, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using GConf;
-
-using Hyena;
-using Banshee.Base;
-using Banshee.Configuration;
-
-namespace Banshee.GnomeBackend
-{
-    public class GConfConfigurationClient : IConfigurationClient
-    {
-        private GConf.Client client;
-        private Dictionary<string, string> key_table = new Dictionary<string, string> ();
-
-        private static bool disable_gconf_checked = false;
-        private static bool disable_gconf = false;
-
-        private static bool DisableGConf {
-            get {
-                if (!disable_gconf_checked) {
-                    disable_gconf = ApplicationContext.EnvironmentIsSet ("BANSHEE_DISABLE_GCONF");
-                    disable_gconf_checked = true;
-                }
-
-                return disable_gconf;
-            }
-        }
-
-        private static string base_key;
-        private static string BaseKey {
-            get {
-                if (base_key == null) {
-                    base_key = ApplicationContext.CommandLine["gconf-base-key"];
-                    if (!base_key.StartsWith ("/apps/") || !base_key.EndsWith ("/")) {
-                        Log.Debug ("Using default gconf-base-key");
-                        base_key = "/apps/banshee-1/";
-                    }
-                }
-                return base_key;
-            }
-        }
-
-        public GConfConfigurationClient ()
-        {
-            if (Hyena.PlatformDetection.IsMeeGo) {
-                throw new InvalidOperationException ("GConf is not supported on MeeGo");
-            }
-        }
-
-        private string CreateKey (string @namespace, string part)
-        {
-            string hash_key = String.Concat (@namespace, part);
-            lock (((ICollection)key_table).SyncRoot) {
-                if (!key_table.ContainsKey (hash_key)) {
-                    part = part.Replace ('/', '_');
-                    if (@namespace == null) {
-                        key_table.Add (hash_key, String.Concat (BaseKey, StringUtil.CamelCaseToUnderCase (part)));
-                    } else if (@namespace.StartsWith ("/")) {
-                        key_table.Add (hash_key, String.Concat (@namespace,
-                            @namespace.EndsWith ("/") ? String.Empty : "/", StringUtil.CamelCaseToUnderCase (part)));
-                    } else {
-                        @namespace = @namespace.Replace ('/', '_');
-                        key_table.Add (hash_key, String.Concat (BaseKey,
-                            StringUtil.CamelCaseToUnderCase (String.Concat (@namespace.Replace ('.', '/'), "/", part))
-                        ));
-                    }
-
-                    key_table[hash_key] = key_table[hash_key].Replace (' ', '_');
-                }
-
-                return key_table[hash_key];
-            }
-        }
-
-        public bool TryGet<T> (string @namespace, string key, out T result)
-        {
-            if (DisableGConf || key == null) {
-                result = default (T);
-                return false;
-            }
-
-            if (client == null) {
-                client = new GConf.Client ();
-            }
-
-            try {
-                result = (T)client.Get (CreateKey (@namespace, key));
-                return true;
-            } catch (GConf.NoSuchKeyException) {
-            } catch (Exception e) {
-                Log.Exception (String.Format ("Could not read GConf key {0}.{1}", @namespace, key), e);
-            }
-
-            result = default (T);
-            return false;
-        }
-
-        public void Set<T> (string @namespace, string key, T value)
-        {
-            if (DisableGConf || key == null) {
-                return;
-            }
-
-            if (client == null) {
-                client = new GConf.Client ();
-            }
-
-            // We wrap the Set call in a try/catch to work around bgo#659835,
-            // which causes Banshee to go haywire (see bgo#659841)
-            try {
-                client.Set (CreateKey (@namespace, key), value);
-            } catch (Exception e) {
-                Log.Exception (String.Format ("Could not set GConf key {0}.{1}.", @namespace, key), e);
-            }
-        }
-    }
-}
diff --git a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs
index b6a18f0..ee17e86 100644
--- a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs
+++ b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs
@@ -35,8 +35,6 @@ namespace Banshee.GnomeBackend
 {
     public class GnomeService : IExtensionService, IDisposable
     {
-        private GConfProxy gconf_proxy;
-
         private Brasero brasero;
         internal Brasero Brasero {
             get { return brasero; }
@@ -49,14 +47,6 @@ namespace Banshee.GnomeBackend
         public void Initialize ()
         {
             try {
-                // FIXME: this needs to be deferred/delayed initialized
-                gconf_proxy = new GConfProxy ();
-            } catch (Exception e) {
-                Hyena.Log.Exception ("GConfProxy", e);
-                gconf_proxy = null;
-            }
-
-            try {
                 brasero = new Brasero ();
                 brasero.Initialize ();
             } catch {
@@ -75,11 +65,6 @@ namespace Banshee.GnomeBackend
                 brasero = null;
             }
 
-            if (gconf_proxy != null) {
-                gconf_proxy.Dispose ();
-                gconf_proxy = null;
-            }
-
             if (Browser.OpenHandler == (Banshee.Web.Browser.OpenUrlHandler) OpenUrl) {
                 Browser.OpenHandler = null;
             }
diff --git a/src/Backends/Banshee.Gnome/Makefile.am b/src/Backends/Banshee.Gnome/Makefile.am
index 4a1b0bc..80d1d25 100644
--- a/src/Backends/Banshee.Gnome/Makefile.am
+++ b/src/Backends/Banshee.Gnome/Makefile.am
@@ -6,10 +6,9 @@ INSTALL_DIR = $(BACKENDS_INSTALL_DIR)
 SOURCES =  \
 	Banshee.GnomeBackend/Brasero.cs \
 	Banshee.GnomeBackend/DiscDuplicator.cs \
-	Banshee.GnomeBackend/GConfConfigurationClient.cs \
-	Banshee.GnomeBackend/GConfProxy.cs \
 	Banshee.GnomeBackend/GnomeScreensaverManager.cs \
-	Banshee.GnomeBackend/GnomeService.cs
+	Banshee.GnomeBackend/GnomeService.cs \
+	Banshee.GnomeBackend/GSettingsConfigurationClient.cs
 
 RESOURCES =  \
 	Banshee.Gnome.addin.xml \
diff --git a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GSettingsConfigurationClient.cs b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GSettingsConfigurationClient.cs
new file mode 100644
index 0000000..1de9bee
--- /dev/null
+++ b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GSettingsConfigurationClient.cs
@@ -0,0 +1,68 @@
+//
+// GSettingsConfigurationClient.cs
+//
+// Author:
+//   Andres G. Aragoneses <knocte@gmail.com>
+//
+// Copyright 2012 Andres G. Aragoneses
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using Banshee.Configuration;
+
+namespace Banshee.GnomeBackend
+{
+    public class GSettingsConfigurationClient : IConfigurationClient
+    {
+        private static string base_schema = "org.gnome.banshee.";
+
+        public bool TryGet<T> (string @namespace, string key, out T result)
+        {
+            result = (T)Get (typeof (T), @namespace,
+
+                             // gsettings doesn't allow underscores in the keys
+                             key.Replace ("_", "-"));
+            return true;
+        }
+
+        private object Get (Type type, string @namespace, string key)
+        {
+            var settings = new GLib.Settings (base_schema + @namespace);
+            if (type == typeof (bool)) {
+                return settings.GetBoolean (key);
+            }
+            if (type == typeof (string)) {
+                return settings.GetString (key);
+            }
+            if (type == typeof (int)) {
+                return settings.GetInt (key);
+            }
+            throw new NotImplementedException (String.Format ("Type {0} not supported in {1}",
+                                                              type.FullName, 
+                                                              this.GetType ().Name));
+        }
+
+        public void Set<T> (string @namespace, string key, T value)
+        {
+            //throw new NotImplementedException ("SET not yet! for " + @namespace + "=>" + key);
+        }
+    }
+}
+
