diff --git a/capplets/keyboard/Makefile.am b/capplets/keyboard/Makefile.am
index 9dc3225..119cea7 100644
--- a/capplets/keyboard/Makefile.am
+++ b/capplets/keyboard/Makefile.am
@@ -19,8 +19,12 @@ gnome_keyboard_properties_LDADD = $(GNOMECC_CAPPLETS_LIBS) $(LIBGNOMEKBDUI_LIBS)
 
 @INTLTOOL_DESKTOP_RULE@
 
-Gladedir   = $(pkgdatadir)/glade
-Glade_DATA = gnome-keyboard-properties.glade
+uidir   = $(pkgdatadir)/ui
+dist_ui_DATA = gnome-keyboard-properties-a11y-notifications.ui \
+               gnome-keyboard-properties-dialog.ui \
+               gnome-keyboard-properties-layout-chooser.ui \
+               gnome-keyboard-properties-model-chooser.ui \
+               gnome-keyboard-properties-options-dialog.ui
 
 desktopdir = $(datadir)/applications
 Desktop_in_files = keyboard.desktop.in
@@ -31,7 +35,7 @@ INCLUDES = \
 	$(LIBGNOMEKBDUI_CFLAGS) \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
-	-DGNOMECC_GLADE_DIR="\"$(pkgdatadir)/glade\""
+	-DGNOMECC_UI_DIR="\"$(uidir)\""
 CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA)
 EXTRA_DIST = $(Glade_DATA)
 
diff --git a/capplets/keyboard/gnome-keyboard-properties-a11y.c b/capplets/keyboard/gnome-keyboard-properties-a11y.c
index 1a4467c..3c4ea57 100644
--- a/capplets/keyboard/gnome-keyboard-properties-a11y.c
+++ b/capplets/keyboard/gnome-keyboard-properties-a11y.c
@@ -30,12 +30,14 @@
 #include "capplet-util.h"
 
 #define CONFIG_ROOT "/desktop/gnome/accessibility/keyboard"
-#define NWID(s) glade_xml_get_widget (notifications_dialog, s)
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+#define NWID(s) GTK_WIDGET (gtk_builder_get_object (notifications_dialog, s))
 
-static GladeXML *notifications_dialog = NULL;
+static GtkBuilder *notifications_dialog = NULL;
 
 static void
-stickykeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
+stickykeys_enable_toggled_cb (GtkWidget *w, GtkBuilder *dialog)
 {
 	gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
 
@@ -45,7 +47,7 @@ stickykeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
 }
 
 static void
-slowkeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
+slowkeys_enable_toggled_cb (GtkWidget *w, GtkBuilder *dialog)
 {
 	gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
 
@@ -55,7 +57,7 @@ slowkeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
 }
 
 static void
-bouncekeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
+bouncekeys_enable_toggled_cb (GtkWidget *w, GtkBuilder *dialog)
 {
 	gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
 
@@ -65,7 +67,7 @@ bouncekeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
 }
 
 static void
-visual_bell_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
+visual_bell_enable_toggled_cb (GtkWidget *w, GtkBuilder *dialog)
 {
 	gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
 
@@ -124,13 +126,14 @@ a11y_notifications_dialog_response_cb (GtkWidget *w, gint response)
 	}
 }
 static void
-notifications_button_clicked_cb (GtkWidget *button, GladeXML *dialog)
+notifications_button_clicked_cb (GtkWidget *button, GtkBuilder *dialog)
 {
 	GtkWidget *w;
-
-	notifications_dialog = glade_xml_new (GNOMECC_GLADE_DIR
-					      "/gnome-keyboard-properties.glade",
-					      "a11y_notifications_dialog", NULL);
+    
+    notifications_dialog = gtk_builder_new ();
+    gtk_builder_add_from_file (notifications_dialog, GNOMECC_UI_DIR
+                               "/gnome-keyboard-properties-notifications-dialog.ui",
+                               NULL);
 
 	stickykeys_enable_toggled_cb (WID ("stickykeys_enable"), dialog);
 	slowkeys_enable_toggled_cb (WID ("slowkeys_enable"), dialog);
@@ -199,7 +202,7 @@ notifications_button_clicked_cb (GtkWidget *button, GladeXML *dialog)
 }
 
 static void
-mousekeys_enable_toggled_cb (GtkWidget *w, GladeXML *dialog)
+mousekeys_enable_toggled_cb (GtkWidget *w, GtkBuilder *dialog)
 {
 	gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
 	gtk_widget_set_sensitive (WID ("mousekeys_table"), active);
@@ -243,7 +246,7 @@ mousekeys_accel_time_from_widget (GConfPropertyEditor *peditor, const GConfValue
 }
 
 void
-setup_a11y_tabs (GladeXML *dialog, GConfChangeSet *changeset)
+setup_a11y_tabs (GtkBuilder *dialog, GConfChangeSet *changeset)
 {
 	GConfClient *client;
 	GtkWidget *w;
diff --git a/capplets/keyboard/gnome-keyboard-properties-a11y.h b/capplets/keyboard/gnome-keyboard-properties-a11y.h
index bdce927..f3b3896 100644
--- a/capplets/keyboard/gnome-keyboard-properties-a11y.h
+++ b/capplets/keyboard/gnome-keyboard-properties-a11y.h
@@ -26,8 +26,7 @@
 
 #include <gconf/gconf-changeset.h>
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 
-extern void setup_a11y_tabs (GladeXML * dialog, GConfChangeSet * changeset);
+extern void setup_a11y_tabs (GtkBuilder * dialog, GConfChangeSet * changeset);
 
 #endif /* __GNOME_KEYBOARD_PROPERTY_A11Y_H */
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkb.c b/capplets/keyboard/gnome-keyboard-properties-xkb.c
index 65a048f..01387b1 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkb.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkb.c
@@ -28,7 +28,6 @@
 #include <string.h>
 #include <gdk/gdkx.h>
 #include <gconf/gconf-client.h>
-#include <glade/glade.h>
 #include <glib/gi18n.h>
 
 #include "capplet-util.h"
@@ -38,6 +37,9 @@
 
 #include <libgnomekbd/gkbd-desktop-config.h>
 
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+
 XklEngine *engine;
 XklConfigRegistry *config_registry;
 
@@ -87,7 +89,7 @@ set_model_text (GtkWidget * picker, GConfValue * value)
 
 static void
 model_key_changed (GConfClient * client,
-		   guint cnxn_id, GConfEntry * entry, GladeXML * dialog)
+		   guint cnxn_id, GConfEntry * entry, GtkBuilder * dialog)
 {
 	set_model_text (WID ("xkb_model_pick"),
 			gconf_entry_get_value (entry));
@@ -96,7 +98,7 @@ model_key_changed (GConfClient * client,
 }
 
 static void
-setup_model_entry (GladeXML * dialog)
+setup_model_entry (GtkBuilder * dialog)
 {
 	GConfValue *value;
 
@@ -113,7 +115,7 @@ setup_model_entry (GladeXML * dialog)
 }
 
 static void
-cleanup_xkb_tabs (GladeXML * dialog)
+cleanup_xkb_tabs (GtkBuilder * dialog)
 {
 	gkbd_desktop_config_term (&desktop_config);
 	gkbd_keyboard_config_term (&initial_config);
@@ -126,7 +128,7 @@ cleanup_xkb_tabs (GladeXML * dialog)
 }
 
 static void
-reset_to_defaults (GtkWidget * button, GladeXML * dialog)
+reset_to_defaults (GtkWidget * button, GtkBuilder * dialog)
 {
 	GkbdKeyboardConfig empty_kbd_config;
 
@@ -142,7 +144,7 @@ static void
 chk_separate_group_per_window_toggled (GConfPropertyEditor * peditor,
 				       const gchar * key,
 				       const GConfValue * value,
-				       GladeXML * dialog)
+				       GtkBuilder * dialog)
 {
 	xkb_layouts_enable_disable_default (dialog, value
 					    &&
@@ -150,7 +152,7 @@ chk_separate_group_per_window_toggled (GConfPropertyEditor * peditor,
 }
 
 void
-setup_xkb_tabs (GladeXML * dialog, GConfChangeSet * changeset)
+setup_xkb_tabs (GtkBuilder * dialog, GConfChangeSet * changeset)
 {
 	GObject *peditor;
 	xkb_gconf_client = gconf_client_get_default ();
@@ -215,7 +217,7 @@ setup_xkb_tabs (GladeXML * dialog, GConfChangeSet * changeset)
 }
 
 void
-enable_disable_restoring (GladeXML * dialog)
+enable_disable_restoring (GtkBuilder * dialog)
 {
 	GkbdKeyboardConfig gswic;
 	gboolean enable;
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkb.h b/capplets/keyboard/gnome-keyboard-properties-xkb.h
index bdd5845..cf22447 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkb.h
+++ b/capplets/keyboard/gnome-keyboard-properties-xkb.h
@@ -29,28 +29,28 @@
 #include "libgnomekbd/gkbd-keyboard-config.h"
 
 G_BEGIN_DECLS
-#define CWID(s) glade_xml_get_widget (chooser_dialog, s)
+#define CWID(s) GTK_WIDGET (gtk_builder_get_object (chooser_dialog, s))
 extern XklEngine *engine;
 extern XklConfigRegistry *config_registry;
 extern GConfClient *xkb_gconf_client;
 extern GkbdKeyboardConfig initial_config;
 
-extern void setup_xkb_tabs (GladeXML * dialog, GConfChangeSet * changeset);
+extern void setup_xkb_tabs (GtkBuilder * dialog, GConfChangeSet * changeset);
 
-extern void xkb_layouts_fill_selected_tree (GladeXML * dialog);
+extern void xkb_layouts_fill_selected_tree (GtkBuilder * dialog);
 
-extern void xkb_layouts_register_buttons_handlers (GladeXML * dialog);
+extern void xkb_layouts_register_buttons_handlers (GtkBuilder * dialog);
 
-extern void xkb_layouts_register_gconf_listener (GladeXML * dialog);
+extern void xkb_layouts_register_gconf_listener (GtkBuilder * dialog);
 
-extern void xkb_options_register_gconf_listener (GladeXML * dialog);
+extern void xkb_options_register_gconf_listener (GtkBuilder * dialog);
 
-extern void xkb_layouts_prepare_selected_tree (GladeXML * dialog,
+extern void xkb_layouts_prepare_selected_tree (GtkBuilder * dialog,
 					       GConfChangeSet * changeset);
 
-extern void xkb_options_load_options (GladeXML * dialog);
+extern void xkb_options_load_options (GtkBuilder * dialog);
 
-extern void xkb_options_popup_dialog (GladeXML * dialog);
+extern void xkb_options_popup_dialog (GtkBuilder * dialog);
 
 extern void clear_xkb_elements_list (GSList * list);
 
@@ -58,15 +58,15 @@ extern char *xci_desc_to_utf8 (XklConfigItem * ci);
 
 extern gchar *xkb_layout_description_utf8 (const gchar * visible);
 
-extern void enable_disable_restoring (GladeXML * dialog);
+extern void enable_disable_restoring (GtkBuilder * dialog);
 
-extern void preview_toggled (GladeXML * dialog, GtkWidget * button);
+extern void preview_toggled (GtkBuilder * dialog, GtkWidget * button);
 
-extern void choose_model (GladeXML * dialog);
+extern void choose_model (GtkBuilder * dialog);
 
-extern void xkb_layout_choose (GladeXML * dialog);
+extern void xkb_layout_choose (GtkBuilder * dialog);
 
-extern void xkb_layouts_enable_disable_default (GladeXML * dialog,
+extern void xkb_layouts_enable_disable_default (GtkBuilder * dialog,
 						gboolean enable);
 
 extern GSList *xkb_layouts_get_selected_list (void);
@@ -83,15 +83,15 @@ extern GSList *xkb_options_get_selected_list (void);
                                GKBD_KEYBOARD_CONFIG_KEY_OPTIONS, \
                                GCONF_VALUE_STRING, (list), NULL)
 
-extern GtkWidget *xkb_layout_preview_create_widget (GladeXML *
+extern GtkWidget *xkb_layout_preview_create_widget (GtkBuilder *
 						    chooser_dialog);
 
-extern void xkb_layout_preview_update (GladeXML * chooser_dialog);
+extern void xkb_layout_preview_update (GtkBuilder * chooser_dialog);
 
 extern void xkb_layout_preview_set_drawing_layout (GtkWidget * kbdraw,
 						   const gchar * id);
 
-extern gchar *xkb_layout_chooser_get_selected_id (GladeXML *
+extern gchar *xkb_layout_chooser_get_selected_id (GtkBuilder *
 						  chooser_dialog);
 
 G_END_DECLS
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkblt.c b/capplets/keyboard/gnome-keyboard-properties-xkblt.c
index a64efc9..4da5aaf 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkblt.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkblt.c
@@ -26,7 +26,6 @@
 #endif
 
 #include <gconf/gconf-client.h>
-#include <glade/glade.h>
 #include <glib/gi18n.h>
 
 #include <libgnomekbd/gkbd-desktop-config.h>
@@ -40,6 +39,9 @@
 #define SEL_LAYOUT_TREE_COL_DEFAULT 1
 #define SEL_LAYOUT_TREE_COL_ID 2
 
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+
 static int idx2select = -1;
 static int max_selected_layouts = -1;
 static int default_group = -1;
@@ -61,7 +63,7 @@ clear_xkb_elements_list (GSList * list)
 }
 
 static gint
-find_selected_layout_idx (GladeXML * dialog)
+find_selected_layout_idx (GtkBuilder * dialog)
 {
 	GtkTreeSelection *selection =
 	    gtk_tree_view_get_selection (GTK_TREE_VIEW
@@ -122,7 +124,7 @@ save_default_group (int default_group)
 
 static void
 def_group_in_ui_changed (GtkCellRendererToggle * cell_renderer,
-			 gchar * path, GladeXML * dialog)
+			 gchar * path, GtkBuilder * dialog)
 {
 	GtkTreePath *chpath = gtk_tree_path_new_from_string (path);
 	int new_default_group = -1;
@@ -141,7 +143,7 @@ def_group_in_ui_changed (GtkCellRendererToggle * cell_renderer,
 static void
 def_group_in_gconf_changed (GConfClient * client,
 			    guint cnxn_id,
-			    GConfEntry * entry, GladeXML * dialog)
+			    GConfEntry * entry, GtkBuilder * dialog)
 {
 	GConfValue *value = gconf_entry_get_value (entry);
 
@@ -177,7 +179,7 @@ def_group_in_gconf_changed (GConfClient * client,
 }
 
 static void
-xkb_layouts_enable_disable_buttons (GladeXML * dialog)
+xkb_layouts_enable_disable_buttons (GtkBuilder * dialog)
 {
 	GtkWidget *add_layout_btn = WID ("xkb_layouts_add");
 	GtkWidget *print_layout_btn = WID ("xkb_layouts_print");
@@ -225,7 +227,7 @@ xkb_layouts_create_default_layout_column ()
 }
 
 void
-xkb_layouts_enable_disable_default (GladeXML * dialog, gboolean enable)
+xkb_layouts_enable_disable_default (GtkBuilder * dialog, gboolean enable)
 {
 	GtkWidget *tree_view = WID ("xkb_layouts_selected");
 
@@ -252,7 +254,7 @@ xkb_layouts_enable_disable_default (GladeXML * dialog, gboolean enable)
 static void
 xkb_layouts_dnd_data_get (GtkWidget * widget, GdkDragContext * dc,
 			  GtkSelectionData * selection_data, guint info,
-			  guint t, GladeXML * dialog)
+			  guint t, GtkBuilder * dialog)
 {
 	/* Storing the value into selection -
 	 * while it is actually not used
@@ -267,7 +269,7 @@ static void
 xkb_layouts_dnd_data_received (GtkWidget * widget, GdkDragContext * dc,
 			       gint x, gint y,
 			       GtkSelectionData * selection_data,
-			       guint info, guint t, GladeXML * dialog)
+			       guint info, guint t, GtkBuilder * dialog)
 {
 	gint sidx = find_selected_layout_idx (dialog);
 	GtkWidget *tree_view = WID ("xkb_layouts_selected");
@@ -310,7 +312,7 @@ xkb_layouts_dnd_data_received (GtkWidget * widget, GdkDragContext * dc,
 }
 
 void
-xkb_layouts_prepare_selected_tree (GladeXML * dialog,
+xkb_layouts_prepare_selected_tree (GtkBuilder * dialog,
 				   GConfChangeSet * changeset)
 {
 	GtkListStore *list_store =
@@ -388,7 +390,7 @@ xkb_layout_description_utf8 (const gchar * visible)
 }
 
 void
-xkb_layouts_fill_selected_tree (GladeXML * dialog)
+xkb_layouts_fill_selected_tree (GtkBuilder * dialog)
 {
 	GConfEntry *gce;
 	GError *err = NULL;
@@ -452,13 +454,13 @@ xkb_layouts_fill_selected_tree (GladeXML * dialog)
 }
 
 static void
-add_selected_layout (GtkWidget * button, GladeXML * dialog)
+add_selected_layout (GtkWidget * button, GtkBuilder * dialog)
 {
 	xkb_layout_choose (dialog);
 }
 
 static void
-print_selected_layout (GtkWidget * button, GladeXML * dialog)
+print_selected_layout (GtkWidget * button, GtkBuilder * dialog)
 {
 	gint idx = find_selected_layout_idx (dialog);
 
@@ -484,7 +486,7 @@ print_selected_layout (GtkWidget * button, GladeXML * dialog)
 }
 
 static void
-remove_selected_layout (GtkWidget * button, GladeXML * dialog)
+remove_selected_layout (GtkWidget * button, GtkBuilder * dialog)
 {
 	gint idx = find_selected_layout_idx (dialog);
 
@@ -511,7 +513,7 @@ remove_selected_layout (GtkWidget * button, GladeXML * dialog)
 }
 
 void
-xkb_layouts_register_buttons_handlers (GladeXML * dialog)
+xkb_layouts_register_buttons_handlers (GtkBuilder * dialog)
 {
 	g_signal_connect (G_OBJECT (WID ("xkb_layouts_add")), "clicked",
 			  G_CALLBACK (add_selected_layout), dialog);
@@ -524,14 +526,14 @@ xkb_layouts_register_buttons_handlers (GladeXML * dialog)
 static void
 xkb_layouts_update_list (GConfClient * client,
 			 guint cnxn_id, GConfEntry * entry,
-			 GladeXML * dialog)
+			 GtkBuilder * dialog)
 {
 	xkb_layouts_fill_selected_tree (dialog);
 	enable_disable_restoring (dialog);
 }
 
 void
-xkb_layouts_register_gconf_listener (GladeXML * dialog)
+xkb_layouts_register_gconf_listener (GtkBuilder * dialog)
 {
 	gconf_client_notify_add (xkb_gconf_client,
 				 GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS,
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkbltadd.c b/capplets/keyboard/gnome-keyboard-properties-xkbltadd.c
index c97d55c..6cfe5f7 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkbltadd.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkbltadd.c
@@ -27,14 +27,15 @@
 
 #include <string.h>
 
-#include <glade/glade.h>
-
 #include <libgnomekbd/gkbd-keyboard-drawing.h>
 #include <libgnomekbd/gkbd-util.h>
 
 #include "capplet-util.h"
 #include "gnome-keyboard-properties-xkb.h"
 
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+
 #define GROUP_SWITCHERS_GROUP "grp"
 #define DEFAULT_GROUP_SWITCH "grp:alts_toggle"
 #define DEFAULT_VARIANT_ID "__default__"
@@ -62,7 +63,7 @@ static void
 
 
 
-xkb_layout_chooser_available_layouts_fill (GladeXML * chooser_dialog,
+xkb_layout_chooser_available_layouts_fill (GtkBuilder * chooser_dialog,
 					   const gchar cblid[],
 					   const gchar cbvid[],
 					   LayoutIterFunc layout_iterator,
@@ -78,7 +79,7 @@ static void
 
 
 
-xkb_layout_chooser_available_language_variants_fill (GladeXML *
+xkb_layout_chooser_available_language_variants_fill (GtkBuilder *
 						     chooser_dialog);
 
 static void
@@ -89,7 +90,7 @@ static void
 
 
 
-xkb_layout_chooser_available_country_variants_fill (GladeXML *
+xkb_layout_chooser_available_country_variants_fill (GtkBuilder *
 						    chooser_dialog);
 
 static void
@@ -178,7 +179,7 @@ xkb_layout_chooser_add_country_to_available_countries (XklConfigRegistry *
 }
 
 static void
-xkb_layout_chooser_enable_disable_buttons (GladeXML * chooser_dialog)
+xkb_layout_chooser_enable_disable_buttons (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *cbv =
 	    CWID (gtk_notebook_get_current_page
@@ -198,14 +199,14 @@ xkb_layout_chooser_enable_disable_buttons (GladeXML * chooser_dialog)
 }
 
 static void
-xkb_layout_chooser_available_variant_changed (GladeXML * chooser_dialog)
+xkb_layout_chooser_available_variant_changed (GtkBuilder * chooser_dialog)
 {
 	xkb_layout_preview_update (chooser_dialog);
 	xkb_layout_chooser_enable_disable_buttons (chooser_dialog);
 }
 
 static void
-xkb_layout_chooser_available_language_changed (GladeXML * chooser_dialog)
+xkb_layout_chooser_available_language_changed (GtkBuilder * chooser_dialog)
 {
 	xkb_layout_chooser_available_language_variants_fill
 	    (chooser_dialog);
@@ -213,7 +214,7 @@ xkb_layout_chooser_available_language_changed (GladeXML * chooser_dialog)
 }
 
 static void
-xkb_layout_chooser_available_country_changed (GladeXML * chooser_dialog)
+xkb_layout_chooser_available_country_changed (GtkBuilder * chooser_dialog)
 {
 	xkb_layout_chooser_available_country_variants_fill
 	    (chooser_dialog);
@@ -222,13 +223,13 @@ xkb_layout_chooser_available_country_changed (GladeXML * chooser_dialog)
 
 static void
 xkb_layout_chooser_page_changed (GtkWidget * notebook, GtkWidget * page,
-				 gint page_num, GladeXML * chooser_dialog)
+				 gint page_num, GtkBuilder * chooser_dialog)
 {
 	xkb_layout_chooser_available_variant_changed (chooser_dialog);
 }
 
 static void
-xkb_layout_chooser_available_language_variants_fill (GladeXML *
+xkb_layout_chooser_available_language_variants_fill (GtkBuilder *
 						     chooser_dialog)
 {
 	GtkWidget *cbl = CWID ("xkb_languages_available");
@@ -271,7 +272,7 @@ xkb_layout_chooser_available_language_variants_fill (GladeXML *
 }
 
 static void
-xkb_layout_chooser_available_country_variants_fill (GladeXML *
+xkb_layout_chooser_available_country_variants_fill (GtkBuilder *
 						    chooser_dialog)
 {
 	GtkWidget *cbl = CWID ("xkb_countries_available");
@@ -313,7 +314,7 @@ xkb_layout_chooser_available_country_variants_fill (GladeXML *
 }
 
 static void
-xkb_layout_chooser_available_layouts_fill (GladeXML *
+xkb_layout_chooser_available_layouts_fill (GtkBuilder *
 					   chooser_dialog,
 					   const gchar cblid[],
 					   const gchar cbvid[],
@@ -410,7 +411,7 @@ xkl_layout_chooser_add_default_switcher_if_necessary (GSList *
 }
 
 static void
-xkb_layout_chooser_print (GladeXML * chooser_dialog)
+xkb_layout_chooser_print (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *chooser = CWID ("xkb_layout_chooser");
 	GtkWidget *kbdraw =
@@ -428,7 +429,7 @@ xkb_layout_chooser_print (GladeXML * chooser_dialog)
 
 static void
 xkb_layout_chooser_response (GtkDialog * dialog,
-			     gint response, GladeXML * chooser_dialog)
+			     gint response, GtkBuilder * chooser_dialog)
 {
 	GdkRectangle rect;
 
@@ -465,12 +466,14 @@ xkb_layout_chooser_response (GtkDialog * dialog,
 }
 
 void
-xkb_layout_choose (GladeXML * dialog)
+xkb_layout_choose (GtkBuilder * dialog)
 {
-	GladeXML *chooser_dialog =
-	    glade_xml_new (GNOMECC_GLADE_DIR
-			   "/gnome-keyboard-properties.glade",
-			   "xkb_layout_chooser", NULL);
+	GtkBuilder *chooser_dialog;
+    
+    chooser_dialog = gtk_builder_new ();
+    gtk_builder_add_from_file (chooser_dialog, GNOMECC_UI_DIR
+                               "/gnome-keyboard-properties-layout-chooser.ui",
+                               NULL);
 	GtkWidget *chooser = CWID ("xkb_layout_chooser");
 	GtkWidget *lang_chooser = CWID ("xkb_languages_available");
 	GtkWidget *notebook = CWID ("choosers_nb");
@@ -566,7 +569,7 @@ xkb_layout_choose (GladeXML * dialog)
 }
 
 gchar *
-xkb_layout_chooser_get_selected_id (GladeXML * chooser_dialog)
+xkb_layout_chooser_get_selected_id (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *cbv =
 	    CWID (gtk_notebook_get_current_page
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkbmc.c b/capplets/keyboard/gnome-keyboard-properties-xkbmc.c
index bd9fc8e..094978a 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkbmc.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkbmc.c
@@ -27,19 +27,21 @@
 
 #include <gdk/gdkx.h>
 #include <gconf/gconf-client.h>
-#include <glade/glade.h>
 #include <glib/gi18n.h>
 
 #include "capplet-util.h"
 
 #include "gnome-keyboard-properties-xkb.h"
 
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+
 static gchar *current_model_name = NULL;
 static gchar *current_vendor_name = NULL;
 
-static void fill_models_list (GladeXML * chooser_dialog);
+static void fill_models_list (GtkBuilder * chooser_dialog);
 
-static gboolean fill_vendors_list (GladeXML * chooser_dialog);
+static gboolean fill_vendors_list (GtkBuilder * chooser_dialog);
 
 static GtkTreePath *
 gtk_list_store_find_entry (GtkListStore * list_store,
@@ -129,7 +131,7 @@ add_model_to_list (XklConfigRegistry * config_registry,
 
 static void
 xkb_model_chooser_change_vendor_sel (GtkTreeSelection * selection,
-				     GladeXML * chooser_dialog)
+				     GtkBuilder * chooser_dialog)
 {
 	GtkTreeIter iter;
 	GtkTreeModel *list_store = NULL;
@@ -151,7 +153,7 @@ xkb_model_chooser_change_vendor_sel (GtkTreeSelection * selection,
 
 static void
 xkb_model_chooser_change_model_sel (GtkTreeSelection * selection,
-				    GladeXML * chooser_dialog)
+				    GtkBuilder * chooser_dialog)
 {
 	gboolean anysel =
 	    gtk_tree_selection_get_selected (selection, NULL, NULL);
@@ -161,7 +163,7 @@ xkb_model_chooser_change_model_sel (GtkTreeSelection * selection,
 }
 
 static void
-prepare_vendors_list (GladeXML * chooser_dialog)
+prepare_vendors_list (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *vendors_list = CWID ("vendors_list");
 	GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
@@ -176,7 +178,7 @@ prepare_vendors_list (GladeXML * chooser_dialog)
 }
 
 static gboolean
-fill_vendors_list (GladeXML * chooser_dialog)
+fill_vendors_list (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *vendors_list = CWID ("vendors_list");
 	GtkListStore *list_store = gtk_list_store_new (1, G_TYPE_STRING);
@@ -227,7 +229,7 @@ fill_vendors_list (GladeXML * chooser_dialog)
 }
 
 static void
-prepare_models_list (GladeXML * chooser_dialog)
+prepare_models_list (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *models_list = CWID ("models_list");
 	GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
@@ -242,7 +244,7 @@ prepare_models_list (GladeXML * chooser_dialog)
 }
 
 static void
-fill_models_list (GladeXML * chooser_dialog)
+fill_models_list (GtkBuilder * chooser_dialog)
 {
 	GtkWidget *models_list = CWID ("models_list");
 	GtkTreeIter iter;
@@ -286,7 +288,7 @@ fill_models_list (GladeXML * chooser_dialog)
 
 static void
 xkb_model_chooser_response (GtkDialog * dialog,
-			    gint response, GladeXML * chooser_dialog)
+			    gint response, GtkBuilder * chooser_dialog)
 {
 	if (response == GTK_RESPONSE_OK) {
 		GtkWidget *models_list = CWID ("models_list");
@@ -310,13 +312,16 @@ xkb_model_chooser_response (GtkDialog * dialog,
 }
 
 void
-choose_model (GladeXML * dialog)
+choose_model (GtkBuilder * dialog)
 {
-	GladeXML *chooser_dialog =
-	    glade_xml_new (GNOMECC_GLADE_DIR
-			   "/gnome-keyboard-properties.glade",
-			   "xkb_model_chooser", NULL);
-	GtkWidget *chooser = CWID ("xkb_model_chooser");
+	GtkBuilder *chooser_dialog;
+    GtkWidget *chooser;
+    
+    chooser_dialog = gtk_builder_new ();
+    gtk_builder_add_from_file (chooser_dialog, GNOMECC_UI_DIR
+                               "/gnome-keyboard-properties-model-chooser.ui",
+                               NULL);
+	chooser = CWID ("xkb_model_chooser");
 	gtk_window_set_transient_for (GTK_WINDOW (chooser),
 				      GTK_WINDOW (WID
 						  ("keyboard_dialog")));
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkbot.c b/capplets/keyboard/gnome-keyboard-properties-xkbot.c
index f1cf088..d0d3e58 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkbot.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkbot.c
@@ -29,13 +29,15 @@
 #include <glib/gi18n.h>
 #include <string.h>
 #include <gconf/gconf-client.h>
-#include <glade/glade.h>
 
 #include "capplet-util.h"
 
 #include "gnome-keyboard-properties-xkb.h"
 
-static GladeXML *chooser_dialog = NULL;
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+
+static GtkBuilder *chooser_dialog = NULL;
 static const char *current1st_level_id = NULL;
 static GSList *option_checks_list = NULL;
 static GtkWidget *current_none_radio = NULL;
@@ -211,7 +213,7 @@ option_toggled_cb (GtkWidget * checkbutton, gpointer data)
    the top of this file. */
 static void
 xkb_options_add_option (XklConfigRegistry * config_registry,
-			XklConfigItem * config_item, GladeXML * dialog)
+			XklConfigItem * config_item, GtkBuilder * dialog)
 {
 	GtkWidget *option_check;
 	gchar *utf_option_name = xci_desc_to_utf8 (config_item);
@@ -302,7 +304,7 @@ xkb_option_checks_compare (GtkWidget * chk1, GtkWidget * chk2)
    add widgets for all the options in the group. */
 static void
 xkb_options_add_group (XklConfigRegistry * config_registry,
-		       XklConfigItem * config_item, GladeXML * dialog)
+		       XklConfigItem * config_item, GtkBuilder * dialog)
 {
 	GtkWidget *align, *vbox, *option_check;
 	gboolean allow_multiple_selection =
@@ -379,7 +381,7 @@ xkb_options_expanders_compare (GtkWidget * expander1,
 
 /* Create widgets to represent the options made available by the backend */
 void
-xkb_options_load_options (GladeXML * dialog)
+xkb_options_load_options (GtkBuilder * dialog)
 {
 	GtkWidget *opts_vbox = WID ("options_vbox");
 	GSList *expanders_list;
@@ -439,14 +441,14 @@ chooser_response_cb (GtkDialog * dialog, gint response, gpointer data)
 
 /* Create popup dialog */
 void
-xkb_options_popup_dialog (GladeXML * dialog)
+xkb_options_popup_dialog (GtkBuilder * dialog)
 {
 	GtkWidget *chooser;
 
-	chooser_dialog =
-	    glade_xml_new (GNOMECC_GLADE_DIR
-			   "/gnome-keyboard-properties.glade",
-			   "xkb_options_dialog", NULL);
+	chooser_dialog = gtk_builder_new ();
+    gtk_builder_add_from_file (chooser_dialog, GNOMECC_UI_DIR
+                               "/gnome-keyboard-properties-options-dialog.ui",
+                               NULL);
 
 	chooser = CWID ("xkb_options_dialog");
 	gtk_window_set_transient_for (GTK_WINDOW (chooser),
@@ -476,7 +478,7 @@ xkb_options_update_option_counters (XklConfigRegistry * config_registry,
 /* Respond to a change in the xkb gconf settings */
 static void
 xkb_options_update (GConfClient * client,
-		    guint cnxn_id, GConfEntry * entry, GladeXML * dialog)
+		    guint cnxn_id, GConfEntry * entry, GtkBuilder * dialog)
 {
 	/* Updating options is handled by gconf notifies for each widget
 	   This is here to avoid calling it N_OPTIONS times for each gconf
@@ -507,7 +509,7 @@ xkb_options_update (GConfClient * client,
 }
 
 void
-xkb_options_register_gconf_listener (GladeXML * dialog)
+xkb_options_register_gconf_listener (GtkBuilder * dialog)
 {
 	gconf_client_notify_add (xkb_gconf_client,
 				 GKBD_KEYBOARD_CONFIG_KEY_OPTIONS,
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkbpv.c b/capplets/keyboard/gnome-keyboard-properties-xkbpv.c
index 4151a52..225d8f5 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkbpv.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkbpv.c
@@ -25,8 +25,6 @@
 #  include <config.h>
 #endif
 
-#include <glade/glade.h>
-
 #include <libgnomekbd/gkbd-keyboard-drawing.h>
 
 #include "capplet-util.h"
@@ -57,7 +55,7 @@ static GkbdKeyboardDrawingGroupLevel *pGroupsLevels[] = {
 };
 
 GtkWidget *
-xkb_layout_preview_create_widget (GladeXML * chooserDialog)
+xkb_layout_preview_create_widget (GtkBuilder * chooserDialog)
 {
 	GtkWidget *kbdraw = gkbd_keyboard_drawing_new ();
 
@@ -67,7 +65,7 @@ xkb_layout_preview_create_widget (GladeXML * chooserDialog)
 }
 
 void
-xkb_layout_preview_update (GladeXML * chooser_dialog)
+xkb_layout_preview_update (GtkBuilder * chooser_dialog)
 {
 #ifdef HAVE_X11_EXTENSIONS_XKB_H
 	GtkWidget *chooser = CWID ("xkb_layout_chooser");
diff --git a/capplets/keyboard/gnome-keyboard-properties.c b/capplets/keyboard/gnome-keyboard-properties.c
index f468e16..3aadf2e 100644
--- a/capplets/keyboard/gnome-keyboard-properties.c
+++ b/capplets/keyboard/gnome-keyboard-properties.c
@@ -29,7 +29,6 @@
 #endif
 
 #include <gconf/gconf-client.h>
-#include <glade/glade.h>
 
 #include "capplet-util.h"
 #include "gconf-property-editor.h"
@@ -39,22 +38,25 @@
 #include "gnome-keyboard-properties-a11y.h"
 #include "gnome-keyboard-properties-xkb.h"
 
+#undef WID
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
+
 enum {
 	RESPONSE_APPLY = 1,
 	RESPONSE_CLOSE
 };
 
-static GladeXML *
+static GtkBuilder *
 create_dialog (void)
 {
-	GladeXML *dialog;
+	GtkBuilder *dialog;
 	GtkSizeGroup *size_group;
 	GtkWidget *image;
 
-	dialog =
-	    glade_xml_new (GNOMECC_GLADE_DIR
-			   "/gnome-keyboard-properties.glade",
-			   "keyboard_dialog", NULL);
+	dialog = gtk_builder_new ();
+    gtk_builder_add_from_file (dialog, GNOMECC_UI_DIR
+                               "/gnome-keyboard-properties-dialog.ui",
+                               NULL);
 
 	size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 	gtk_size_group_add_widget (size_group, WID ("repeat_slow_label"));
@@ -120,7 +122,7 @@ dialog_response (GtkWidget * widget,
 }
 
 static void
-setup_dialog (GladeXML * dialog, GConfChangeSet * changeset)
+setup_dialog (GtkBuilder * dialog, GConfChangeSet * changeset)
 {
 	GObject *peditor;
 	gchar *monitor;
@@ -193,7 +195,7 @@ main (int argc, char **argv)
 {
 	GConfClient *client;
 	GConfChangeSet *changeset;
-	GladeXML *dialog;
+	GtkBuilder *dialog;
 	GOptionContext *context;
 
 	static gboolean apply_only = FALSE;
