[gnome-packagekit] Port to GSettings



commit 0087ee581a63f0a427d1aaf875b66e3d3e73cf9b
Author: Richard Hughes <richard hughsie com>
Date:   Sat Jun 5 16:06:43 2010 +0100

    Port to GSettings

 Makefile.am                               |    2 +-
 configure.ac                              |   11 +-
 contrib/gnome-packagekit.catalog          |    2 +-
 contrib/gnome-packagekit.spec.in          |   38 +--
 data/.gitignore                           |    2 +-
 data/Makefile.am                          |   27 +-
 data/gnome-packagekit.schemas.in          |  630 -----------------------------
 data/org.gnome.packagekit.gschema.migrate |   50 +++
 data/org.gnome.packagekit.gschema.xml     |  254 ++++++++++++
 docs/DBusInterface.txt                    |    4 +-
 po/POTFILES.in                            |    2 +-
 src/Makefile.am                           |    2 -
 src/gpk-application.c                     |   85 ++---
 src/gpk-auto-refresh.c                    |   61 ++--
 src/gpk-check-update.c                    |   67 ++--
 src/gpk-common.h                          |   98 +++---
 src/gpk-dbus-task.c                       |   37 +-
 src/gpk-dbus.c                            |   15 +-
 src/gpk-dialog.c                          |   17 +-
 src/gpk-firmware.c                        |   41 +--
 src/gpk-hardware.c                        |   15 +-
 src/gpk-log.c                             |    9 +-
 src/gpk-prefs.c                           |   98 ++----
 src/gpk-repo.c                            |   27 +-
 src/gpk-self-test.c                       |    1 +
 src/gpk-service-pack.c                    |   11 +-
 src/gpk-task.c                            |   11 +-
 src/gpk-update-viewer.c                   |   13 +-
 src/gpk-watch.c                           |   80 ++--
 29 files changed, 620 insertions(+), 1090 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index cd48e52..d55da5f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,7 +28,7 @@ DISTCLEANFILES =					\
 	intltool-update					\
 	gnome-packagekit-*.tar.gz
 
-DISTCHECK_CONFIGURE_FLAGS = --disable-schemas-install --disable-scrollkeeper
+DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper
 
 distclean-local:
 	if test $(srdcir) = .; then :; else \
diff --git a/configure.ac b/configure.ac
index 5a603ca..7dedfcc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,6 +98,7 @@ AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE(GETTEXT_PACKAGE, "AC_PACKAGE_NAME", [foo])
 
 AM_GLIB_GNU_GETTEXT
+GLIB_GSETTINGS
 
 dnl ---------------------------------------------------------------------------
 dnl - Library dependencies
@@ -106,12 +107,12 @@ PACKAGEKIT_REQUIRED=0.5.5 # when changing, nuke some compatability entries in gp
 GLIB_REQUIRED=2.14.0
 GTK_REQUIRED=2.19.3
 DBUS_REQUIRED=1.1.2
-GCONF_REQUIRED=0.22
+GCONF_REQUIRED=2.31.1
 DBUS_GLIB_REQUIRED=0.73
 LIBNOTIFY_REQUIRED=0.4.3
 UNIQUE_REQUIRED=1.0.0
 GNOME_MENUS_REQUIRED=2.24.1
-GIO_REQUIRED=2.18.0
+GIO_REQUIRED=2.25.1
 UPOWER_REQUIRED=0.9.0
 CANBERRA_REQUIRED=0.10
 
@@ -130,8 +131,6 @@ PKG_CHECK_MODULES(DBUS, \
  gthread-2.0)
 PKG_CHECK_MODULES(GTK, \
  gtk+-2.0 >= $GTK_REQUIRED gdk-2.0 fontconfig)
-PKG_CHECK_MODULES(GCONF, \
- gconf-2.0 >= $GCONF_REQUIRED)
 PKG_CHECK_MODULES(LIBNOTIFY, \
  libnotify >= $LIBNOTIFY_REQUIRED)
 PKG_CHECK_MODULES(GNOME_MENUS, \
@@ -171,9 +170,6 @@ if test x$enable_small_form_factor = xyes; then
 	AC_DEFINE(PK_BUILD_SMALL_FORM_FACTOR,1,[Build small form factor code])
 fi
 
-AC_PATH_PROG(GCONFTOOL, gconftool-2)
-AM_GCONF_SOURCE_2
-
 dnl ---------------------------------------------------------------------------
 dnl - Make paths available for source files
 dnl ---------------------------------------------------------------------------
@@ -259,6 +255,5 @@ echo "
         compiler:                  ${CC}
         cflags:                    ${CFLAGS}
         cppflags:                  ${CPPFLAGS}
-        gconf-schema dir:          $GCONF_SCHEMA_FILE_DIR
 "
 
diff --git a/contrib/gnome-packagekit.catalog b/contrib/gnome-packagekit.catalog
index 1fc53e7..0054df9 100644
--- a/contrib/gnome-packagekit.catalog
+++ b/contrib/gnome-packagekit.catalog
@@ -10,7 +10,7 @@ InstallPackages(fedora-9)=PackageKit-devel;glib2-devel;gtk2-devel;libsexy-devel;
 InstallPackages(fedora-9.90)=PackageKit-devel;glib2-devel;gtk2-devel;libsexy-devel;libglade2-devel;libnotify-devel;PolicyKit-gnome-devel;unique-devel
 
 # Pardus
-InstallPackages(pardus)=GConf2-devel;PackageKit-devel;PolicyKit-gnome-devel;dbus-devel;dbus-glib-devel;gettext-devel;gnome-doc-utils;gtk+2-devel;libglade2-devel;libnotify-devel;libsexy-devel
+InstallPackages(pardus)=PackageKit-devel;PolicyKit-gnome-devel;dbus-devel;dbus-glib-devel;gettext-devel;gnome-doc-utils;gtk+2-devel;libglade2-devel;libnotify-devel;libsexy-devel
 
 # Forsight
 InstallPackages(forsight)=gnome-development;dbus-development
diff --git a/contrib/gnome-packagekit.spec.in b/contrib/gnome-packagekit.spec.in
index 755bf8e..1d4e633 100644
--- a/contrib/gnome-packagekit.spec.in
+++ b/contrib/gnome-packagekit.spec.in
@@ -20,8 +20,7 @@ Release:   0.#BUILD#%{?alphatag}%{?dist}
 License:   GPLv2+
 Group:     Applications/System
 URL:       http://www.packagekit.org
-Source0:   http://download.gnome.org/sources/gnome-packagekit/2.27/%{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Source0:   http://download.gnome.org/sources/gnome-packagekit/2.30/%{name}-%{version}.tar.gz
 
 Requires:  glib2 >= %{glib2_version}
 Requires:  gtk2 >= %{gtk2_version}
@@ -39,13 +38,13 @@ Requires:  iso-codes
 Requires:  libcanberra >= %{libcanberra_version}
 Requires:  upower >= %{upower_version}
 Requires(post):   scrollkeeper
-Requires(pre):    GConf2
-Requires(post):   GConf2
-Requires(preun):  GConf2
 Requires(postun): scrollkeeper
 Obsoletes: pirut < 1.3.31-2
 Provides:  pirut = 1.3.31-2
 
+# required because KPackageKit provides exactly the same interface
+Provides: PackageKit-session-service
+
 BuildRequires: glib2-devel >= %{glib2_version}
 BuildRequires: gtk2-devel >= %{gtk2_version}
 BuildRequires: libwnck-devel
@@ -89,14 +88,11 @@ Extra GNOME applications for using PackageKit that are not normally needed.
 %setup -q
 
 %build
-%configure --disable-scrollkeeper --disable-schemas-install
+%configure --disable-scrollkeeper
 make %{?_smp_mflags}
 
 %install
-rm -rf $RPM_BUILD_ROOT
-export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
 make install DESTDIR=$RPM_BUILD_ROOT
-unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
 
 # nuke the ChangeLog file, it's huge
 rm -f $RPM_BUILD_ROOT%{_datadir}/doc/gnome-packagekit-*/ChangeLog
@@ -117,39 +113,22 @@ done
 rm -rf $RPM_BUILD_ROOT
 
 %post
-export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-gconftool-2 --makefile-install-rule \
-        %{_sysconfdir}/gconf/schemas/gnome-packagekit.schemas >/dev/null || :
-scrollkeeper-update -q &> /dev/null || :
 touch --no-create %{_datadir}/icons/hicolor
 if [ -x /usr/bin/gtk-update-icon-cache ]; then
     gtk-update-icon-cache -q %{_datadir}/icons/hicolor &> /dev/null || :
 fi
 update-desktop-database %{_datadir}/applications &> /dev/null || :
 update-mime-database %{_datadir}/mime &> /dev/null || :
-
-%pre
-if [ "$1" -gt 1 ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-uninstall-rule \
-      %{_sysconfdir}/gconf/schemas/gnome-packagekit.schemas &> /dev/null || :
-fi
-
-%preun
-if [ "$1" -eq 0 ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-uninstall-rule \
-      %{_sysconfdir}/gconf/schemas/gnome-packagekit.schemas &> /dev/null || :
-fi
+glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 
 %postun
-scrollkeeper-update -q &> /dev/null || :
 touch --no-create %{_datadir}/icons/hicolor
 if [ -x /usr/bin/gtk-update-icon-cache ]; then
     gtk-update-icon-cache -q %{_datadir}/icons/hicolor &> /dev/null || :
 fi
 update-desktop-database %{_datadir}/applications &> /dev/null || :
 update-mime-database %{_datadir}/mime &> /dev/null || :
+glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 
 %files -f %{name}.lang
 %defattr(-,root,root,-)
@@ -180,7 +159,6 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %{_datadir}/gnome-packagekit/icons/hicolor/scalable/*/*.svg*
 %{_datadir}/icons/hicolor/*/*/*.png
 %{_datadir}/icons/hicolor/scalable/*/*.svg*
-%config(noreplace) %{_sysconfdir}/gconf/schemas/*.schemas
 %{_datadir}/man/man1/*.1.gz
 %{_datadir}/gnome/help/gnome-packagekit
 %{python_sitelib}/packagekit/*py*
@@ -194,6 +172,8 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %{_datadir}/applications/gpk-repo.desktop
 %{_datadir}/applications/gpk-update-viewer.desktop
 %{_datadir}/dbus-1/services/org.freedesktop.PackageKit.service
+%{_datadir}/glib-2.0/schemas/org.gnome.packagekit.gschema.xml
+%{_datadir}/GConf/gsettings/org.gnome.packagekit.gschema.migrate
 
 %files extra
 %defattr(-,root,root,-)
diff --git a/data/.gitignore b/data/.gitignore
index 69b384e..bd32dae 100644
--- a/data/.gitignore
+++ b/data/.gitignore
@@ -5,6 +5,6 @@ Makefile.in
 *.glade.bak
 *.gladep
 *.gladep.bak
-.svn
+*.valid
 org.freedesktop.PackageKit.service
 
diff --git a/data/Makefile.am b/data/Makefile.am
index 13bec12..df8814a 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -2,10 +2,8 @@ NULL =
 
 SUBDIRS = icons
 
- INTLTOOL_SCHEMAS_RULE@
-schemadir = $(sysconfdir)/gconf/schemas
-schema_in_files = gnome-packagekit.schemas.in
-schema_DATA = $(schema_in_files:.schemas.in=.schemas)
+migrationdir = $(datadir)/GConf/gsettings
+dist_migration_DATA = org.gnome.packagekit.gschema.migrate
 
 @INTLTOOL_DESKTOP_RULE@
 desktopdir = $(datadir)/applications
@@ -41,7 +39,6 @@ pkgdata_DATA =						\
 	gpk-client.ui					\
 	$(NULL)
 
-
 servicedir = $(datadir)/dbus-1/services
 service_in_files = org.freedesktop.PackageKit.service.in
 service_DATA = $(service_in_files:.service.in=.service)
@@ -49,26 +46,17 @@ service_DATA = $(service_in_files:.service.in=.service)
 $(service_DATA): $(service_in_files) Makefile
 	@sed -e "s|\ servicedir\@|$(bindir)|" $< > $@
 
+ GSETTINGS_RULES@
+gsettings_SCHEMAS = org.gnome.packagekit.gschema.xml
+
 EXTRA_DIST =						\
-	$(schema_in_files)				\
-	$(desktop_in_files)				\
+	$(gsettings_SCHEMAS)				\
 	$(autostart_in_files)				\
+	$(desktop_in_files)				\
 	$(pkgdata_DATA)					\
 	$(service_in_files)				\
 	$(NULL)
 
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
-	-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
-	$(GCONFTOOL) --makefile-install-rule $(schema_DATA)
-endif
-
-if GCONF_SCHEMAS_INSTALL
-uninstall-local:
-	-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
-	$(GCONFTOOL) --makefile-uninstall-rule $(schema_DATA)
-endif
-
 clean-local :
 	rm -f *~
 
@@ -82,7 +70,6 @@ DISTCLEANFILES =					\
 	gpk-log.desktop					\
 	gpk-update-icon.desktop				\
 	gpk-application.desktop				\
-	gnome-packagekit.schemas			\
 	org.freedesktop.PackageKit.service			\
 	$(NULL)
 
diff --git a/data/org.gnome.packagekit.gschema.migrate b/data/org.gnome.packagekit.gschema.migrate
new file mode 100644
index 0000000..5b831be
--- /dev/null
+++ b/data/org.gnome.packagekit.gschema.migrate
@@ -0,0 +1,50 @@
+[org.gnome.packagekit]
+enable-check-firmware = /apps/gnome-packagekit/enable_check_firmware
+banned-firmware = /apps/gnome-packagekit/update-icon/banned_firmware
+ignored-devices = /apps/gnome-packagekit/update-icon/ignored_devices
+ignored-messages = /apps/gnome-packagekit/update-icon/ignored_messages
+enable-check-hardware = /apps/gnome-packagekit/enable_check_hardware
+enable-autoremove = /apps/gnome-packagekit/enable_autoremove
+show-depends = /apps/gnome-packagekit/show_depends
+show-copy-confirm = /apps/gnome-packagekit/show_copy_confirm
+notify-update-failed = /apps/gnome-packagekit/update-icon/notify_update_failed
+notify-update-complete = /apps/gnome-packagekit/update-icon/notify_update_complete
+notify-update-complete-restart = /apps/gnome-packagekit/update-icon/notify_update_complete_restart
+notify-update-not-battery = /apps/gnome-packagekit/update-icon/notify_update_not_battery
+notify-update-started = /apps/gnome-packagekit/update-icon/notify_update_started
+notify-message = /apps/gnome-packagekit/update-icon/notify_message
+notify-errors = /apps/gnome-packagekit/update-icon/notify_errors
+notify-complete = /apps/gnome-packagekit/update-icon/notify_complete
+notify-available = /apps/gnome-packagekit/update-icon/notify_available
+notify-distro-upgrades = /apps/gnome-packagekit/update-icon/notify_distro_upgrades
+notify-critical = /apps/gnome-packagekit/update-icon/notify_critical
+connection-use-mobile = /apps/gnome-packagekit/update-icon/connection_use_mobile
+connection-use-wifi = /apps/gnome-packagekit/update-icon/connection_use_wifi
+watch-active-transactions = /apps/gnome-packagekit/update-icon/watch_active_transactions
+autocomplete = /apps/gnome-packagekit/autocomplete
+session-startup-timeout = /apps/gnome-packagekit/update-icon/session_startup_timeout
+force-get-updates-login = /apps/gnome-packagekit/update-icon/force_get_updates_login
+frequency-get-updates = /apps/gnome-packagekit/update-icon/frequency_get_updates
+frequency-get-upgrades = /apps/gnome-packagekit/update-icon/frequency_get_upgrades
+frequency-refresh-cache = /apps/gnome-packagekit/update-icon/frequency_refresh_cache
+auto-update = /apps/gnome-packagekit/update-icon/auto_update
+update-battery = /apps/gnome-packagekit/update-icon/update_battery
+filter-basename = /apps/gnome-packagekit/application/filter_basename
+filter-newest = /apps/gnome-packagekit/application/filter_newest
+filter-arch = /apps/gnome-packagekit/application/filter_arch
+category-groups = /apps/gnome-packagekit/application/category_groups
+show-all-packages = /apps/gnome-packagekit/application/show_all_packages
+search-mode = /apps/gnome-packagekit/application/search_mode
+repo-show-details = /apps/gnome-packagekit/repo/show_details
+notify-mobile-connection = /apps/gnome-packagekit/update-viewer/notify_mobile_connection
+only-newest = /apps/gnome-packagekit/update-viewer/only_newest
+scroll-active = /apps/gnome-packagekit/update-viewer/scroll_active
+enable-font-helper = /apps/gnome-packagekit/enable_font_helper
+ignored-dbus-requests = /apps/gnome-packagekit/ignored_dbus_requests
+enable-codec-helper = /apps/gnome-packagekit/enable_codec_helper
+enable-mime-type-helper = /apps/gnome-packagekit/enable_mime_type_helper
+dbus-default-interaction = /apps/gnome-packagekit/dbus_default_interaction
+dbus-enforced-interaction = /apps/gnome-packagekit/dbus_enforced_interaction
+install-root = /apps/gnome-packagekit/install_root
+media-repo-filenames = /apps/gnome-packagekit/media_repo_filenames
+
diff --git a/data/org.gnome.packagekit.gschema.xml b/data/org.gnome.packagekit.gschema.xml
new file mode 100644
index 0000000..dbb08fa
--- /dev/null
+++ b/data/org.gnome.packagekit.gschema.xml
@@ -0,0 +1,254 @@
+<schemalist>
+  <schema id="FIXME" path="/apps/">
+    <child name="gnome-packagekit" schema="gnome-packagekit"/>
+    <child name="gnome-settings-daemon" schema="gnome-settings-daemon"/>
+  </schema>
+  <schema id="org.gnome.packagekit" path="/apps/gnome-packagekit/">
+    <key name="enable-check-firmware" type="b">
+      <default>true</default>
+      <summary>Ask the user if additional firmware should be installed</summary>
+      <description>Ask the user if additional firmware should be installed.</description>
+    </key>
+    <key name="banned-firmware" type="s">
+      <default>'*/intel-ucode/*'</default>
+      <summary>Firmware files that should not be searched for</summary>
+      <description>Firmware files that should not be searched for, separated by commas. These can include '*' and '?' characters.</description>
+    </key>
+    <key name="ignored-devices" type="s">
+      <default>''</default>
+      <summary>Devices that should be ignored</summary>
+      <description>Devices that should be ignored, separated by commas. These can include '*' and '?' characters.</description>
+    </key>
+    <key name="ignored-messages" type="s">
+      <default>'backend-*,untrusted-package,other-updates-held-back,repo-metadata-download-failed'</default>
+      <summary>Messages that should be ignored</summary>
+      <description>Messages that should be ignored, separated by commas. These can include '*' and '?' characters.</description>
+    </key>
+    <key name="enable-check-hardware" type="b">
+      <default>false</default>
+      <summary>Ask the user if additional hardware drivers should be installed</summary>
+      <description>Ask the user if additional hardware drivers should be installed.</description>
+    </key>
+    <key name="enable-autoremove" type="b">
+      <default>false</default>
+      <summary>Automatically remove unused dependencies</summary>
+      <description>When removing a package, also remove those dependencies that are not required by other packages.</description>
+    </key>
+    <key name="show-depends" type="b">
+      <default>true</default>
+      <summary>Ask the user if additional packages should be installed</summary>
+      <description>Ask the user if additional packages should be installed.</description>
+    </key>
+    <key name="show-copy-confirm" type="b">
+      <default>true</default>
+      <summary>Ask the user if files should be copied to a non-private directory</summary>
+      <description>Ask the user if files should be copied to a non-private directory when installing from a FUSE mount.</description>
+    </key>
+    <key name="notify-update-failed" type="b">
+      <default>true</default>
+      <summary>Notify the user when an update has failed</summary>
+      <description>Notify the user when an update has failed.</description>
+    </key>
+    <key name="notify-update-complete" type="b">
+      <default>false</default>
+      <summary>Notify the user for completed updates</summary>
+      <description>Notify the user for completed updates.</description>
+    </key>
+    <key name="notify-update-complete-restart" type="b">
+      <default>true</default>
+      <summary>Notify the user for completed updates where the user needs to restart</summary>
+      <description>Notify the user for completed updates where the user needs to restart.</description>
+    </key>
+    <key name="notify-update-not-battery" type="b">
+      <default>false</default>
+      <summary>Notify the user when the automatic update was not started on battery power</summary>
+      <description>Notify the user when the update was not automatically started while running on battery power.</description>
+    </key>
+    <key name="notify-update-started" type="b">
+      <default>true</default>
+      <summary>Notify the user when the update was started</summary>
+      <description>Notify the user when the update was started.</description>
+    </key>
+    <key name="notify-message" type="b">
+      <default>false</default>
+      <summary>Notify the user when there are messages</summary>
+      <description>Notify the user when there are messages from the package manager.</description>
+    </key>
+    <key name="notify-errors" type="b">
+      <default>true</default>
+      <summary>Notify the user when there are errors</summary>
+      <description>Notify the user when there are errors.</description>
+    </key>
+    <key name="notify-complete" type="b">
+      <default>true</default>
+      <summary>Notify the user when a task is complete</summary>
+      <description>Notify the user when a task is complete.</description>
+    </key>
+    <key name="notify-available" type="b">
+      <default>true</default>
+      <summary>Notify the user when updates are available</summary>
+      <description>Notify the user when updates are available.</description>
+    </key>
+    <key name="notify-distro-upgrades" type="b">
+      <default>true</default>
+      <summary>Notify the user when distribution upgrades are available</summary>
+      <description>Notify the user when distribution upgrades are available.</description>
+    </key>
+    <key name="notify-critical" type="b">
+      <default>true</default>
+      <summary>Notify the user when security updates are available</summary>
+      <description>Notify the user when security updates are available.</description>
+    </key>
+    <key name="connection-use-mobile" type="b">
+      <default>false</default>
+      <summary>Use mobile broadband connections</summary>
+      <description>Use mobile broadband connections such as GSM and CDMA to check for updates.</description>
+    </key>
+    <key name="connection-use-wifi" type="b">
+      <default>true</default>
+      <summary>Use WiFi connections</summary>
+      <description>Use WiFi (wireless LAN) connections to check for updates.</description>
+    </key>
+    <key name="watch-active-transactions" type="b">
+      <default>false</default>
+      <summary>Show transactions that have the original application running</summary>
+    </key>
+    <key name="autocomplete" type="b">
+      <default>false</default>
+      <summary>If search terms should be completed automatically</summary>
+      <description>If search terms should be completed automatically.</description>
+    </key>
+    <key name="session-startup-timeout" type="i">
+      <default>300</default>
+      <summary>The number of seconds at session startup to wait before checking for updates</summary>
+      <description>The number of seconds at session startup to wait before checking for updates.</description>
+    </key>
+    <key name="force-get-updates-login" type="b">
+      <default>false</default>
+      <summary>Get the update list when the session starts</summary>
+      <description>Get the update list when the session starts, even if not scheduled to. This ensures the user has up to date and valid data in the tray at startup.</description>
+    </key>
+    <key name="frequency-get-updates" type="i">
+      <default>86400</default>
+      <summary>How often to check for updates</summary>
+      <description>How often to check for updates. Value is in seconds.</description>
+    </key>
+    <key name="frequency-get-upgrades" type="i">
+      <default>604800</default>
+      <summary>How often to check for distribution upgrades</summary>
+      <description>How often to check for distribution upgrades. Value is in seconds.</description>
+    </key>
+    <key name="frequency-refresh-cache" type="i">
+      <default>86400</default>
+      <summary>How often to refresh the package cache</summary>
+      <description>How often to refresh the package cache. Value is in seconds.</description>
+    </key>
+    <key name="auto-update" type="s">
+      <default>'none'</default>
+      <summary>Automatically update these types of updates</summary>
+      <description>Automatically update these types of updates. Options are "all", "security", or "none".</description>
+    </key>
+    <key name="update-battery" type="b">
+      <default>false</default>
+      <summary>Install updates automatically when running on battery power</summary>
+      <description>Install updates automatically when running on battery power.</description>
+    </key>
+    <key name="filter-basename" type="b">
+      <default>false</default>
+      <summary>Filter using basename in gpk-application</summary>
+      <description>Filter package lists using basename in gpk-application.</description>
+    </key>
+    <key name="filter-newest" type="b">
+      <default>true</default>
+      <summary>Only show the newest packages in the file lists</summary>
+      <description>Only show the newest packages in the file lists.</description>
+    </key>
+    <key name="filter-arch" type="b">
+      <default>true</default>
+      <summary>Only show native packages in the file lists</summary>
+      <description>Only show native packages matching the machine architecture in the file lists.</description>
+    </key>
+    <key name="category-groups" type="b">
+      <default>false</default>
+      <summary>Show the category group menu</summary>
+      <description>Show the category group menu. This is more complete and custom to the distribution, but takes longer to populate.</description>
+    </key>
+    <key name="show-all-packages" type="b">
+      <default>false</default>
+      <summary>Show the 'All Packages' group menu</summary>
+      <description>Show the all packages menu item. This takes a long time to populate on most backends and is not generally required by end users.</description>
+    </key>
+    <key name="search-mode" type="s">
+      <default>'details'</default>
+      <summary>The search mode used by default</summary>
+      <description>The search mode used by default. Options are "name", "details", or "file".</description>
+    </key>
+    <key name="repo-show-details" type="b">
+      <default>false</default>
+      <summary>Show all repositories in the software source viewer</summary>
+      <description>Show all repositories in the software source viewer.</description>
+    </key>
+    <key name="notify-mobile-connection" type="b">
+      <default>true</default>
+      <summary>Notify the user before a large update is done on a mobile broadband connection</summary>
+      <description>Notify the user before a large update is done on a mobile broadband connection.</description>
+    </key>
+    <key name="only-newest" type="b">
+      <default>true</default>
+      <summary>Only show the newest updates in the list</summary>
+      <description>Only show the newest packages in the update list, and filter out older updates that are still available.</description>
+    </key>
+    <key name="scroll-active" type="b">
+      <default>true</default>
+      <summary>Scroll to packages as they are downloaded</summary>
+      <description>Scroll to packages in the update list as they are downloaded or installed.</description>
+    </key>
+    <key name="enable-font-helper" type="b">
+      <default>true</default>
+      <summary>Allow applications to invoke the font installer</summary>
+      <description>Allow applications to invoke the font installer.</description>
+    </key>
+    <key name="ignored-dbus-requests" type="s">
+      <default>'/usr/bin/gnome-terminal,/usr/bin/nm-applet,/usr/bin/xchat-gnome'</default>
+      <summary>Programs that should be ignored when they issue session D-Bus requests</summary>
+      <description>Programs that should be ignored when they issue session D-Bus requests, separated by commas.</description>
+    </key>
+    <key name="enable-codec-helper" type="b">
+      <default>true</default>
+      <summary>Allow applications to invoke the codec installer</summary>
+      <description>Allow applications to invoke the codec installer.</description>
+    </key>
+    <key name="enable-mime-type-helper" type="b">
+      <default>true</default>
+      <summary>Allow applications to invoke the mime type installer</summary>
+      <description>Allow applications to invoke the mime type installer.</description>
+    </key>
+    <key name="dbus-default-interaction" type="s">
+      <default>'show-confirm-search,show-confirm-deps,show-confirm-install,show-progress,show-finished,show-warning'</default>
+      <description>When displaying UI from a session DBus request, automatically use these options by default.</description>
+    </key>
+    <key name="dbus-enforced-interaction" type="s">
+      <default>'show-confirm-install'</default>
+      <description>When displaying UI from a session DBus request, force these options to be turned on.</description>
+    </key>
+    <key name="install-root" type="s">
+      <default>'/'</default>
+      <description>Allow the user to change the install root when processing packages, for instance when using LTSP.</description>
+    </key>
+    <key name="media-repo-filenames" type="s">
+      <default>'media.repo,.discinfo'</default>
+      <summary>The filenames on removable media that designate it important.</summary>
+      <description>When removable media is inserted, it is checked to see if it contains any important filenames in the root directory. If the filename matches, then an updates check is performed. This allows post-install disks to be used to update running systems.</description>
+    </key>
+  </schema>
+  <schema id="org.gnome.settings-daemon" path="/apps/gnome-settings-daemon/">
+    <child name="gtk-modules" schema="gnome-settings-daemon.gtk-modules"/>
+  </schema>
+  <schema id="gnome-settings-daemon.gtk-modules" path="/apps/gnome-settings-daemon/gtk-modules/">
+    <key name="pk-gtk-module" type="b">
+      <default>true</default>
+      <summary>GTK+ module for font installation</summary>
+      <description>This key determines if applications should be able to prompt for fonts.</description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/docs/DBusInterface.txt b/docs/DBusInterface.txt
index 6790e39..e4ff392 100644
--- a/docs/DBusInterface.txt
+++ b/docs/DBusInterface.txt
@@ -42,7 +42,7 @@ There are currently three interfaces on the service org.freedesktop.PackageKit.
    - warning		Show the user a warning
 
   These are obviously something that people may want to set per-user defaults,
-  and so the GConf key /apps/gnome-packagekit/dbus_default_interaction is
+  and so the GSettings key org.gnome.packagekit:dbus_default_interaction is
   provided.
   This sets up the default interactions used by clients unless they opt-in
   or opt-out of certain interactions.
@@ -50,7 +50,7 @@ There are currently three interfaces on the service org.freedesktop.PackageKit.
   Of course, we do not want software silently installing things behind our back,
   even if they are signed and trusted. One could imagine an application hiding
   all the interactions do install some software silently.
-  Another GConf key /apps/gnome-packagekit/dbus_enforced_interaction is used
+  Another GSettings key org.gnome.packagekit:dbus_enforced_interaction is used
   to set modes that are absolutely required or suppressed, even when the client
   or defaults specify otherwise.
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1a03f4a..5a58a0c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,7 +1,7 @@
 [encoding: UTF-8]
 # List of source files containing translatable strings.
 # Please keep this file sorted alphabetically.
-data/gnome-packagekit.schemas.in
+data/org.gnome.packagekit.gschema.xml
 data/gpk-application.desktop.in
 [type: gettext/glade]data/gpk-application.ui
 [type: gettext/glade]data/gpk-backend-status.ui
diff --git a/src/Makefile.am b/src/Makefile.am
index 3c4507d..acb2b3e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,7 +7,6 @@ INCLUDES =						\
 	$(GLIB_CFLAGS)					\
 	$(GIO_CFLAGS)					\
 	$(DBUS_CFLAGS)					\
-	$(GCONF_CFLAGS)					\
 	$(LIBNOTIFY_CFLAGS)				\
 	$(PACKAGEKIT_CFLAGS)				\
 	$(UNIQUE_CFLAGS)				\
@@ -96,7 +95,6 @@ shared_LIBS =						\
 	$(GLIB_LIBS)					\
 	$(GIO_LIBS)					\
 	$(DBUS_LIBS)					\
-	$(GCONF_LIBS)					\
 	$(GTK_LIBS)					\
 	$(GUDEV_LIBS)					\
 	$(LIBNOTIFY_LIBS)				\
diff --git a/src/gpk-application.c b/src/gpk-application.c
index 5ee263e..59f031d 100644
--- a/src/gpk-application.c
+++ b/src/gpk-application.c
@@ -26,7 +26,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdkx.h>
-#include <gconf/gconf-client.h>
 #include <math.h>
 #include <string.h>
 #include <packagekit-glib2/packagekit.h>
@@ -76,7 +75,7 @@ typedef enum {
 struct GpkApplicationPrivate
 {
 	GtkBuilder		*builder;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	GtkListStore		*packages_store;
 	GtkTreeStore		*groups_store;
 	GtkListStore		*details_store;
@@ -2133,7 +2132,7 @@ gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
 
 	} else if (application->priv->action == PK_ACTION_REMOVE) {
 
-		autoremove = gconf_client_get_bool (application->priv->gconf_client, GPK_CONF_ENABLE_AUTOREMOVE, NULL);
+		autoremove = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_ENABLE_AUTOREMOVE);
 
 		/* remove */
 		pk_task_remove_packages_async (application->priv->task, package_ids, TRUE, autoremove, application->priv->cancellable,
@@ -2610,8 +2609,8 @@ gpk_application_menu_search_by_name (GtkMenuItem *item, gpointer data)
 	application->priv->search_type = PK_SEARCH_NAME;
 	egg_debug ("set search type=%i", application->priv->search_type);
 
-	/* save default to GConf */
-	gconf_client_set_string (application->priv->gconf_client, GPK_CONF_APPLICATION_SEARCH_MODE, "name", NULL);
+	/* save default to GSettings */
+	g_settings_set_string (application->priv->settings, GPK_SETTINGS_SEARCH_MODE, "name");
 
 	/* set the new icon */
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
@@ -2633,8 +2632,8 @@ gpk_application_menu_search_by_description (GtkMenuItem *item, gpointer data)
 	application->priv->search_type = PK_SEARCH_DETAILS;
 	egg_debug ("set search type=%i", application->priv->search_type);
 
-	/* save default to GConf */
-	gconf_client_set_string (application->priv->gconf_client, GPK_CONF_APPLICATION_SEARCH_MODE, "details", NULL);
+	/* save default to GSettings */
+	g_settings_set_string (application->priv->settings, GPK_SETTINGS_SEARCH_MODE, "details");
 
 	/* set the new icon */
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
@@ -2656,8 +2655,8 @@ gpk_application_menu_search_by_file (GtkMenuItem *item, gpointer data)
 	application->priv->search_type = PK_SEARCH_FILE;
 	egg_debug ("set search type=%i", application->priv->search_type);
 
-	/* save default to GConf */
-	gconf_client_set_string (application->priv->gconf_client, GPK_CONF_APPLICATION_SEARCH_MODE, "file", NULL);
+	/* save default to GSettings */
+	g_settings_set_string (application->priv->settings, GPK_SETTINGS_SEARCH_MODE, "file");
 
 	/* set the new icon */
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
@@ -3123,10 +3122,10 @@ gpk_application_menu_filter_basename_cb (GtkWidget *widget, GpkApplication *appl
 
 	g_return_if_fail (GPK_IS_APPLICATION (application));
 
-	/* save users preference to gconf */
+	/* save users preference to GSettings */
 	enabled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-	gconf_client_set_bool (application->priv->gconf_client,
-			       GPK_CONF_APPLICATION_FILTER_BASENAME, enabled, NULL);
+	g_settings_set_boolean (application->priv->settings,
+			       GPK_SETTINGS_FILTER_BASENAME, enabled);
 
 	/* change the filter */
 	if (enabled)
@@ -3149,10 +3148,10 @@ gpk_application_menu_filter_newest_cb (GtkWidget *widget, GpkApplication *applic
 
 	g_return_if_fail (GPK_IS_APPLICATION (application));
 
-	/* save users preference to gconf */
+	/* save users preference to GSettings */
 	enabled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-	gconf_client_set_bool (application->priv->gconf_client,
-			       GPK_CONF_APPLICATION_FILTER_NEWEST, enabled, NULL);
+	g_settings_set_boolean (application->priv->settings,
+			       GPK_SETTINGS_FILTER_NEWEST, enabled);
 
 	/* change the filter */
 	if (enabled)
@@ -3175,10 +3174,10 @@ gpk_application_menu_filter_arch_cb (GtkWidget *widget, GpkApplication *applicat
 
 	g_return_if_fail (GPK_IS_APPLICATION (application));
 
-	/* save users preference to gconf */
+	/* save users preference to GSettings */
 	enabled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-	gconf_client_set_bool (application->priv->gconf_client,
-			       GPK_CONF_APPLICATION_FILTER_ARCH, enabled, NULL);
+	g_settings_set_boolean (application->priv->settings,
+			       GPK_SETTINGS_FILTER_ARCH, enabled);
 
 	/* change the filter */
 	if (enabled)
@@ -3479,31 +3478,26 @@ gpk_application_create_group_array_categories (GpkApplication *application)
 }
 
 /**
- * gpk_application_gconf_key_changed_cb:
+ * gpk_application_key_changed_cb:
  *
- * We might have to do things when the gconf keys change; do them here.
+ * We might have to do things when the keys change; do them here.
  **/
 static void
-gpk_application_gconf_key_changed_cb (GConfClient *client, guint cnxn_id, GConfEntry *gconf_entry, GpkApplication *application)
+gpk_application_key_changed_cb (GSettings *settings, const gchar *key, GpkApplication *application)
 {
 	GtkEntryCompletion *completion;
-	GConfValue *value;
 	gboolean ret;
 	GtkEntry *entry;
 
-	value = gconf_entry_get_value (gconf_entry);
-	if (value == NULL)
-		return;
-
-	if (g_strcmp0 (gconf_entry->key, GPK_CONF_APPLICATION_CATEGORY_GROUPS) == 0) {
-		ret = gconf_value_get_bool (value);
+	if (g_strcmp0 (key, GPK_SETTINGS_CATEGORY_GROUPS) == 0) {
+		ret = g_settings_get_boolean (settings, key);
 		gtk_tree_store_clear (application->priv->groups_store);
 		if (ret)
 			gpk_application_create_group_array_categories (application);
 		else
 			gpk_application_create_group_array_enum (application);
-	} else if (g_strcmp0 (gconf_entry->key, GPK_CONF_AUTOCOMPLETE) == 0) {
-		ret = gconf_value_get_bool (value);
+	} else if (g_strcmp0 (key, GPK_SETTINGS_AUTOCOMPLETE) == 0) {
+		ret = g_settings_get_boolean (settings, key);
 		entry = GTK_ENTRY (gtk_builder_get_object (application->priv->builder, "entry_text"));
 		if (ret) {
 			completion = gpk_package_entry_completion_new ();
@@ -3613,8 +3607,8 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 	/* BASENAME, use by default, or hide */
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_basename"));
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_BASENAME)) {
-		enabled = gconf_client_get_bool (application->priv->gconf_client,
-						 GPK_CONF_APPLICATION_FILTER_BASENAME, NULL);
+		enabled = g_settings_get_boolean (application->priv->settings,
+						 GPK_SETTINGS_FILTER_BASENAME);
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), enabled);
 		/* work round a gtk2+ bug: toggled should be fired when doing gtk_check_menu_item_set_active */
 		gpk_application_menu_filter_basename_cb (widget, application);
@@ -3626,8 +3620,8 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_newest"));
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST)) {
 		/* set from remembered state */
-		enabled = gconf_client_get_bool (application->priv->gconf_client,
-						 GPK_CONF_APPLICATION_FILTER_NEWEST, NULL);
+		enabled = g_settings_get_boolean (application->priv->settings,
+						  GPK_SETTINGS_FILTER_NEWEST);
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), enabled);
 		/* work round a gtk2+ bug: toggled should be fired when doing gtk_check_menu_item_set_active */
 		gpk_application_menu_filter_newest_cb (widget, application);
@@ -3639,8 +3633,8 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_arch"));
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_ARCH)) {
 		/* set from remembered state */
-		enabled = gconf_client_get_bool (application->priv->gconf_client,
-						 GPK_CONF_APPLICATION_FILTER_ARCH, NULL);
+		enabled = g_settings_get_boolean (application->priv->settings,
+						  GPK_SETTINGS_FILTER_ARCH);
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), enabled);
 		/* work round a gtk2+ bug: toggled should be fired when doing gtk_check_menu_item_set_active */
 		gpk_application_menu_filter_arch_cb (widget, application);
@@ -3649,7 +3643,7 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 	}
 
 	/* add an "all" entry if we can GetPackages */
-	ret = gconf_client_get_bool (application->priv->gconf_client, GPK_CONF_APPLICATION_SHOW_ALL_PACKAGES, NULL);
+	ret = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_SHOW_ALL_PACKAGES);
 	if (ret && pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_PACKAGES)) {
 		gtk_tree_store_append (application->priv->groups_store, &iter, NULL);
 		icon_name = gpk_role_enum_to_icon_name (PK_ROLE_ENUM_GET_PACKAGES);
@@ -3681,14 +3675,14 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 					      gpk_application_group_row_separator_func, NULL, NULL);
 
 	/* simple array or category tree? */
-	ret = gconf_client_get_bool (application->priv->gconf_client, GPK_CONF_APPLICATION_CATEGORY_GROUPS, NULL);
+	ret = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_CATEGORY_GROUPS);
 	if (ret && pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_CATEGORIES))
 		gpk_application_create_group_array_categories (application);
 	else
 		gpk_application_create_group_array_enum (application);
 
 	/* set the search mode */
-	mode = gconf_client_get_string (application->priv->gconf_client, GPK_CONF_APPLICATION_SEARCH_MODE, NULL);
+	mode = g_settings_get_string (application->priv->settings, GPK_SETTINGS_SEARCH_MODE);
 	if (mode == NULL) {
 		egg_warning ("search mode not set, using name");
 		mode = g_strdup ("name");
@@ -3819,7 +3813,7 @@ gpk_application_init (GpkApplication *application)
 	application->priv->status_last = PK_STATUS_ENUM_UNKNOWN;
 	application->priv->package_sack = pk_package_sack_new ();
 
-	application->priv->gconf_client = gconf_client_get_default ();
+	application->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 	application->priv->cancellable = g_cancellable_new ();
 	application->priv->repos = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
 
@@ -3831,11 +3825,7 @@ gpk_application_init (GpkApplication *application)
 	egg_markdown_set_max_lines (application->priv->markdown, 50);
 
 	/* watch gnome-packagekit keys */
-	gconf_client_add_dir (application->priv->gconf_client, GPK_CONF_DIR,
-			      GCONF_CLIENT_PRELOAD_NONE, NULL);
-	gconf_client_notify_add (application->priv->gconf_client, GPK_CONF_DIR,
-				 (GConfClientNotifyFunc) gpk_application_gconf_key_changed_cb,
-				 application, NULL, NULL);
+	g_signal_connect (application->priv->settings, "changed", G_CALLBACK (gpk_application_key_changed_cb), application);
 
 	/* create array stores */
 	application->priv->packages_store = gtk_list_store_new (PACKAGES_COLUMN_LAST,
@@ -4091,7 +4081,7 @@ gpk_application_init (GpkApplication *application)
 	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
 
 	/* autocompletion can be turned off as it's slow */
-	ret = gconf_client_get_bool (application->priv->gconf_client, GPK_CONF_AUTOCOMPLETE, NULL);
+	ret = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_AUTOCOMPLETE);
 	if (ret) {
 		/* create the completion object */
 		completion = gpk_package_entry_completion_new ();
@@ -4188,6 +4178,7 @@ gpk_application_init (GpkApplication *application)
 
 	/* hide details */
 	gpk_application_clear_details (application);
+
 out_build:
 	/* welcome */
 	gpk_application_add_welcome (application);
@@ -4214,7 +4205,7 @@ gpk_application_finalize (GObject *object)
 	g_object_unref (application->priv->control);
 	g_object_unref (PK_CLIENT(application->priv->task));
 	g_object_unref (application->priv->desktop);
-	g_object_unref (application->priv->gconf_client);
+	g_object_unref (application->priv->settings);
 	g_object_unref (application->priv->markdown);
 	g_object_unref (application->priv->builder);
 	g_object_unref (application->priv->helper_run);
diff --git a/src/gpk-auto-refresh.c b/src/gpk-auto-refresh.c
index 06d4218..6000aa6 100644
--- a/src/gpk-auto-refresh.c
+++ b/src/gpk-auto-refresh.c
@@ -33,7 +33,6 @@
 #include <unistd.h>
 #endif /* HAVE_UNISTD_H */
 #include <glib/gi18n.h>
-#include <gconf/gconf-client.h>
 #include <packagekit-glib2/packagekit.h>
 #include <libupower-glib/upower.h>
 
@@ -67,7 +66,7 @@ struct GpkAutoRefreshPrivate
 	guint			 force_get_updates_login_timeout_id;
 	guint			 timeout_id;
 	UpClient		*client;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	GpkSession		*session;
 	PkControl		*control;
 };
@@ -169,7 +168,7 @@ gpk_auto_refresh_get_time_refresh_cache_cb (GObject *object, GAsyncResult *res,
 	}
 
 	/* have we passed the timout? */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
 	if (seconds < thresh) {
 		egg_debug ("not before timeout, thresh=%u, now=%u", thresh, seconds);
 		return;
@@ -190,7 +189,7 @@ gpk_auto_refresh_maybe_refresh_cache (GpkAutoRefresh *arefresh)
 	g_return_if_fail (GPK_IS_AUTO_REFRESH (arefresh));
 
 	/* if we don't want to auto check for updates, don't do this either */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is set to never");
 		return;
@@ -209,7 +208,7 @@ gpk_auto_refresh_maybe_refresh_cache (GpkAutoRefresh *arefresh)
 	}
 
 	/* get this each time, as it may have changed behind out back */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_REFRESH_CACHE, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_REFRESH_CACHE);
 	if (thresh == 0) {
 		egg_debug ("not when policy is set to never");
 		return;
@@ -240,7 +239,7 @@ gpk_auto_refresh_get_time_get_updates_cb (GObject *object, GAsyncResult *res, Gp
 	}
 
 	/* have we passed the timout? */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
 	if (seconds < thresh) {
 		egg_debug ("not before timeout, thresh=%u, now=%u", thresh, seconds);
 		return;
@@ -262,15 +261,15 @@ gpk_auto_refresh_maybe_get_updates (GpkAutoRefresh *arefresh)
 
 	if (!arefresh->priv->force_get_updates_login) {
 		arefresh->priv->force_get_updates_login = TRUE;
-		if (gconf_client_get_bool (arefresh->priv->gconf_client, GPK_CONF_FORCE_GET_UPDATES_LOGIN, NULL)) {
-			egg_debug ("forcing get update due to GConf");
+		if (g_settings_get_boolean (arefresh->priv->settings, GPK_SETTINGS_FORCE_GET_UPDATES_LOGIN)) {
+			egg_debug ("forcing get update due to GSettings");
 			gpk_auto_refresh_signal_get_updates (arefresh);
 			return;
 		}
 	}
 
 	/* if we don't want to auto check for updates, don't do this either */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is set to never");
 		return;
@@ -301,7 +300,7 @@ gpk_auto_refresh_get_time_get_upgrades_cb (GObject *object, GAsyncResult *res, G
 	}
 
 	/* have we passed the timout? */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
 	if (seconds < thresh) {
 		egg_debug ("not before timeout, thresh=%u, now=%u", thresh, seconds);
 		return;
@@ -322,7 +321,7 @@ gpk_auto_refresh_maybe_get_upgrades (GpkAutoRefresh *arefresh)
 	g_return_if_fail (GPK_IS_AUTO_REFRESH (arefresh));
 
 	/* get this each time, as it may have changed behind out back */
-	thresh = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPGRADES, NULL);
+	thresh = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPGRADES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is set to never");
 		return;
@@ -377,7 +376,7 @@ gpk_auto_refresh_change_state (GpkAutoRefresh *arefresh)
 	/* only force a check if the user REALLY, REALLY wants to break
 	 * set policy and have an update at startup */
 	if (!arefresh->priv->force_get_updates_login) {
-		force = gconf_client_get_bool (arefresh->priv->gconf_client, GPK_CONF_FORCE_GET_UPDATES_LOGIN, NULL);
+		force = g_settings_get_boolean (arefresh->priv->settings, GPK_SETTINGS_FORCE_GET_UPDATES_LOGIN);
 		if (force) {
 			/* don't immediately send the signal, if we are called during object initialization
 			 * we need to wait until upper layers  finish hooking up to the signal first. */
@@ -390,7 +389,7 @@ gpk_auto_refresh_change_state (GpkAutoRefresh *arefresh)
 	/* wait a little time for things to settle down */
 	if (arefresh->priv->timeout_id != 0)
 		g_source_remove (arefresh->priv->timeout_id);
-	value = gconf_client_get_int (arefresh->priv->gconf_client, GPK_CONF_SESSION_STARTUP_TIMEOUT, NULL);
+	value = g_settings_get_int (arefresh->priv->settings, GPK_SETTINGS_SESSION_STARTUP_TIMEOUT);
 	egg_debug ("defering action for %i seconds", value);
 	arefresh->priv->timeout_id = g_timeout_add_seconds (value, (GSourceFunc) gpk_auto_refresh_change_state_cb, arefresh);
 
@@ -398,21 +397,19 @@ gpk_auto_refresh_change_state (GpkAutoRefresh *arefresh)
 }
 
 /**
- * gpk_auto_refresh_gconf_key_changed_cb:
- *
- * We might have to do things when the gconf keys change; do them here.
+ * gpk_auto_refresh_key_changed_cb:
  **/
 static void
-gpk_auto_refresh_gconf_key_changed_cb (GConfClient *client, guint cnxn_id, GConfEntry *entry, GpkAutoRefresh *arefresh)
+gpk_auto_refresh_key_changed_cb (GSettings *client, const gchar *key, GpkAutoRefresh *arefresh)
 {
 	g_return_if_fail (GPK_IS_AUTO_REFRESH (arefresh));
-	if (g_strcmp0 (entry->key, GPK_CONF_SESSION_STARTUP_TIMEOUT) == 0 ||
-	    g_strcmp0 (entry->key, GPK_CONF_FORCE_GET_UPDATES_LOGIN) == 0 ||
-	    g_strcmp0 (entry->key, GPK_CONF_FREQUENCY_GET_UPDATES) == 0 ||
-	    g_strcmp0 (entry->key, GPK_CONF_FREQUENCY_GET_UPGRADES) == 0 ||
-	    g_strcmp0 (entry->key, GPK_CONF_FREQUENCY_REFRESH_CACHE) == 0 ||
-	    g_strcmp0 (entry->key, GPK_CONF_AUTO_UPDATE) == 0 ||
-	    g_strcmp0 (entry->key, GPK_CONF_UPDATE_BATTERY) == 0)
+	if (g_strcmp0 (key, GPK_SETTINGS_SESSION_STARTUP_TIMEOUT) == 0 ||
+	    g_strcmp0 (key, GPK_SETTINGS_FORCE_GET_UPDATES_LOGIN) == 0 ||
+	    g_strcmp0 (key, GPK_SETTINGS_FREQUENCY_GET_UPDATES) == 0 ||
+	    g_strcmp0 (key, GPK_SETTINGS_FREQUENCY_GET_UPGRADES) == 0 ||
+	    g_strcmp0 (key, GPK_SETTINGS_FREQUENCY_REFRESH_CACHE) == 0 ||
+	    g_strcmp0 (key, GPK_SETTINGS_AUTO_UPDATE) == 0 ||
+	    g_strcmp0 (key, GPK_SETTINGS_UPDATE_BATTERY) == 0)
 		gpk_auto_refresh_change_state (arefresh);
 }
 
@@ -457,11 +454,11 @@ gpk_auto_refresh_convert_network_state (GpkAutoRefresh *arefresh, PkNetworkEnum
 
 	/* check policy */
 	if (state == PK_NETWORK_ENUM_MOBILE)
-		return gconf_client_get_bool (arefresh->priv->gconf_client, GPK_CONF_CONNECTION_USE_MOBILE, NULL);
+		return g_settings_get_boolean (arefresh->priv->settings, GPK_SETTINGS_CONNECTION_USE_MOBILE);
 
 	/* check policy */
 	if (state == PK_NETWORK_ENUM_WIFI)
-		return gconf_client_get_bool (arefresh->priv->gconf_client, GPK_CONF_CONNECTION_USE_WIFI, NULL);
+		return g_settings_get_boolean (arefresh->priv->settings, GPK_SETTINGS_CONNECTION_USE_WIFI);
 
 	/* not recognised */
 	egg_warning ("state unknown: %i", state);
@@ -573,14 +570,8 @@ gpk_auto_refresh_init (GpkAutoRefresh *arefresh)
 	arefresh->priv->force_get_updates_login_timeout_id = 0;
 
 	/* we need to know the updates frequency */
-	arefresh->priv->gconf_client = gconf_client_get_default ();
-
-	/* watch gnome-packagekit keys */
-	gconf_client_add_dir (arefresh->priv->gconf_client, GPK_CONF_DIR,
-			      GCONF_CLIENT_PRELOAD_NONE, NULL);
-	gconf_client_notify_add (arefresh->priv->gconf_client, GPK_CONF_DIR,
-				 (GConfClientNotifyFunc) gpk_auto_refresh_gconf_key_changed_cb,
-				 arefresh, NULL, NULL);
+	arefresh->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	g_signal_connect (arefresh->priv->settings, "changed", G_CALLBACK (gpk_auto_refresh_key_changed_cb), arefresh);
 
 	/* we need to query the last cache refresh time */
 	arefresh->priv->control = pk_control_new ();
@@ -632,7 +623,7 @@ gpk_auto_refresh_finalize (GObject *object)
 		g_source_remove (arefresh->priv->force_get_updates_login_timeout_id);
 
 	g_object_unref (arefresh->priv->control);
-	g_object_unref (arefresh->priv->gconf_client);
+	g_object_unref (arefresh->priv->settings);
 	g_object_unref (arefresh->priv->client);
 	g_object_unref (arefresh->priv->session);
 
diff --git a/src/gpk-check-update.c b/src/gpk-check-update.c
index edecfe1..b41e000 100644
--- a/src/gpk-check-update.c
+++ b/src/gpk-check-update.c
@@ -35,7 +35,6 @@
 #include <glib/gi18n.h>
 
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <libnotify/notify.h>
 #include <packagekit-glib2/packagekit.h>
 #include <canberra-gtk.h>
@@ -78,7 +77,7 @@ struct GpkCheckUpdatePrivate
 	PkControl		*control;
 	GpkAutoRefresh		*arefresh;
 	PkTask			*task;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	guint			 number_updates_critical_last_shown;
 	NotifyNotification	*notification_updates_available;
 	NotifyNotification	*notification_error;
@@ -384,9 +383,9 @@ gpk_check_update_finished_notify (GpkCheckUpdate *cupdate, PkResults *results)
 		g_string_set_size (message_text, message_text->len-1);
 
 	/* do we do the notification? */
-	ret = gconf_client_get_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_COMPLETE, NULL);
+	ret = g_settings_get_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE);
 	if (!ret) {
-		egg_debug ("ignoring due to GConf");
+		egg_debug ("ignoring due to GSettings");
 		goto out;
 	}
 
@@ -565,23 +564,23 @@ gpk_check_update_libnotify_cb (NotifyNotification *notification, gchar *action,
 	GpkCheckUpdate *cupdate = GPK_CHECK_UPDATE (data);
 
 	if (g_strcmp0 (action, "do-not-show-complete-restart") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_UPDATE_COMPLETE_RESTART);
-		gconf_client_set_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_COMPLETE_RESTART, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE_RESTART);
+		g_settings_set_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE_RESTART, FALSE);
 	} else if (g_strcmp0 (action, "do-not-show-complete") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_UPDATE_COMPLETE);
-		gconf_client_set_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_COMPLETE, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE);
+		g_settings_set_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE, FALSE);
 	} else if (g_strcmp0 (action, "do-not-show-update-started") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_UPDATE_STARTED);
-		gconf_client_set_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_STARTED, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_UPDATE_STARTED);
+		g_settings_set_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_UPDATE_STARTED, FALSE);
 	} else if (g_strcmp0 (action, "do-not-show-notify-critical") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_CRITICAL);
-		gconf_client_set_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_CRITICAL, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_CRITICAL);
+		g_settings_set_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_CRITICAL, FALSE);
 	} else if (g_strcmp0 (action, "do-not-show-update-not-battery") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_UPDATE_NOT_BATTERY);
-		gconf_client_set_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_NOT_BATTERY, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_UPDATE_NOT_BATTERY);
+		g_settings_set_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_UPDATE_NOT_BATTERY, FALSE);
 	} else if (g_strcmp0 (action, "distro-upgrade-do-not-show-available") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_DISTRO_UPGRADES);
-		gconf_client_set_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_DISTRO_UPGRADES, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_DISTRO_UPGRADES);
+		g_settings_set_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_DISTRO_UPGRADES, FALSE);
 	} else if (g_strcmp0 (action, "show-error-details") == 0) {
 		title = gpk_error_enum_to_localised_text (pk_error_get_code (cupdate->priv->error_code));
 		message = gpk_error_enum_to_localised_message (pk_error_get_code (cupdate->priv->error_code));
@@ -626,9 +625,9 @@ gpk_check_update_critical_updates_warning (GpkCheckUpdate *cupdate, GPtrArray *a
 	g_return_if_fail (GPK_IS_CHECK_UPDATE (cupdate));
 
 	/* do we do the notification? */
-	ret = gconf_client_get_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_CRITICAL, NULL);
+	ret = g_settings_get_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_CRITICAL);
 	if (!ret) {
-		egg_debug ("ignoring due to GConf");
+		egg_debug ("ignoring due to GSettings");
 		return;
 	}
 
@@ -727,7 +726,7 @@ gpk_check_update_check_on_battery (GpkCheckUpdate *cupdate)
 
 	g_return_val_if_fail (GPK_IS_CHECK_UPDATE (cupdate), FALSE);
 
-	ret = gconf_client_get_bool (cupdate->priv->gconf_client, GPK_CONF_UPDATE_BATTERY, NULL);
+	ret = g_settings_get_boolean (cupdate->priv->settings, GPK_SETTINGS_UPDATE_BATTERY);
 	if (ret) {
 		egg_debug ("okay to update due to policy");
 		return TRUE;
@@ -740,9 +739,9 @@ gpk_check_update_check_on_battery (GpkCheckUpdate *cupdate)
 	}
 
 	/* do we do the notification? */
-	ret = gconf_client_get_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_NOT_BATTERY, NULL);
+	ret = g_settings_get_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_UPDATE_NOT_BATTERY);
 	if (!ret) {
-		egg_debug ("ignoring due to GConf");
+		egg_debug ("ignoring due to GSettings");
 		return FALSE;
 	}
 
@@ -780,9 +779,9 @@ gpk_check_update_get_update_policy (GpkCheckUpdate *cupdate)
 
 	g_return_val_if_fail (GPK_IS_CHECK_UPDATE (cupdate), FALSE);
 
-	updates = gconf_client_get_string (cupdate->priv->gconf_client, GPK_CONF_AUTO_UPDATE, NULL);
+	updates = g_settings_get_string (cupdate->priv->settings, GPK_SETTINGS_AUTO_UPDATE);
 	if (updates == NULL) {
-		egg_warning ("'%s' gconf key is null!", GPK_CONF_AUTO_UPDATE);
+		egg_warning ("'%s' settings key is null!", GPK_SETTINGS_AUTO_UPDATE);
 		return GPK_UPDATE_ENUM_UNKNOWN;
 	}
 	update = gpk_update_enum_from_text (updates);
@@ -800,8 +799,8 @@ gpk_check_update_notify_doing_updates (GpkCheckUpdate *cupdate)
 	GError *error = NULL;
 	NotifyNotification *notification;
 
-	/* in GConf? */
-	ret = gconf_client_get_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_CRITICAL, NULL);
+	/* in GSettings? */
+	ret = g_settings_get_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_CRITICAL);
 	if (!ret)
 		goto out;
 
@@ -1095,7 +1094,7 @@ gpk_check_update_updates_changed_cb (PkControl *control, GpkCheckUpdate *cupdate
 	g_return_if_fail (GPK_IS_CHECK_UPDATE (cupdate));
 
 	/* if we don't want to auto check for updates, don't do this either */
-	thresh = gconf_client_get_int (cupdate->priv->gconf_client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	thresh = g_settings_get_int (cupdate->priv->settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is to never get updates");
 		return;
@@ -1269,9 +1268,9 @@ gpk_check_update_get_distro_upgrades_finished_cb (GObject *object, GAsyncResult
 	}
 
 	/* do we do the notification? */
-	ret = gconf_client_get_bool (cupdate->priv->gconf_client, GPK_CONF_NOTIFY_DISTRO_UPGRADES, NULL);
+	ret = g_settings_get_boolean (cupdate->priv->settings, GPK_SETTINGS_NOTIFY_DISTRO_UPGRADES);
 	if (!ret) {
-		egg_debug ("ignoring due to GConf");
+		egg_debug ("ignoring due to GSettings");
 		goto out;
 	}
 
@@ -1445,8 +1444,8 @@ gpk_check_update_mount_added_cb (GVolumeMonitor *volume_monitor, GMount *mount,
 	root = g_mount_get_root (mount);
 	root_path = g_file_get_path (root);
 
-	/* use settings from gconf */
-	media_repo_filenames = gconf_client_get_string (cupdate->priv->gconf_client, GPK_CONF_MEDIA_REPO_FILENAMES, NULL);
+	/* use settings */
+	media_repo_filenames = g_settings_get_string (cupdate->priv->settings, GPK_SETTINGS_MEDIA_REPO_FILENAMES);
 	if (media_repo_filenames == NULL) {
 		egg_warning ("failed to get media repo filenames");
 		goto out;
@@ -1490,11 +1489,7 @@ gpk_check_update_init (GpkCheckUpdate *cupdate)
 	cupdate->priv->status_icon = gtk_status_icon_new ();
 	cupdate->priv->cancellable = g_cancellable_new ();
 	cupdate->priv->error_code = NULL;
-
-	/* preload all the common GConf keys */
-	cupdate->priv->gconf_client = gconf_client_get_default ();
-	gconf_client_add_dir (cupdate->priv->gconf_client, GPK_CONF_DIR,
-			      GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+	cupdate->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 
 	cupdate->priv->arefresh = gpk_auto_refresh_new ();
 	g_signal_connect (cupdate->priv->arefresh, "refresh-cache",
@@ -1576,7 +1571,7 @@ gpk_check_update_finalize (GObject *object)
 	g_object_unref (cupdate->priv->status_icon);
 	g_object_unref (cupdate->priv->tlist);
 	g_object_unref (cupdate->priv->arefresh);
-	g_object_unref (cupdate->priv->gconf_client);
+	g_object_unref (cupdate->priv->settings);
 	g_object_unref (cupdate->priv->control);
 	g_object_unref (cupdate->priv->task);
 	g_object_unref (cupdate->priv->dbus_monitor_viewer);
diff --git a/src/gpk-common.h b/src/gpk-common.h
index 8b7a39c..19cf7df 100644
--- a/src/gpk-common.h
+++ b/src/gpk-common.h
@@ -31,55 +31,55 @@
 
 G_BEGIN_DECLS
 
-#define GPK_CONF_DIR				"/apps/gnome-packagekit"
-#define GPK_CONF_AUTOCOMPLETE			"/apps/gnome-packagekit/autocomplete"
-#define GPK_CONF_SHOW_DEPENDS			"/apps/gnome-packagekit/show_depends"
-#define GPK_CONF_SHOW_COPY_CONFIRM		"/apps/gnome-packagekit/show_copy_confirm"
-#define GPK_CONF_DBUS_DEFAULT_INTERACTION	"/apps/gnome-packagekit/dbus_default_interaction"
-#define GPK_CONF_DBUS_ENFORCED_INTERACTION	"/apps/gnome-packagekit/dbus_enforced_interaction"
-#define GPK_CONF_ENABLE_AUTOREMOVE		"/apps/gnome-packagekit/enable_autoremove"
-#define GPK_CONF_ENABLE_FONT_HELPER		"/apps/gnome-packagekit/enable_font_helper"
-#define GPK_CONF_ENABLE_CODEC_HELPER		"/apps/gnome-packagekit/enable_codec_helper"
-#define GPK_CONF_ENABLE_MIME_TYPE_HELPER	"/apps/gnome-packagekit/enable_mime_type_helper"
-#define GPK_CONF_ENABLE_CHECK_FIRMWARE		"/apps/gnome-packagekit/enable_check_firmware"
-#define GPK_CONF_ENABLE_CHECK_HARDWARE		"/apps/gnome-packagekit/enable_check_hardware"
-#define GPK_CONF_IGNORED_DBUS_REQUESTS		"/apps/gnome-packagekit/ignored_dbus_requests"
-#define GPK_CONF_INSTALL_ROOT			"/apps/gnome-packagekit/install_root"
-#define GPK_CONF_REPO_SHOW_DETAILS		"/apps/gnome-packagekit/repo/show_details"
-#define GPK_CONF_CONNECTION_USE_MOBILE		"/apps/gnome-packagekit/update-icon/connection_use_mobile"
-#define GPK_CONF_CONNECTION_USE_WIFI		"/apps/gnome-packagekit/update-icon/connection_use_wifi"
-#define GPK_CONF_NOTIFY_COMPLETED		"/apps/gnome-packagekit/update-icon/notify_complete"
-#define GPK_CONF_NOTIFY_AVAILABLE		"/apps/gnome-packagekit/update-icon/notify_available"
-#define GPK_CONF_NOTIFY_DISTRO_UPGRADES		"/apps/gnome-packagekit/update-icon/notify_distro_upgrades"
-#define GPK_CONF_NOTIFY_CRITICAL		"/apps/gnome-packagekit/update-icon/notify_critical"
-#define GPK_CONF_NOTIFY_ERROR			"/apps/gnome-packagekit/update-icon/notify_errors"
-#define GPK_CONF_NOTIFY_MESSAGE			"/apps/gnome-packagekit/update-icon/notify_message"
-#define GPK_CONF_NOTIFY_UPDATE_STARTED		"/apps/gnome-packagekit/update-icon/notify_update_started"
-#define GPK_CONF_NOTIFY_UPDATE_NOT_BATTERY	"/apps/gnome-packagekit/update-icon/notify_update_not_battery"
-#define GPK_CONF_NOTIFY_UPDATE_FAILED		"/apps/gnome-packagekit/update-icon/notify_update_failed"
-#define GPK_CONF_NOTIFY_UPDATE_COMPLETE		"/apps/gnome-packagekit/update-icon/notify_update_complete"
-#define GPK_CONF_NOTIFY_UPDATE_COMPLETE_RESTART	"/apps/gnome-packagekit/update-icon/notify_update_complete_restart"
-#define GPK_CONF_SESSION_STARTUP_TIMEOUT	"/apps/gnome-packagekit/update-icon/session_startup_timeout"
-#define GPK_CONF_FORCE_GET_UPDATES_LOGIN	"/apps/gnome-packagekit/update-icon/force_get_updates_login"
-#define GPK_CONF_FREQUENCY_GET_UPDATES		"/apps/gnome-packagekit/update-icon/frequency_get_updates"
-#define GPK_CONF_FREQUENCY_GET_UPGRADES		"/apps/gnome-packagekit/update-icon/frequency_get_upgrades"
-#define GPK_CONF_FREQUENCY_REFRESH_CACHE	"/apps/gnome-packagekit/update-icon/frequency_refresh_cache"
-#define GPK_CONF_AUTO_UPDATE			"/apps/gnome-packagekit/update-icon/auto_update"
-#define GPK_CONF_UPDATE_BATTERY			"/apps/gnome-packagekit/update-icon/update_battery"
-#define GPK_CONF_BANNED_FIRMWARE		"/apps/gnome-packagekit/update-icon/banned_firmware"
-#define GPK_CONF_IGNORED_DEVICES		"/apps/gnome-packagekit/update-icon/ignored_devices"
-#define GPK_CONF_IGNORED_MESSAGES		"/apps/gnome-packagekit/update-icon/ignored_messages"
-#define GPK_CONF_WATCH_ACTIVE_TRANSACTIONS	"/apps/gnome-packagekit/update-icon/watch_active_transactions"
-#define GPK_CONF_APPLICATION_FILTER_BASENAME	"/apps/gnome-packagekit/application/filter_basename"
-#define GPK_CONF_APPLICATION_FILTER_NEWEST	"/apps/gnome-packagekit/application/filter_newest"
-#define GPK_CONF_APPLICATION_FILTER_ARCH	"/apps/gnome-packagekit/application/filter_arch"
-#define GPK_CONF_APPLICATION_CATEGORY_GROUPS	"/apps/gnome-packagekit/application/category_groups"
-#define GPK_CONF_APPLICATION_SEARCH_MODE	"/apps/gnome-packagekit/application/search_mode"
-#define GPK_CONF_APPLICATION_SHOW_ALL_PACKAGES	"/apps/gnome-packagekit/application/show_all_packages"
-#define GPK_CONF_UPDATE_VIEWER_MOBILE_BBAND	"/apps/gnome-packagekit/update-viewer/notify_mobile_connection"
-#define GPK_CONF_UPDATE_VIEWER_ONLY_NEWEST	"/apps/gnome-packagekit/update-viewer/only_newest"
-#define GPK_CONF_UPDATE_VIEWER_SCROLL_ACTIVE	"/apps/gnome-packagekit/update-viewer/scroll_active"
-#define GPK_CONF_MEDIA_REPO_FILENAMES		"/apps/gnome-packagekit/media_repo_filenames"
+#define GPK_SETTINGS_SCHEMA				"org.gnome.packagekit"
+#define GPK_SETTINGS_AUTOCOMPLETE			"autocomplete"
+#define GPK_SETTINGS_AUTO_UPDATE			"auto-update"
+#define GPK_SETTINGS_BANNED_FIRMWARE			"banned-firmware"
+#define GPK_SETTINGS_CATEGORY_GROUPS			"category-groups"
+#define GPK_SETTINGS_CONNECTION_USE_MOBILE		"connection-use-mobile"
+#define GPK_SETTINGS_CONNECTION_USE_WIFI		"connection-use-wifi"
+#define GPK_SETTINGS_DBUS_DEFAULT_INTERACTION		"dbus-default-interaction"
+#define GPK_SETTINGS_DBUS_ENFORCED_INTERACTION		"dbus-enforced-interaction"
+#define GPK_SETTINGS_ENABLE_AUTOREMOVE			"enable-autoremove"
+#define GPK_SETTINGS_ENABLE_CHECK_FIRMWARE		"enable-check-firmware"
+#define GPK_SETTINGS_ENABLE_CHECK_HARDWARE		"enable-check-hardware"
+#define GPK_SETTINGS_ENABLE_CODEC_HELPER		"enable-codec-helper"
+#define GPK_SETTINGS_ENABLE_FONT_HELPER			"enable-font-helper"
+#define GPK_SETTINGS_ENABLE_MIME_TYPE_HELPER		"enable-mime-type-helper"
+#define GPK_SETTINGS_FILTER_ARCH			"filter-arch"
+#define GPK_SETTINGS_FILTER_BASENAME			"filter-basename"
+#define GPK_SETTINGS_FILTER_NEWEST			"filter-newest"
+#define GPK_SETTINGS_FORCE_GET_UPDATES_LOGIN		"force-get-updates-login"
+#define GPK_SETTINGS_FREQUENCY_GET_UPDATES		"frequency-get-updates"
+#define GPK_SETTINGS_FREQUENCY_GET_UPGRADES		"frequency-get-upgrades"
+#define GPK_SETTINGS_FREQUENCY_REFRESH_CACHE		"frequency-refresh-cache"
+#define GPK_SETTINGS_IGNORED_DBUS_REQUESTS		"ignored-dbus-requests"
+#define GPK_SETTINGS_IGNORED_DEVICES			"ignored-devices"
+#define GPK_SETTINGS_IGNORED_MESSAGES			"ignored-messages"
+#define GPK_SETTINGS_INSTALL_ROOT			"install-root"
+#define GPK_SETTINGS_MEDIA_REPO_FILENAMES		"media-repo-filenames"
+#define GPK_SETTINGS_NOTIFY_AVAILABLE			"notify-available"
+#define GPK_SETTINGS_NOTIFY_COMPLETED			"notify-complete"
+#define GPK_SETTINGS_NOTIFY_CRITICAL			"notify-critical"
+#define GPK_SETTINGS_NOTIFY_DISTRO_UPGRADES		"notify-distro-upgrades"
+#define GPK_SETTINGS_NOTIFY_ERROR			"notify-errors"
+#define GPK_SETTINGS_NOTIFY_MESSAGE			"notify-message"
+#define GPK_SETTINGS_NOTIFY_MOBILE_CONNECTION		"notify-mobile-connection"
+#define GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE		"notify-update-complete"
+#define GPK_SETTINGS_NOTIFY_UPDATE_COMPLETE_RESTART	"notify-update-complete-restart"
+#define GPK_SETTINGS_NOTIFY_UPDATE_FAILED		"notify-update-failed"
+#define GPK_SETTINGS_NOTIFY_UPDATE_NOT_BATTERY		"notify-update-not-battery"
+#define GPK_SETTINGS_NOTIFY_UPDATE_STARTED		"notify-update-started"
+#define GPK_SETTINGS_ONLY_NEWEST			"only-newest"
+#define GPK_SETTINGS_REPO_SHOW_DETAILS			"repo-show-details"
+#define GPK_SETTINGS_SCROLL_ACTIVE			"scroll-active"
+#define GPK_SETTINGS_SEARCH_MODE			"search-mode"
+#define GPK_SETTINGS_SESSION_STARTUP_TIMEOUT		"session-startup-timeout"
+#define GPK_SETTINGS_SHOW_ALL_PACKAGES			"show-all-packages"
+#define GPK_SETTINGS_SHOW_COPY_CONFIRM			"show-copy-confirm"
+#define GPK_SETTINGS_SHOW_DEPENDS			"show-depends"
+#define GPK_SETTINGS_UPDATE_BATTERY			"update-battery"
+#define GPK_SETTINGS_WATCH_ACTIVE_TRANSACTIONS		"watch-active-transactions"
 
 #define GPK_BUGZILLA_URL			"https://bugs.freedesktop.org/";
 
diff --git a/src/gpk-dbus-task.c b/src/gpk-dbus-task.c
index 014dfef..8ba346f 100644
--- a/src/gpk-dbus-task.c
+++ b/src/gpk-dbus-task.c
@@ -30,7 +30,6 @@
 
 #include <fontconfig/fontconfig.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <libnotify/notify.h>
 #include <packagekit-glib2/packagekit.h>
 
@@ -67,7 +66,7 @@ static void gpk_dbus_task_progress_cb (PkProgress *progress, PkProgressType type
 struct _GpkDbusTaskPrivate
 {
 	GdkWindow		*parent_window;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	PkTask			*task;
 	PkDesktop		*desktop;
 	PkControl		*control;
@@ -1712,10 +1711,10 @@ gpk_dbus_task_install_gstreamer_resources (GpkDbusTask *dtask, gchar **codec_nam
 	dtask->priv->finished_cb = finished_cb;
 	dtask->priv->finished_userdata = userdata;
 
-	/* check it's not session wide banned in gconf */
-	ret = gconf_client_get_bool (dtask->priv->gconf_client, GPK_CONF_ENABLE_CODEC_HELPER, NULL);
+	/* check it's not session wide banned */
+	ret = g_settings_get_boolean (dtask->priv->settings, GPK_SETTINGS_ENABLE_CODEC_HELPER);
 	if (!ret) {
-		error_dbus = g_error_new (GPK_DBUS_ERROR, GPK_DBUS_ERROR_FORBIDDEN, "not enabled in GConf : %s", GPK_CONF_ENABLE_CODEC_HELPER);
+		error_dbus = g_error_new (GPK_DBUS_ERROR, GPK_DBUS_ERROR_FORBIDDEN, "not enabled in GSettings : %s", GPK_SETTINGS_ENABLE_CODEC_HELPER);
 		gpk_dbus_task_dbus_return_error (dtask, error_dbus);
 		g_error_free (error_dbus);
 		goto out;
@@ -1883,10 +1882,10 @@ gpk_dbus_task_install_mime_types (GpkDbusTask *dtask, gchar **mime_types, GpkDbu
 	dtask->priv->finished_cb = finished_cb;
 	dtask->priv->finished_userdata = userdata;
 
-	/* check it's not session wide banned in gconf */
-	ret = gconf_client_get_bool (dtask->priv->gconf_client, GPK_CONF_ENABLE_MIME_TYPE_HELPER, NULL);
+	/* check it's not session wide banned */
+	ret = g_settings_get_boolean (dtask->priv->settings, GPK_SETTINGS_ENABLE_MIME_TYPE_HELPER);
 	if (!ret) {
-		error_dbus = g_error_new (GPK_DBUS_ERROR, GPK_DBUS_ERROR_FORBIDDEN, "not enabled in GConf : %s", GPK_CONF_ENABLE_MIME_TYPE_HELPER);
+		error_dbus = g_error_new (GPK_DBUS_ERROR, GPK_DBUS_ERROR_FORBIDDEN, "not enabled in GSettings : %s", GPK_SETTINGS_ENABLE_MIME_TYPE_HELPER);
 		gpk_dbus_task_dbus_return_error (dtask, error_dbus);
 		g_error_free (error_dbus);
 		goto out;
@@ -2153,16 +2152,12 @@ gpk_dbus_task_install_check_exec_ignored (GpkDbusTask *dtask)
 	gchar *ignored_str;
 	gchar **ignored = NULL;
 	gboolean ret = TRUE;
-	GError *error = NULL;
 	guint i;
 
-	/* check it's not session wide banned in gconf */
-	ignored_str = gconf_client_get_string (dtask->priv->gconf_client, GPK_CONF_IGNORED_DBUS_REQUESTS, &error);
-	if (ignored_str == NULL) {
-		egg_warning ("failed to get ignored requests: %s", error->message);
-		g_error_free (error);
+	/* check it's not session wide banned */
+	ignored_str = g_settings_get_string (dtask->priv->settings, GPK_SETTINGS_IGNORED_DBUS_REQUESTS);
+	if (ignored_str == NULL)
 		goto out;
-	}
 
 	/* check each one */
 	ignored = g_strsplit (ignored_str, ",", -1);
@@ -2224,10 +2219,10 @@ gpk_dbus_task_install_fontconfig_resources (GpkDbusTask *dtask, gchar **fonts, G
 	/* get number of fonts to install */
 	len = g_strv_length (fonts);
 
-	/* check it's not session wide banned in gconf */
-	ret = gconf_client_get_bool (dtask->priv->gconf_client, GPK_CONF_ENABLE_FONT_HELPER, NULL);
+	/* check it's not session wide banned */
+	ret = g_settings_get_boolean (dtask->priv->settings, GPK_SETTINGS_ENABLE_FONT_HELPER);
 	if (!ret) {
-		error_dbus = g_error_new (GPK_DBUS_ERROR, GPK_DBUS_ERROR_FORBIDDEN, "not enabled in GConf : %s", GPK_CONF_ENABLE_FONT_HELPER);
+		error_dbus = g_error_new (GPK_DBUS_ERROR, GPK_DBUS_ERROR_FORBIDDEN, "not enabled in GSettings : %s", GPK_SETTINGS_ENABLE_FONT_HELPER);
 		gpk_dbus_task_dbus_return_error (dtask, error_dbus);
 		g_error_free (error_dbus);
 		goto out;
@@ -3093,8 +3088,8 @@ gpk_dbus_task_init (GpkDbusTask *dtask)
 	dtask->priv->language = gpk_language_new ();
 	gpk_language_populate (dtask->priv->language, NULL);
 
-	/* use gconf for session settings */
-	dtask->priv->gconf_client = gconf_client_get_default ();
+	/* gat session settings */
+	dtask->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 
 	/* get actions */
 	dtask->priv->control = pk_control_new ();
@@ -3141,7 +3136,7 @@ gpk_dbus_task_finalize (GObject *object)
 	g_object_unref (PK_CLIENT(dtask->priv->task));
 	g_object_unref (dtask->priv->control);
 	g_object_unref (dtask->priv->desktop);
-	g_object_unref (dtask->priv->gconf_client);
+	g_object_unref (dtask->priv->settings);
 	g_object_unref (dtask->priv->dialog);
 	g_object_unref (dtask->priv->vendor);
 	g_object_unref (dtask->priv->language);
diff --git a/src/gpk-dbus.c b/src/gpk-dbus.c
index f775a22..d18731f 100644
--- a/src/gpk-dbus.c
+++ b/src/gpk-dbus.c
@@ -39,7 +39,6 @@
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
 #include <packagekit-glib2/packagekit.h>
-#include <gconf/gconf-client.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
@@ -55,7 +54,7 @@ static void     gpk_dbus_finalize	(GObject	*object);
 
 struct GpkDbusPrivate
 {
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	gint			 timeout_tmp;
 	GTimer			*timer;
 	guint			 refcount;
@@ -301,8 +300,8 @@ gpk_dbus_parse_interaction (GpkDbus *dbus, const gchar *interaction, PkBitfield
 	*interact = 0;
 	dbus->priv->timeout_tmp = -1;
 
-	/* get default policy from gconf */
-	policy = gconf_client_get_string (dbus->priv->gconf_client, GPK_CONF_DBUS_DEFAULT_INTERACTION, NULL);
+	/* get default policy from settings */
+	policy = g_settings_get_string (dbus->priv->settings, GPK_SETTINGS_DBUS_DEFAULT_INTERACTION);
 	if (policy != NULL) {
 		egg_debug ("default is %s", policy);
 		gpk_dbus_set_interaction_from_text (interact, &dbus->priv->timeout_tmp, policy);
@@ -313,8 +312,8 @@ gpk_dbus_parse_interaction (GpkDbus *dbus, const gchar *interaction, PkBitfield
 	gpk_dbus_set_interaction_from_text (interact, &dbus->priv->timeout_tmp, interaction);
 	egg_debug ("client is %s", interaction);
 
-	/* now override with enforced policy from gconf */
-	policy = gconf_client_get_string (dbus->priv->gconf_client, GPK_CONF_DBUS_ENFORCED_INTERACTION, NULL);
+	/* now override with enforced policy */
+	policy = g_settings_get_string (dbus->priv->settings, GPK_SETTINGS_DBUS_ENFORCED_INTERACTION);
 	if (policy != NULL) {
 		egg_debug ("enforced is %s", policy);
 		gpk_dbus_set_interaction_from_text (interact, &dbus->priv->timeout_tmp, policy);
@@ -543,7 +542,7 @@ gpk_dbus_init (GpkDbus *dbus)
 
 	dbus->priv = GPK_DBUS_GET_PRIVATE (dbus);
 	dbus->priv->timeout_tmp = -1;
-	dbus->priv->gconf_client = gconf_client_get_default ();
+	dbus->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 	dbus->priv->x11 = gpk_x11_new ();
 	dbus->priv->timer = g_timer_new ();
 
@@ -574,7 +573,7 @@ gpk_dbus_finalize (GObject *object)
 	dbus = GPK_DBUS (object);
 	g_return_if_fail (dbus->priv != NULL);
 	g_timer_destroy (dbus->priv->timer);
-	g_object_unref (dbus->priv->gconf_client);
+	g_object_unref (dbus->priv->settings);
 	g_object_unref (dbus->priv->x11);
 	g_object_unref (dbus->priv->proxy_session_pid);
 	g_object_unref (dbus->priv->proxy_system_pid);
diff --git a/src/gpk-dialog.c b/src/gpk-dialog.c
index 5feb288..f151edf 100644
--- a/src/gpk-dialog.c
+++ b/src/gpk-dialog.c
@@ -25,7 +25,6 @@
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include <packagekit-glib2/packagekit.h>
-#include <gconf/gconf-client.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
@@ -281,14 +280,14 @@ static void
 gpk_client_checkbutton_show_depends_cb (GtkWidget *widget, const gchar *key)
 {
 	gboolean checked;
-	GConfClient *gconf_client;
+	GSettings *settings;
 
 	/* set the policy */
 	checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
 	egg_debug ("Changing %s to %i", key, checked);
-	gconf_client = gconf_client_get_default ();
-	gconf_client_set_bool (gconf_client, key, !checked, NULL);
-	g_object_unref (gconf_client);
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	g_settings_set_boolean (settings, key, !checked);
+	g_object_unref (settings);
 }
 
 /**
@@ -300,7 +299,7 @@ gpk_dialog_embed_do_not_show_widget (GtkDialog *dialog, const gchar *key)
 	GtkWidget *check_button;
 	GtkWidget *widget;
 	gboolean checked;
-	GConfClient *gconf_client;
+	GSettings *settings;
 
 	/* add a checkbutton for deps screen */
 	check_button = gtk_check_button_new_with_label (_("Do not show this again"));
@@ -312,9 +311,9 @@ gpk_dialog_embed_do_not_show_widget (GtkDialog *dialog, const gchar *key)
 					   NULL);
 
 	/* checked? */
-	gconf_client = gconf_client_get_default ();
-	checked = gconf_client_get_bool (gconf_client, key, NULL);
-	g_object_unref (gconf_client);
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	checked = g_settings_get_boolean (settings, key);
+	g_object_unref (settings);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), !checked);
 
 	gtk_widget_show (check_button);
diff --git a/src/gpk-firmware.c b/src/gpk-firmware.c
index acf13eb..c73b06f 100644
--- a/src/gpk-firmware.c
+++ b/src/gpk-firmware.c
@@ -36,7 +36,6 @@
 #include <glib/gi18n.h>
 #include <gio/gio.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <libnotify/notify.h>
 #include <packagekit-glib2/packagekit.h>
 #ifdef GPK_BUILD_GUDEV
@@ -65,7 +64,7 @@ static void     gpk_firmware_finalize	(GObject	  *object);
 struct GpkFirmwarePrivate
 {
 	EggConsoleKit		*consolekit;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	GFileMonitor		*monitor;
 	GPtrArray		*array_requested;
 	PkTask			*task;
@@ -440,21 +439,14 @@ gpk_firmware_install_file (GpkFirmware *firmware)
 static void
 gpk_firmware_ignore_devices (GpkFirmware *firmware)
 {
-	gboolean ret;
 	gchar *existing = NULL;
-	GError *error = NULL;
 	GpkFirmwareRequest *req;
 	GPtrArray *array;
 	GString *string = NULL;
 	guint i;
 
-	/* get from gconf */
-	existing = gconf_client_get_string (firmware->priv->gconf_client, GPK_CONF_IGNORED_DEVICES, &error);
-	if (error != NULL) {
-		egg_warning ("failed to get ignored devices: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
+	/* get from settings */
+	existing = g_settings_get_string (firmware->priv->settings, GPK_SETTINGS_IGNORED_DEVICES);
 
 	/* get existing string */
 	string = g_string_new (existing);
@@ -472,14 +464,9 @@ gpk_firmware_ignore_devices (GpkFirmware *firmware)
 	if (string->len > 2)
 		g_string_set_size (string, string->len - 1);
 
-	/* set new string to gconf */
-	ret = gconf_client_set_string (firmware->priv->gconf_client, GPK_CONF_IGNORED_DEVICES, string->str, &error);
-	if (!ret) {
-		egg_warning ("failed to set new string %s: %s", string->str, error->message);
-		g_error_free (error);
-		goto out;
-	}
-out:
+	/* set new string */
+	g_settings_set_string (firmware->priv->settings, GPK_SETTINGS_IGNORED_DEVICES, string->str);
+
 	g_free (existing);
 	if (string != NULL)
 		g_string_free (string, TRUE);
@@ -657,8 +644,8 @@ gpk_firmware_remove_banned (GpkFirmware *firmware, GPtrArray *array)
 	GpkFirmwareRequest *req;
 	guint i, j;
 
-	/* get from gconf */
-	banned_str = gconf_client_get_string (firmware->priv->gconf_client, GPK_CONF_BANNED_FIRMWARE, NULL);
+	/* get from settings */
+	banned_str = g_settings_get_string (firmware->priv->settings, GPK_SETTINGS_BANNED_FIRMWARE);
 	if (banned_str == NULL) {
 		egg_warning ("could not read banned list");
 		goto out;
@@ -703,8 +690,8 @@ gpk_firmware_remove_ignored (GpkFirmware *firmware, GPtrArray *array)
 	GpkFirmwareRequest *req;
 	guint i, j;
 
-	/* get from gconf */
-	ignored_str = gconf_client_get_string (firmware->priv->gconf_client, GPK_CONF_IGNORED_DEVICES, NULL);
+	/* get from settings */
+	ignored_str = g_settings_get_string (firmware->priv->settings, GPK_SETTINGS_IGNORED_DEVICES);
 	if (ignored_str == NULL) {
 		egg_warning ("could not read ignored list");
 		goto out;
@@ -894,9 +881,9 @@ gpk_firmware_scan_directory (GpkFirmware *firmware)
 	const GpkFirmwareRequest *req;
 
 	/* should we check and show the user */
-	ret = gconf_client_get_bool (firmware->priv->gconf_client, GPK_CONF_ENABLE_CHECK_FIRMWARE, NULL);
+	ret = g_settings_get_boolean (firmware->priv->settings, GPK_SETTINGS_ENABLE_CHECK_FIRMWARE);
 	if (!ret) {
-		egg_debug ("not showing thanks to GConf");
+		egg_debug ("not showing thanks to GSettings");
 		return;
 	}
 
@@ -1000,7 +987,7 @@ gpk_firmware_init (GpkFirmware *firmware)
 	firmware->priv->timeout_id = 0;
 	firmware->priv->packages_found = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
 	firmware->priv->array_requested = g_ptr_array_new_with_free_func ((GDestroyNotify) gpk_firmware_request_free);
-	firmware->priv->gconf_client = gconf_client_get_default ();
+	firmware->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 	firmware->priv->consolekit = egg_console_kit_new ();
 	firmware->priv->task = PK_TASK(gpk_task_new ());
 	g_object_set (firmware->priv->task,
@@ -1045,7 +1032,7 @@ gpk_firmware_finalize (GObject *object)
 	g_ptr_array_unref (firmware->priv->array_requested);
 	g_ptr_array_unref (firmware->priv->packages_found);
 	g_object_unref (PK_CLIENT(firmware->priv->task));
-	g_object_unref (firmware->priv->gconf_client);
+	g_object_unref (firmware->priv->settings);
 	g_object_unref (firmware->priv->consolekit);
 	if (firmware->priv->monitor != NULL)
 		g_object_unref (firmware->priv->monitor);
diff --git a/src/gpk-hardware.c b/src/gpk-hardware.c
index d411bf2..ae012b2 100644
--- a/src/gpk-hardware.c
+++ b/src/gpk-hardware.c
@@ -34,7 +34,6 @@
 #endif /* HAVE_UNISTD_H */
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <libnotify/notify.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
@@ -59,7 +58,7 @@ static void     gpk_hardware_finalize	(GObject	  *object);
 struct GpkHardwarePrivate
 {
 	PkTask			*task;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	DBusGConnection		*connection;
 	DBusGProxy		*proxy;
 	gchar			**package_ids;
@@ -113,8 +112,8 @@ gpk_hardware_libnotify_cb (NotifyNotification *notification, gchar *action, gpoi
 		pk_client_install_packages_async (PK_CLIENT(hardware->priv->task), TRUE, hardware->priv->package_ids, NULL, NULL, NULL,
 						  (GAsyncReadyCallback) gpk_hardware_install_packages_cb, hardware);
 	} else if (g_strcmp0 (action, GPK_HARDWARE_DONT_PROMPT_ACTION) == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_ENABLE_CHECK_HARDWARE);
-		gconf_client_set_bool (hardware->priv->gconf_client, GPK_CONF_ENABLE_CHECK_HARDWARE, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_ENABLE_CHECK_HARDWARE);
+		g_settings_set_boolean (hardware->priv->settings, GPK_SETTINGS_ENABLE_CHECK_HARDWARE, FALSE);
 	} else {
 		egg_warning ("unknown action id: %s", action);
 	}
@@ -278,14 +277,14 @@ gpk_hardware_init (GpkHardware *hardware)
 	GError *error = NULL;
 
 	hardware->priv = GPK_HARDWARE_GET_PRIVATE (hardware);
-	hardware->priv->gconf_client = gconf_client_get_default ();
+	hardware->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 	hardware->priv->package_ids = NULL;
 	hardware->priv->udi = NULL;
 
 	/* should we check and show the user */
-	ret = gconf_client_get_bool (hardware->priv->gconf_client, GPK_CONF_ENABLE_CHECK_HARDWARE, NULL);
+	ret = g_settings_get_boolean (hardware->priv->settings, GPK_SETTINGS_ENABLE_CHECK_HARDWARE);
 	if (!ret) {
-		egg_debug ("hardware driver checking disabled in GConf");
+		egg_debug ("hardware driver checking disabled in GSettings");
 		return;
 	}
 	hardware->priv->task = PK_TASK(gpk_task_new ());
@@ -338,7 +337,7 @@ gpk_hardware_finalize (GObject *object)
 	hardware = GPK_HARDWARE (object);
 
 	g_return_if_fail (hardware->priv != NULL);
-	g_object_unref (hardware->priv->gconf_client);
+	g_object_unref (hardware->priv->settings);
 	g_object_unref (PK_CLIENT(hardware->priv->task));
 	g_strfreev (hardware->priv->package_ids);
 
diff --git a/src/gpk-log.c b/src/gpk-log.c
index 55b6d6f..3fe9162 100644
--- a/src/gpk-log.c
+++ b/src/gpk-log.c
@@ -29,7 +29,6 @@
 #include <sys/types.h>
 #include <pwd.h>
 
-#include <gconf/gconf-client.h>
 #include <packagekit-glib2/packagekit.h>
 #include <unique/unique.h>
 
@@ -675,7 +674,7 @@ int
 main (int argc, char *argv[])
 {
 	GOptionContext *context;
-	GConfClient *gconf_client;
+	GSettings *settings;
 	GtkWidget *widget;
 	GtkTreeSelection *selection;
 	GtkEntryCompletion *completion;
@@ -779,8 +778,8 @@ main (int argc, char *argv[])
 	g_signal_connect (widget, "activate", G_CALLBACK (gpk_log_button_filter_cb), NULL);
 
 	/* autocompletion can be turned off as it's slow */
-	gconf_client = gconf_client_get_default ();
-	ret = gconf_client_get_bool (gconf_client, GPK_CONF_AUTOCOMPLETE, NULL);
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_AUTOCOMPLETE);
 	if (ret) {
 		/* create the completion object */
 		completion = gpk_package_entry_completion_new ();
@@ -791,7 +790,7 @@ main (int argc, char *argv[])
 		/* use search as you type */
 		g_signal_connect (widget, "key-release-event", G_CALLBACK (gpk_log_entry_filter_cb), NULL);
 	}
-	g_object_unref (gconf_client);
+	g_object_unref (settings);
 
 	/* create list stores */
 	list_store = gtk_list_store_new (GPK_LOG_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING,
diff --git a/src/gpk-prefs.c b/src/gpk-prefs.c
index 84cab03..ca7e2bb 100644
--- a/src/gpk-prefs.c
+++ b/src/gpk-prefs.c
@@ -30,7 +30,6 @@
 #include <math.h>
 #include <string.h>
 #include <dbus/dbus-glib.h>
-#include <gconf/gconf-client.h>
 #include <packagekit-glib2/packagekit.h>
 #include <unique/unique.h>
 
@@ -62,6 +61,7 @@
 #define GPK_PREFS_VALUE_WEEKLY		(60*60*24*7)
 
 static GtkBuilder *builder = NULL;
+static GSettings *settings = NULL;
 
 /**
  * gpk_prefs_help_cb:
@@ -73,26 +73,6 @@ gpk_prefs_help_cb (GtkWidget *widget, gpointer data)
 }
 
 /**
- * pk_button_checkbutton_clicked_cb:
- **/
-static void
-pk_button_checkbutton_clicked_cb (GtkWidget *widget, gpointer data)
-{
-	gboolean checked;
-	GConfClient *client;
-	const gchar *gconf_key;
-
-	client = gconf_client_get_default ();
-	checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
-
-	gconf_key = (const char *) g_object_get_data (G_OBJECT (widget), "gconf_key");
-	egg_debug ("Changing %s to %i", gconf_key, checked);
-	gconf_client_set_bool (client, gconf_key, checked, NULL);
-
-	g_object_unref (client);
-}
-
-/**
  * gpk_prefs_update_freq_combo_changed:
  **/
 static void
@@ -100,9 +80,7 @@ gpk_prefs_update_freq_combo_changed (GtkWidget *widget, gpointer data)
 {
 	gchar *value;
 	guint freq = 0;
-	GConfClient *client;
 
-	client = gconf_client_get_default ();
 	value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (widget));
 	if (strcmp (value, PK_FREQ_HOURLY_TEXT) == 0)
 		freq = GPK_PREFS_VALUE_HOURLY;
@@ -115,10 +93,9 @@ gpk_prefs_update_freq_combo_changed (GtkWidget *widget, gpointer data)
 	else
 		g_assert (FALSE);
 
-	egg_debug ("Changing %s to %i", GPK_CONF_FREQUENCY_GET_UPDATES, freq);
-	gconf_client_set_int (client, GPK_CONF_FREQUENCY_GET_UPDATES, freq, NULL);
+	egg_debug ("Changing %s to %i", GPK_SETTINGS_FREQUENCY_GET_UPDATES, freq);
+	g_settings_set_int (settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES, freq);
 	g_free (value);
-	g_object_unref (client);
 }
 
 /**
@@ -129,9 +106,7 @@ gpk_prefs_upgrade_freq_combo_changed (GtkWidget *widget, gpointer data)
 {
 	gchar *value;
 	guint freq = 0;
-	GConfClient *client;
 
-	client = gconf_client_get_default ();
 	value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (widget));
 	if (strcmp (value, PK_FREQ_DAILY_TEXT) == 0)
 		freq = GPK_PREFS_VALUE_DAILY;
@@ -142,10 +117,9 @@ gpk_prefs_upgrade_freq_combo_changed (GtkWidget *widget, gpointer data)
 	else
 		g_assert (FALSE);
 
-	egg_debug ("Changing %s to %i", GPK_CONF_FREQUENCY_GET_UPGRADES, freq);
-	gconf_client_set_int (client, GPK_CONF_FREQUENCY_GET_UPGRADES, freq, NULL);
+	egg_debug ("Changing %s to %i", GPK_SETTINGS_FREQUENCY_GET_UPGRADES, freq);
+	g_settings_set_int (settings, GPK_SETTINGS_FREQUENCY_GET_UPGRADES, freq);
 	g_free (value);
-	g_object_unref (client);
 }
 
 /**
@@ -157,9 +131,7 @@ gpk_prefs_update_combo_changed (GtkWidget *widget, gpointer data)
 	gchar *value;
 	const gchar *action;
 	GpkUpdateEnum update = GPK_UPDATE_ENUM_UNKNOWN;
-	GConfClient *client;
 
-	client = gconf_client_get_default ();
 	value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (widget));
 	if (value == NULL) {
 		egg_warning ("value NULL");
@@ -176,10 +148,9 @@ gpk_prefs_update_combo_changed (GtkWidget *widget, gpointer data)
 	}
 
 	action = gpk_update_enum_to_text (update);
-	egg_debug ("Changing %s to %s", GPK_CONF_AUTO_UPDATE, action);
-	gconf_client_set_string (client, GPK_CONF_AUTO_UPDATE, action, NULL);
+	egg_debug ("Changing %s to %s", GPK_SETTINGS_AUTO_UPDATE, action);
+	g_settings_set_string (settings, GPK_SETTINGS_AUTO_UPDATE, action);
 	g_free (value);
-	g_object_unref (client);
 }
 
 /**
@@ -211,14 +182,11 @@ gpk_prefs_update_freq_combo_setup (void)
 	guint value;
 	gboolean is_writable;
 	GtkWidget *widget;
-	GConfClient *client;
 
-	client = gconf_client_get_default ();
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_check"));
-	is_writable = gconf_client_key_is_writable (client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
-	value = gconf_client_get_int (client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
-	egg_debug ("value from gconf %i", value);
-	g_object_unref (client);
+	is_writable = g_settings_is_writable (settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
+	value = g_settings_get_int (settings, GPK_SETTINGS_FREQUENCY_GET_UPDATES);
+	egg_debug ("value from settings %i", value);
 
 	/* do we have permission to write? */
 	gtk_widget_set_sensitive (widget, is_writable);
@@ -254,14 +222,11 @@ gpk_prefs_upgrade_freq_combo_setup (void)
 	guint value;
 	gboolean is_writable;
 	GtkWidget *widget;
-	GConfClient *client;
 
-	client = gconf_client_get_default ();
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_upgrade"));
-	is_writable = gconf_client_key_is_writable (client, GPK_CONF_FREQUENCY_GET_UPGRADES, NULL);
-	value = gconf_client_get_int (client, GPK_CONF_FREQUENCY_GET_UPGRADES, NULL);
-	egg_debug ("value from gconf %i", value);
-	g_object_unref (client);
+	is_writable = g_settings_is_writable (settings, GPK_SETTINGS_FREQUENCY_GET_UPGRADES);
+	value = g_settings_get_int (settings, GPK_SETTINGS_FREQUENCY_GET_UPGRADES);
+	egg_debug ("value from settings %i", value);
 
 	/* do we have permission to write? */
 	gtk_widget_set_sensitive (widget, is_writable);
@@ -295,20 +260,17 @@ gpk_prefs_auto_update_combo_setup (void)
 	gboolean is_writable;
 	GtkWidget *widget;
 	GpkUpdateEnum update;
-	GConfClient *client;
 
-	client = gconf_client_get_default ();
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_install"));
-	is_writable = gconf_client_key_is_writable (client, GPK_CONF_AUTO_UPDATE, NULL);
-	value = gconf_client_get_string (client, GPK_CONF_AUTO_UPDATE, NULL);
+	is_writable = g_settings_is_writable (settings, GPK_SETTINGS_AUTO_UPDATE);
+	value = g_settings_get_string (settings, GPK_SETTINGS_AUTO_UPDATE);
 	if (value == NULL) {
 		egg_warning ("invalid schema, please re-install");
 		return;
 	}
-	egg_debug ("value from gconf %s", value);
+	egg_debug ("value from settings %s", value);
 	update = gpk_update_enum_from_text (value);
 	g_free (value);
-	g_object_unref (client);
 
 	/* do we have permission to write? */
 	gtk_widget_set_sensitive (widget, is_writable);
@@ -327,25 +289,6 @@ gpk_prefs_auto_update_combo_setup (void)
 }
 
 /**
- * gpk_prefs_notify_checkbutton_setup:
- **/
-static void
-gpk_prefs_notify_checkbutton_setup (GtkWidget *widget, const gchar *gconf_key)
-{
-	GConfClient *client;
-	gboolean value;
-
-	client = gconf_client_get_default ();
-	value = gconf_client_get_bool (client, gconf_key, NULL);
-	egg_debug ("value from gconf %i for %s", value, gconf_key);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
-
-	g_object_set_data (G_OBJECT (widget), "gconf_key", (gpointer) gconf_key);
-	g_signal_connect (widget, "clicked", G_CALLBACK (pk_button_checkbutton_clicked_cb), NULL);
-	g_object_unref (client);
-}
-
-/**
  * gpk_prefs_message_received_cb
  **/
 static void
@@ -504,6 +447,9 @@ main (int argc, char *argv[])
 	g_signal_connect (unique_app, "message-received",
 			  G_CALLBACK (gpk_prefs_message_received_cb), NULL);
 
+	/* load settings */
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+
 	/* get actions */
 	loop = g_main_loop_new (NULL, FALSE);
 	control = pk_control_new ();
@@ -528,7 +474,10 @@ main (int argc, char *argv[])
 			  G_CALLBACK (gpk_prefs_delete_event_cb), loop);
 
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_mobile_broadband"));
-	gpk_prefs_notify_checkbutton_setup (widget, GPK_CONF_CONNECTION_USE_MOBILE);
+	g_settings_bind (settings,
+			 GPK_SETTINGS_CONNECTION_USE_MOBILE,
+			 widget, "active",
+			 G_SETTINGS_BIND_DEFAULT);
 
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_close"));
 	g_signal_connect (widget, "clicked",
@@ -560,6 +509,7 @@ out_build:
 	g_main_loop_unref (loop);
 	g_object_unref (control);
 	g_object_unref (builder);
+	g_object_unref (settings);
 unique_out:
 	g_object_unref (unique_app);
 
diff --git a/src/gpk-repo.c b/src/gpk-repo.c
index 08311ae..1827661 100644
--- a/src/gpk-repo.c
+++ b/src/gpk-repo.c
@@ -25,7 +25,6 @@
 #include <locale.h>
 
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <packagekit-glib2/packagekit.h>
 #include <unique/unique.h>
 
@@ -41,8 +40,7 @@ static GtkBuilder *builder = NULL;
 static GtkListStore *list_store = NULL;
 static PkClient *client = NULL;
 static PkBitfield roles;
-static GConfClient *gconf_client;
-static gboolean show_details;
+static GSettings *settings;
 static GtkTreePath *path_global = NULL;
 static GtkWidget *image_animation = NULL;
 static guint status_id = 0;
@@ -462,8 +460,10 @@ static void
 gpk_repo_repo_list_refresh (void)
 {
 	PkBitfield filters;
+	GtkWidget *widget;
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
+	gboolean show_details;
 
 	/* mark the items as not used */
 	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_repo"));
@@ -471,6 +471,8 @@ gpk_repo_repo_list_refresh (void)
 	gpk_repo_mark_nonactive (model);
 
 	egg_debug ("refreshing list");
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_detail"));
+	show_details = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
 	if (!show_details)
 		filters = pk_bitfield_value (PK_FILTER_ENUM_NOT_DEVELOPMENT);
 	else
@@ -490,14 +492,11 @@ gpk_repo_repo_list_changed_cb (PkControl *control, gpointer data)
 }
 
 /**
- * gpk_repo_checkbutton_details:
+ * gpk_repo_checkbutton_detail_cb:
  **/
 static void
-gpk_repo_checkbutton_details (GtkWidget *widget, gpointer data)
+gpk_repo_checkbutton_detail_cb (GtkWidget *widget, gpointer data)
 {
-	show_details = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
-	egg_debug ("Changing %s to %i", GPK_CONF_REPO_SHOW_DETAILS, show_details);
-	gconf_client_set_bool (gconf_client, GPK_CONF_REPO_SHOW_DETAILS, show_details, NULL);
 	gpk_repo_repo_list_refresh ();
 }
 
@@ -653,7 +652,7 @@ main (int argc, char *argv[])
 	g_signal_connect (unique_app, "message-received",
 			  G_CALLBACK (gpk_repo_message_received_cb), NULL);
 
-	gconf_client = gconf_client_get_default ();
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 
 	loop = g_main_loop_new (NULL, FALSE);
 
@@ -694,10 +693,12 @@ main (int argc, char *argv[])
 			  G_CALLBACK (gpk_button_help_cb), NULL);
 
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "checkbutton_detail"));
-	show_details = gconf_client_get_bool (gconf_client, GPK_CONF_REPO_SHOW_DETAILS, NULL);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), show_details);
+	g_settings_bind (settings,
+			 GPK_SETTINGS_REPO_SHOW_DETAILS,
+			 widget, "active",
+			 G_SETTINGS_BIND_DEFAULT);
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_repo_checkbutton_details), NULL);
+			  G_CALLBACK (gpk_repo_checkbutton_detail_cb), NULL);
 
 	/* set a size, if the screen allows */
 	gpk_window_set_size_request (GTK_WINDOW (main_window), 500, 300);
@@ -741,7 +742,7 @@ main (int argc, char *argv[])
 	g_object_unref (list_store);
 out_build:
 	g_object_unref (builder);
-	g_object_unref (gconf_client);
+	g_object_unref (settings);
 	g_object_unref (control);
 	g_object_unref (client);
 	g_main_loop_unref (loop);
diff --git a/src/gpk-self-test.c b/src/gpk-self-test.c
index 612cae2..a65f472 100644
--- a/src/gpk-self-test.c
+++ b/src/gpk-self-test.c
@@ -42,6 +42,7 @@ main (int argc, char **argv)
 
 	if (! g_thread_supported ())
 		g_thread_init (NULL);
+
 	g_type_init ();
 	gtk_init (&argc, &argv);
 	test = egg_test_init ();
diff --git a/src/gpk-service-pack.c b/src/gpk-service-pack.c
index 62048ef..8204a76 100644
--- a/src/gpk-service-pack.c
+++ b/src/gpk-service-pack.c
@@ -26,7 +26,6 @@
 
 #include <gtk/gtk.h>
 #include <sys/utsname.h>
-#include <gconf/gconf-client.h>
 #include <packagekit-glib2/packagekit.h>
 #include <unique/unique.h>
 
@@ -683,7 +682,7 @@ main (int argc, char *argv[])
 	GtkEntryCompletion *completion;
 	UniqueApp *unique_app;
 	gboolean ret;
-	GConfClient *gconf_client = NULL;
+	GSettings *settings = NULL;
 	gchar *option = NULL;
 	gchar *package = NULL;
 	gchar *with_array = NULL;
@@ -806,8 +805,8 @@ main (int argc, char *argv[])
 	gtk_widget_hide (widget);
 
 	/* autocompletion can be turned off as it's slow */
-	gconf_client = gconf_client_get_default ();
-	ret = gconf_client_get_bool (gconf_client, GPK_CONF_AUTOCOMPLETE, NULL);
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_AUTOCOMPLETE);
 	if (ret) {
 		/* create the completion object */
 		completion = gpk_package_entry_completion_new ();
@@ -851,8 +850,8 @@ out_build:
 	g_object_unref (builder);
 out_unique:
 	g_object_unref (unique_app);
-	if (gconf_client != NULL)
-		g_object_unref (gconf_client);
+	if (settings != NULL)
+		g_object_unref (settings);
 	if (control != NULL)
 		g_object_unref (control);
 	if (client != NULL)
diff --git a/src/gpk-task.c b/src/gpk-task.c
index 1fa7c66..9901b0b 100644
--- a/src/gpk-task.c
+++ b/src/gpk-task.c
@@ -23,7 +23,6 @@
 
 #include <glib/gi18n.h>
 #include <packagekit-glib2/packagekit.h>
-#include <gconf/gconf-client.h>
 
 #include "egg-debug.h"
 
@@ -45,7 +44,7 @@ static void     gpk_task_finalize	(GObject     *object);
 struct _GpkTaskPrivate
 {
 	gpointer		 user_data;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	GtkWindow		*parent_window;
 	GtkWindow		*current_window;
 	GtkBuilder		*builder_untrusted;
@@ -469,7 +468,7 @@ gpk_task_simulate_question (PkTask *task, guint request, PkResults *results)
 	/* allow skipping of deps except when we remove other packages */
 	if (role != PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES) {
 		/* have we previously said we don't want to be shown the confirmation */
-		ret = gconf_client_get_bool (priv->gconf_client, GPK_CONF_SHOW_DEPENDS, NULL);
+		ret = g_settings_get_boolean (priv->settings, GPK_SETTINGS_SHOW_DEPENDS);
 		if (!ret) {
 			egg_debug ("we've said we don't want the dep dialog");
 			pk_task_user_accepted (PK_TASK(task), priv->request);
@@ -538,7 +537,7 @@ gpk_task_simulate_question (PkTask *task, guint request, PkResults *results)
 	gpk_dialog_embed_package_list_widget (GTK_DIALOG(priv->current_window), array);
 #endif
 
-	gpk_dialog_embed_do_not_show_widget (GTK_DIALOG(priv->current_window), GPK_CONF_SHOW_DEPENDS);
+	gpk_dialog_embed_do_not_show_widget (GTK_DIALOG(priv->current_window), GPK_SETTINGS_SHOW_DEPENDS);
 	/* TRANSLATORS: this is button text */
 	gtk_dialog_add_button (GTK_DIALOG(priv->current_window), _("Continue"), GTK_RESPONSE_YES);
 
@@ -703,7 +702,7 @@ gpk_task_init (GpkTask *task)
 	task->priv->request = 0;
 	task->priv->parent_window = NULL;
 	task->priv->current_window = NULL;
-	task->priv->gconf_client = gconf_client_get_default ();
+	task->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 
 	/* setup dialogs ahead of time */
 	gpk_task_setup_dialog_untrusted (task);
@@ -723,7 +722,7 @@ gpk_task_finalize (GObject *object)
 	g_object_unref (task->priv->builder_untrusted);
 	g_object_unref (task->priv->builder_signature);
 	g_object_unref (task->priv->builder_eula);
-	g_object_unref (task->priv->gconf_client);
+	g_object_unref (task->priv->settings);
 
 	G_OBJECT_CLASS (gpk_task_parent_class)->finalize (object);
 }
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index a8435cc..5205472 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -24,7 +24,6 @@
 
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
-#include <gconf/gconf-client.h>
 #include <packagekit-glib2/packagekit.h>
 #include <canberra-gtk.h>
 #include <unique/unique.h>
@@ -64,7 +63,7 @@ struct GpkUpdateViewerPrivate
 	EggConsoleKit		*console;
 	EggMarkdown		*markdown;
 	GCancellable		*cancellable;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	GPtrArray		*update_array;
 	GtkBuilder		*builder;
 	GtkTreeStore		*array_store_updates;
@@ -959,7 +958,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 		}
 
 		/* scroll to the active cell */
-		scroll = gconf_client_get_bool (priv->gconf_client, GPK_CONF_UPDATE_VIEWER_SCROLL_ACTIVE, NULL);
+		scroll = g_settings_get_boolean (priv->settings, GPK_SETTINGS_SCROLL_ACTIVE);
 		if (scroll) {
 			column = gtk_tree_view_get_column (treeview, 3);
 			gtk_tree_view_scroll_to_cell (treeview, path, column, FALSE, 0.0f, 0.0f);
@@ -1305,7 +1304,7 @@ gpk_update_viewer_check_mobile_broadband (GpkUpdateViewer *update_viewer)
 		goto out;
 
 	/* not when ignored */
-	ret = gconf_client_get_bool (priv->gconf_client, GPK_CONF_UPDATE_VIEWER_MOBILE_BBAND, NULL);
+	ret = g_settings_get_boolean (priv->settings, GPK_SETTINGS_NOTIFY_MOBILE_CONNECTION);
 	if (!ret)
 		goto out;
 
@@ -2734,7 +2733,7 @@ gpk_update_viewer_get_new_update_array (GpkUpdateViewer *update_viewer)
 	gtk_label_set_label (GTK_LABEL(widget), text);
 
 	/* only show newest updates? */
-	ret = gconf_client_get_bool (priv->gconf_client, GPK_CONF_UPDATE_VIEWER_ONLY_NEWEST, NULL);
+	ret = g_settings_get_boolean (priv->settings, GPK_SETTINGS_ONLY_NEWEST);
 	if (ret) {
 		egg_debug ("only showing newest updates");
 		filter = pk_bitfield_from_enums (PK_FILTER_ENUM_NEWEST, -1);
@@ -3138,7 +3137,7 @@ gpk_update_viewer_init (GpkUpdateViewer *update_viewer)
 	priv->ignore_updates_changed = FALSE;
 	priv->restart_update = PK_RESTART_ENUM_NONE;
 
-	priv->gconf_client = gconf_client_get_default ();
+	priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
 	priv->console = egg_console_kit_new ();
 	priv->cancellable = g_cancellable_new ();
 	priv->markdown = egg_markdown_new ();
@@ -3335,7 +3334,7 @@ gpk_update_viewer_finalize (GObject *object)
 	g_object_unref (priv->cancellable);
 	g_object_unref (priv->console);
 	g_object_unref (priv->control);
-	g_object_unref (priv->gconf_client);
+	g_object_unref (priv->settings);
 	g_object_unref (priv->markdown);
 	g_object_unref (priv->task);
 	g_object_unref (priv->text_buffer);
diff --git a/src/gpk-watch.c b/src/gpk-watch.c
index 353ee82..a1e6d52 100644
--- a/src/gpk-watch.c
+++ b/src/gpk-watch.c
@@ -35,7 +35,6 @@
 #include <glib/gi18n.h>
 
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <libnotify/notify.h>
 #include <packagekit-glib2/packagekit.h>
 
@@ -56,8 +55,6 @@ static void     gpk_watch_finalize	(GObject       *object);
 
 #define GPK_WATCH_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPK_TYPE_WATCH, GpkWatchPrivate))
 #define GPK_WATCH_MAXIMUM_TOOLTIP_LINES		10
-#define GPK_WATCH_GCONF_PROXY_HTTP		"/system/http_proxy"
-#define GPK_WATCH_GCONF_PROXY_FTP		"/system/proxy"
 #define GPK_WATCH_SET_PROXY_RATE_LIMIT		200 /* ms */
 
 struct GpkWatchPrivate
@@ -72,7 +69,7 @@ struct GpkWatchPrivate
 	PkTask			*task;
 	PkTransactionList	*tlist;
 	PkRestartEnum		 restart;
-	GConfClient		*gconf_client;
+	GSettings		*settings;
 	guint			 set_proxy_timeout;
 	gchar			*error_details;
 	gboolean		 hide_warning;
@@ -273,7 +270,7 @@ gpk_watch_task_list_to_status_bitfield (GpkWatch *watch)
 		goto out;
 
 	/* do we watch active transactions */
-	watch_active = gconf_client_get_bool (watch->priv->gconf_client, GPK_CONF_WATCH_ACTIVE_TRANSACTIONS, NULL);
+	watch_active = g_settings_get_boolean (watch->priv->settings, GPK_SETTINGS_WATCH_ACTIVE_TRANSACTIONS);
 
 	/* add each status to a list */
 	for (i=0; i<array->len; i++) {
@@ -390,8 +387,8 @@ gpk_watch_libnotify_cb (NotifyNotification *notification, gchar *action, gpointe
 	GpkWatch *watch = GPK_WATCH (data);
 
 	if (g_strcmp0 (action, "do-not-show-notify-complete") == 0) {
-		egg_debug ("set %s to FALSE", GPK_CONF_NOTIFY_COMPLETED);
-		gconf_client_set_bool (watch->priv->gconf_client, GPK_CONF_NOTIFY_COMPLETED, FALSE, NULL);
+		egg_debug ("set %s to FALSE", GPK_SETTINGS_NOTIFY_COMPLETED);
+		g_settings_set_boolean (watch->priv->settings, GPK_SETTINGS_NOTIFY_COMPLETED, FALSE);
 
 	} else if (g_strcmp0 (action, "show-error-details") == 0) {
 		/* TRANSLATORS: The detailed error if the user clicks "more info" */
@@ -989,26 +986,27 @@ gpk_watch_activate_status_cb (GtkStatusIcon *status_icon, GpkWatch *watch)
 static gchar *
 gpk_watch_get_proxy_ftp (GpkWatch *watch)
 {
-	gchar *mode = NULL;
 	gchar *connection = NULL;
+#ifdef USE_GCONF_COMPAT_GNOME_VFS
+	gchar *mode = NULL;
 	gchar *host = NULL;
 	gint port;
 
 	g_return_val_if_fail (GPK_IS_WATCH (watch), NULL);
 
 	/* common case, a direct connection */
-	mode = gconf_client_get_string (watch->priv->gconf_client, "/system/proxy/mode", NULL);
+	mode = g_settings_get_string (watch->priv->settings, "/system/proxy/mode");
 	if (g_strcmp0 (mode, "none") == 0) {
 		egg_debug ("not using session proxy");
 		goto out;
 	}
 
-	host = gconf_client_get_string (watch->priv->gconf_client, "/system/proxy/ftp_host", NULL);
+	host = g_settings_get_string (watch->priv->settings, "/system/proxy/ftp_host");
 	if (egg_strzero (host)) {
 		egg_debug ("no hostname for ftp proxy");
 		goto out;
 	}
-	port = gconf_client_get_int (watch->priv->gconf_client, "/system/proxy/ftp_port", NULL);
+	port = g_settings_get_int (watch->priv->settings, "/system/proxy/ftp_port");
 
 	/* ftp has no username or password */
 	if (port == 0)
@@ -1018,6 +1016,7 @@ gpk_watch_get_proxy_ftp (GpkWatch *watch)
 out:
 	g_free (mode);
 	g_free (host);
+#endif
 	return connection;
 }
 
@@ -1028,45 +1027,46 @@ out:
 static gchar *
 gpk_watch_get_proxy_http (GpkWatch *watch)
 {
+	gchar *proxy_http = NULL;
+#ifdef USE_GCONF_COMPAT_GNOME_VFS
 	gchar *mode = NULL;
 	gchar *host = NULL;
 	gchar *auth = NULL;
 	gchar *connection = NULL;
-	gchar *proxy_http = NULL;
 	gint port;
 	gboolean ret;
 
 	g_return_val_if_fail (GPK_IS_WATCH (watch), NULL);
 
 	/* common case, a direct connection */
-	mode = gconf_client_get_string (watch->priv->gconf_client, "/system/proxy/mode", NULL);
+	mode = g_settings_get_string (watch->priv->settings, "/system/proxy/mode");
 	if (g_strcmp0 (mode, "none") == 0) {
 		egg_debug ("not using session proxy");
 		goto out;
 	}
 
 	/* do we use this? */
-	ret = gconf_client_get_bool (watch->priv->gconf_client, "/system/http_proxy/use_http_proxy", NULL);
+	ret = g_settings_get_boolean (watch->priv->settings, "/system/http_proxy/use_http_proxy");
 	if (!ret) {
 		egg_debug ("not using http proxy");
 		goto out;
 	}
 
 	/* http has 4 parameters */
-	host = gconf_client_get_string (watch->priv->gconf_client, "/system/http_proxy/host", NULL);
+	host = g_settings_get_string (watch->priv->settings, "/system/http_proxy/host");
 	if (egg_strzero (host)) {
 		egg_debug ("no hostname for http proxy");
 		goto out;
 	}
 
 	/* user and password are both optional */
-	ret = gconf_client_get_bool (watch->priv->gconf_client, "/system/http_proxy/use_authentication", NULL);
+	ret = g_settings_get_boolean (watch->priv->settings, "/system/http_proxy/use_authentication");
 	if (ret) {
 		gchar *user = NULL;
 		gchar *password = NULL;
 
-		user = gconf_client_get_string (watch->priv->gconf_client, "/system/http_proxy/authentication_user", NULL);
-		password = gconf_client_get_string (watch->priv->gconf_client, "/system/http_proxy/authentication_password", NULL);
+		user = g_settings_get_string (watch->priv->settings, "/system/http_proxy/authentication_user");
+		password = g_settings_get_string (watch->priv->settings, "/system/http_proxy/authentication_password");
 
 		if (user != NULL && password != NULL)
 			auth = g_strdup_printf ("%s:%s", user, password);
@@ -1080,7 +1080,7 @@ gpk_watch_get_proxy_http (GpkWatch *watch)
 	}
 
 	/* port is optional too */
-	port = gconf_client_get_int (watch->priv->gconf_client, "/system/http_proxy/port", NULL);
+	port = g_settings_get_int (watch->priv->settings, "/system/http_proxy/port");
 	if (port == 0)
 		connection = g_strdup (host);
 	else
@@ -1096,6 +1096,7 @@ out:
 	g_free (connection);
 	g_free (auth);
 	g_free (host);
+#endif
 	return proxy_http;
 }
 
@@ -1187,8 +1188,8 @@ gpk_watch_set_root (GpkWatch *watch)
 {
 	gchar *root;
 
-	/* get from GConf */
-	root = gconf_client_get_string (watch->priv->gconf_client, GPK_CONF_INSTALL_ROOT, NULL);
+	/* get install root */
+	root = g_settings_get_string (watch->priv->settings, GPK_SETTINGS_INSTALL_ROOT);
 	if (root == NULL) {
 		egg_warning ("could not read install root");
 		goto out;
@@ -1204,12 +1205,12 @@ static void gpk_watch_set_root (GpkWatch *watch) {}
 #endif
 
 /**
- * gpk_watch_gconf_key_changed_cb:
+ * gpk_watch_key_changed_cb:
  *
- * We might have to do things when the gconf keys change; do them here.
+ * We might have to do things when the keys change; do them here.
  **/
 static void
-gpk_watch_gconf_key_changed_cb (GConfClient *client, guint cnxn_id, GConfEntry *entry, GpkWatch *watch)
+gpk_watch_key_changed_cb (GSettings *client, const gchar *key, GpkWatch *watch)
 {
 	egg_debug ("keys have changed");
 	gpk_watch_set_proxies (watch);
@@ -1291,8 +1292,8 @@ gpk_watch_is_message_ignored (GpkWatch *watch, PkMessageEnum message)
 	gchar **ignored = NULL;
 	const gchar *message_str;
 
-	/* get from gconf */
-	ignored_str = gconf_client_get_string (watch->priv->gconf_client, GPK_CONF_IGNORED_MESSAGES, NULL);
+	/* get from settings */
+	ignored_str = g_settings_get_string (watch->priv->settings, GPK_SETTINGS_IGNORED_MESSAGES);
 	if (ignored_str == NULL) {
 		egg_warning ("could not read ignored list");
 		goto out;
@@ -1369,9 +1370,9 @@ gpk_watch_process_messages_cb (PkMessage *item, GpkWatch *watch)
 	}
 
 	/* are we accepting notifications */
-	value = gconf_client_get_bool (watch->priv->gconf_client, GPK_CONF_NOTIFY_MESSAGE, NULL);
+	value = g_settings_get_boolean (watch->priv->settings, GPK_SETTINGS_NOTIFY_MESSAGE);
 	if (!value) {
-		egg_debug ("not showing notification as prevented in gconf");
+		egg_debug ("not showing notification as prevented in settings");
 		goto out;
 	}
 
@@ -1419,9 +1420,9 @@ gpk_watch_process_error_code (GpkWatch *watch, PkError *error_code)
 	}
 
 	/* are we accepting notifications */
-	value = gconf_client_get_bool (watch->priv->gconf_client, GPK_CONF_NOTIFY_ERROR, NULL);
+	value = g_settings_get_boolean (watch->priv->settings, GPK_SETTINGS_NOTIFY_ERROR);
 	if (!value) {
-		egg_debug ("not showing notification as prevented in gconf");
+		egg_debug ("not showing notification as prevented in settings");
 		goto out;
 	}
 
@@ -1582,9 +1583,9 @@ gpk_watch_adopt_cb (PkClient *client, GAsyncResult *res, GpkWatch *watch)
 	}
 
 	/* are we accepting notifications */
-	ret = gconf_client_get_bool (watch->priv->gconf_client, GPK_CONF_NOTIFY_COMPLETED, NULL);
+	ret = g_settings_get_boolean (watch->priv->settings, GPK_SETTINGS_NOTIFY_COMPLETED);
 	if (!ret) {
-		egg_debug ("not showing notification as prevented in gconf");
+		egg_debug ("not showing notification as prevented in settings");
 		goto out;
 	}
 
@@ -1792,7 +1793,8 @@ gpk_watch_init (GpkWatch *watch)
 	watch->priv->console = egg_console_kit_new ();
 	watch->priv->cancellable = g_cancellable_new ();
 	watch->priv->array_progress = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-	watch->priv->gconf_client = gconf_client_get_default ();
+	watch->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	g_signal_connect (watch->priv->settings, "changed", G_CALLBACK (gpk_watch_key_changed_cb), watch);
 
 	watch->priv->status_icon = gtk_status_icon_new ();
 	watch->priv->set_proxy_timeout = 0;
@@ -1834,16 +1836,6 @@ gpk_watch_init (GpkWatch *watch)
 	g_signal_connect (watch->priv->tlist, "removed",
 			  G_CALLBACK (gpk_watch_transaction_list_removed_cb), watch);
 
-	/* watch proxy keys */
-	gconf_client_add_dir (watch->priv->gconf_client, GPK_WATCH_GCONF_PROXY_HTTP,
-			      GCONF_CLIENT_PRELOAD_NONE, NULL);
-	gconf_client_add_dir (watch->priv->gconf_client, GPK_WATCH_GCONF_PROXY_FTP,
-			      GCONF_CLIENT_PRELOAD_NONE, NULL);
-	gconf_client_notify_add (watch->priv->gconf_client, GPK_WATCH_GCONF_PROXY_HTTP,
-				 (GConfClientNotifyFunc) gpk_watch_gconf_key_changed_cb, watch, NULL, NULL);
-	gconf_client_notify_add (watch->priv->gconf_client, GPK_WATCH_GCONF_PROXY_FTP,
-				 (GConfClientNotifyFunc) gpk_watch_gconf_key_changed_cb, watch, NULL, NULL);
-
 	/* set the proxy */
 	gpk_watch_set_proxies (watch);
 	gpk_watch_set_root (watch);
@@ -1875,7 +1867,7 @@ gpk_watch_finalize (GObject *object)
 	g_object_unref (watch->priv->console);
 	g_object_unref (watch->priv->control);
 	g_object_unref (watch->priv->dialog);
-	g_object_unref (watch->priv->gconf_client);
+	g_object_unref (watch->priv->settings);
 	g_object_unref (watch->priv->inhibit);
 	g_object_unref (watch->priv->status_icon);
 	g_object_unref (watch->priv->tlist);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]