[gnome-settings-daemon] plugins: Simplify plugin creation with a huge macro



commit 5149940c0a51b30e7c947e4800ded3648545ce97
Author: Bastien Nocera <hadess hadess net>
Date:   Thu Dec 13 16:43:16 2012 +0100

    plugins: Simplify plugin creation with a huge macro
    
    Shaves about 2.7k lines of code.

 gnome-settings-daemon/gnome-settings-plugin.h      |   80 ++++++++++++++++++-
 plugins/a11y-keyboard/gsd-a11y-keyboard-plugin.c   |   78 +-------------------
 plugins/a11y-keyboard/gsd-a11y-keyboard-plugin.h   |   59 --------------
 plugins/a11y-settings/gsd-a11y-settings-plugin.c   |   77 +-------------------
 plugins/a11y-settings/gsd-a11y-settings-plugin.h   |   59 --------------
 plugins/background/gsd-background-plugin.c         |   77 +-------------------
 plugins/background/gsd-background-plugin.h         |   59 --------------
 plugins/clipboard/gsd-clipboard-plugin.c           |   77 +-------------------
 plugins/clipboard/gsd-clipboard-plugin.h           |   59 --------------
 plugins/color/gsd-color-plugin.c                   |   77 +-------------------
 plugins/color/gsd-color-plugin.h                   |   60 ---------------
 plugins/cursor/gsd-cursor-plugin.c                 |   77 +-------------------
 plugins/cursor/gsd-cursor-plugin.h                 |   59 --------------
 plugins/dummy/gsd-dummy-plugin.c                   |   77 +-------------------
 plugins/dummy/gsd-dummy-plugin.h                   |   59 --------------
 plugins/housekeeping/gsd-housekeeping-plugin.c     |   77 +-------------------
 plugins/housekeeping/gsd-housekeeping-plugin.h     |   57 --------------
 plugins/keyboard/gsd-keyboard-plugin.c             |   77 +-------------------
 plugins/keyboard/gsd-keyboard-plugin.h             |   59 --------------
 plugins/media-keys/gsd-media-keys-plugin.c         |   77 +-------------------
 plugins/media-keys/gsd-media-keys-plugin.h         |   59 --------------
 plugins/mouse/gsd-mouse-plugin.c                   |   77 +-------------------
 plugins/mouse/gsd-mouse-plugin.h                   |   59 --------------
 plugins/orientation/gsd-orientation-plugin.c       |   77 +-------------------
 plugins/orientation/gsd-orientation-plugin.h       |   60 ---------------
 plugins/power/gsd-power-plugin.c                   |   77 +-------------------
 plugins/power/gsd-power-plugin.h                   |   59 --------------
 .../gsd-print-notifications-plugin.c               |   75 +------------------
 .../gsd-print-notifications-plugin.h               |   59 --------------
 .../gsd-screensaver-proxy-plugin.c                 |   77 +-------------------
 .../gsd-screensaver-proxy-plugin.h                 |   59 --------------
 plugins/sound/gsd-sound-plugin.c                   |   73 +------------------
 plugins/sound/gsd-sound-plugin.h                   |   59 --------------
 plugins/updates/gsd-updates-plugin.c               |   73 +------------------
 plugins/updates/gsd-updates-plugin.h               |   59 --------------
 plugins/wacom/gsd-wacom-plugin.c                   |   77 +-------------------
 plugins/wacom/gsd-wacom-plugin.h                   |   60 ---------------
 plugins/xrandr/gsd-xrandr-plugin.c                 |   77 +-------------------
 plugins/xrandr/gsd-xrandr-plugin.h                 |   59 --------------
 plugins/xsettings/gsd-xsettings-plugin.c           |   77 +-------------------
 plugins/xsettings/gsd-xsettings-plugin.h           |   59 --------------
 41 files changed, 95 insertions(+), 2697 deletions(-)
---
diff --git a/gnome-settings-daemon/gnome-settings-plugin.h b/gnome-settings-daemon/gnome-settings-plugin.h
index 03a272a..e10ee0a 100644
--- a/gnome-settings-daemon/gnome-settings-plugin.h
+++ b/gnome-settings-daemon/gnome-settings-plugin.h
@@ -58,22 +58,92 @@ void             gnome_settings_plugin_deactivate         (GnomeSettingsPlugin *
  * use: GNOME_SETTINGS_PLUGIN_REGISTER (PluginName, plugin_name)
  */
 #define GNOME_SETTINGS_PLUGIN_REGISTER(PluginName, plugin_name)                \
-        G_DEFINE_DYNAMIC_TYPE (PluginName,                                     \
-                               plugin_name,                                    \
+typedef struct {                                                               \
+        PluginName##Manager *manager;                                          \
+} PluginName##PluginPrivate;                                                   \
+typedef struct {                                                               \
+	GnomeSettingsPlugin    parent;                                         \
+	PluginName##PluginPrivate *priv;                                       \
+} PluginName##Plugin;                                                          \
+typedef struct {                                                               \
+	GnomeSettingsPluginClass parent_class;                                 \
+} PluginName##PluginClass;                                                     \
+GType plugin_name##_plugin_get_type (void) G_GNUC_CONST;                       \
+G_MODULE_EXPORT GType register_gnome_settings_plugin (GTypeModule *module);    \
+                                                                               \
+        G_DEFINE_DYNAMIC_TYPE (PluginName##Plugin,                             \
+                               plugin_name##_plugin,                           \
                                GNOME_TYPE_SETTINGS_PLUGIN)                     \
                                                                                \
 G_MODULE_EXPORT GType                                                          \
 register_gnome_settings_plugin (GTypeModule *type_module)                      \
 {                                                                              \
-        plugin_name##_register_type (type_module);                             \
+        plugin_name##_plugin_register_type (type_module);                      \
+                                                                               \
+        return plugin_name##_plugin_get_type();                                \
+}                                                                              \
                                                                                \
-        return plugin_name##_get_type();                                       \
+static void                                                                    \
+plugin_name##_plugin_class_finalize (PluginName##PluginClass * plugin_name##_class) \
+{                                                                              \
 }                                                                              \
                                                                                \
 static void                                                                    \
-plugin_name##_class_finalize (PluginName##Class *plugin_name##_class)          \
+plugin_name##_plugin_init (PluginName##Plugin *plugin)                         \
 {                                                                              \
+        plugin->priv = G_TYPE_INSTANCE_GET_PRIVATE ((plugin),                  \
+                plugin_name##_plugin_get_type(), PluginName##PluginPrivate);   \
+        g_debug ("PluginName## initializing");                                 \
+        plugin->priv->manager = plugin_name##_manager_new ();                  \
 }                                                                              \
+                                                                               \
+static void                                                                    \
+plugin_name##_plugin_finalize (GObject *object)                                \
+{                                                                              \
+        PluginName##Plugin *plugin;                                            \
+        g_return_if_fail (object != NULL);                                     \
+        g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (object, plugin_name##_plugin_get_type())); \
+        g_debug ("PluginName## finalizing");                                   \
+        plugin = G_TYPE_CHECK_INSTANCE_CAST ((object), plugin_name##_plugin_get_type(), PluginName##Plugin); \
+        g_return_if_fail (plugin->priv != NULL);                               \
+        if (plugin->priv->manager != NULL)                                     \
+                g_object_unref (plugin->priv->manager);                        \
+        G_OBJECT_CLASS (plugin_name##_plugin_parent_class)->finalize (object);        \
+}                                                                              \
+                                                                               \
+static void                                                                    \
+impl_activate (GnomeSettingsPlugin *plugin)                                    \
+{                                                                              \
+        GError *error = NULL;                                                  \
+        PluginName##Plugin *plugin_cast;                                       \
+        g_debug ("Activating %s plugin", G_STRINGIFY(plugin_name));            \
+        plugin_cast = G_TYPE_CHECK_INSTANCE_CAST ((plugin), plugin_name##_plugin_get_type(), PluginName##Plugin); \
+        if (!plugin_name##_manager_start (plugin_cast->priv->manager, &error)) { \
+                g_warning ("Unable to start %s manager: %s", G_STRINGIFY(plugin_name), error->message); \
+                g_error_free (error);                                          \
+        }                                                                      \
+}                                                                              \
+                                                                               \
+static void                                                                    \
+impl_deactivate (GnomeSettingsPlugin *plugin)                                  \
+{                                                                              \
+        PluginName##Plugin *plugin_cast;                                       \
+        plugin_cast = G_TYPE_CHECK_INSTANCE_CAST ((plugin), plugin_name##_plugin_get_type(), PluginName##Plugin); \
+        g_debug ("Deactivating %s plugin", G_STRINGIFY (plugin_name));         \
+        plugin_name##_manager_stop (plugin_cast->priv->manager); \
+}                                                                              \
+                                                                               \
+static void                                                                    \
+plugin_name##_plugin_class_init (PluginName##PluginClass *klass)               \
+{                                                                              \
+        GObjectClass           *object_class = G_OBJECT_CLASS (klass);         \
+        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass); \
+                                                                               \
+        object_class->finalize = plugin_name##_plugin_finalize;                \
+        plugin_class->activate = impl_activate;                                \
+        plugin_class->deactivate = impl_deactivate;                            \
+        g_type_class_add_private (klass, sizeof (PluginName##PluginPrivate));  \
+}
 
 G_END_DECLS
 
diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-plugin.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-plugin.c
index bb2f80b..ecf7488 100644
--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-plugin.c
+++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-plugin.c
@@ -24,82 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-a11y-keyboard-plugin.h"
 #include "gsd-a11y-keyboard-manager.h"
 
-struct GsdA11yKeyboardPluginPrivate {
-        GsdA11yKeyboardManager *manager;
-};
-
-#define GSD_A11Y_KEYBOARD_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_A11Y_KEYBOARD_PLUGIN, GsdA11yKeyboardPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdA11yKeyboardPlugin, gsd_a11y_keyboard_plugin)
-
-static void
-gsd_a11y_keyboard_plugin_init (GsdA11yKeyboardPlugin *plugin)
-{
-        plugin->priv = GSD_A11Y_KEYBOARD_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdA11yKeyboardPlugin initializing");
-
-        plugin->priv->manager = gsd_a11y_keyboard_manager_new ();
-}
-
-static void
-gsd_a11y_keyboard_plugin_finalize (GObject *object)
-{
-        GsdA11yKeyboardPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_A11Y_KEYBOARD_PLUGIN (object));
-
-        g_debug ("GsdA11yKeyboardPlugin finalizing");
-
-        plugin = GSD_A11Y_KEYBOARD_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_a11y_keyboard_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating a11y_keyboard plugin");
-
-        error = NULL;
-        res = gsd_a11y_keyboard_manager_start (GSD_A11Y_KEYBOARD_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start a11y_keyboard manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating a11y_keyboard plugin");
-        gsd_a11y_keyboard_manager_stop (GSD_A11Y_KEYBOARD_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_a11y_keyboard_plugin_class_init (GsdA11yKeyboardPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_a11y_keyboard_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdA11yKeyboardPluginPrivate));
-}
-
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdA11yKeyboard, gsd_a11y_keyboard)
diff --git a/plugins/a11y-settings/gsd-a11y-settings-plugin.c b/plugins/a11y-settings/gsd-a11y-settings-plugin.c
index cb1391d..4eacaa4 100644
--- a/plugins/a11y-settings/gsd-a11y-settings-plugin.c
+++ b/plugins/a11y-settings/gsd-a11y-settings-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-a11y-settings-plugin.h"
 #include "gsd-a11y-settings-manager.h"
 
-struct GsdA11ySettingsPluginPrivate {
-        GsdA11ySettingsManager *manager;
-};
-
-#define GSD_A11Y_SETTINGS_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_A11Y_SETTINGS_PLUGIN, GsdA11ySettingsPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdA11ySettingsPlugin, gsd_a11y_settings_plugin)
-
-static void
-gsd_a11y_settings_plugin_init (GsdA11ySettingsPlugin *plugin)
-{
-        plugin->priv = GSD_A11Y_SETTINGS_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdA11ySettingsPlugin initializing");
-
-        plugin->priv->manager = gsd_a11y_settings_manager_new ();
-}
-
-static void
-gsd_a11y_settings_plugin_finalize (GObject *object)
-{
-        GsdA11ySettingsPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_A11Y_SETTINGS_PLUGIN (object));
-
-        g_debug ("GsdA11ySettingsPlugin finalizing");
-
-        plugin = GSD_A11Y_SETTINGS_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_a11y_settings_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating a11y-settings plugin");
-
-        error = NULL;
-        res = gsd_a11y_settings_manager_start (GSD_A11Y_SETTINGS_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start a11y-settings manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating a11y-settings plugin");
-        gsd_a11y_settings_manager_stop (GSD_A11Y_SETTINGS_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_a11y_settings_plugin_class_init (GsdA11ySettingsPluginClass *klass)
-{
-        GObjectClass             *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_a11y_settings_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdA11ySettingsPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdA11ySettings, gsd_a11y_settings)
diff --git a/plugins/background/gsd-background-plugin.c b/plugins/background/gsd-background-plugin.c
index 46e98be..cb9f059 100644
--- a/plugins/background/gsd-background-plugin.c
+++ b/plugins/background/gsd-background-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-background-plugin.h"
 #include "gsd-background-manager.h"
 
-struct GsdBackgroundPluginPrivate {
-        GsdBackgroundManager *manager;
-};
-
-#define GSD_BACKGROUND_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_BACKGROUND_PLUGIN, GsdBackgroundPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdBackgroundPlugin, gsd_background_plugin)
-
-static void
-gsd_background_plugin_init (GsdBackgroundPlugin *plugin)
-{
-        plugin->priv = GSD_BACKGROUND_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdBackgroundPlugin initializing");
-
-        plugin->priv->manager = gsd_background_manager_new ();
-}
-
-static void
-gsd_background_plugin_finalize (GObject *object)
-{
-        GsdBackgroundPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_BACKGROUND_PLUGIN (object));
-
-        g_debug ("GsdBackgroundPlugin finalizing");
-
-        plugin = GSD_BACKGROUND_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_background_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating background plugin");
-
-        error = NULL;
-        res = gsd_background_manager_start (GSD_BACKGROUND_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start background manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating background plugin");
-        gsd_background_manager_stop (GSD_BACKGROUND_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_background_plugin_class_init (GsdBackgroundPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_background_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdBackgroundPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdBackground, gsd_background)
diff --git a/plugins/clipboard/gsd-clipboard-plugin.c b/plugins/clipboard/gsd-clipboard-plugin.c
index 9b3b05c..9c457a7 100644
--- a/plugins/clipboard/gsd-clipboard-plugin.c
+++ b/plugins/clipboard/gsd-clipboard-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-clipboard-plugin.h"
 #include "gsd-clipboard-manager.h"
 
-struct GsdClipboardPluginPrivate {
-        GsdClipboardManager *manager;
-};
-
-#define GSD_CLIPBOARD_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_CLIPBOARD_PLUGIN, GsdClipboardPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdClipboardPlugin, gsd_clipboard_plugin)
-
-static void
-gsd_clipboard_plugin_init (GsdClipboardPlugin *plugin)
-{
-        plugin->priv = GSD_CLIPBOARD_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdClipboardPlugin initializing");
-
-        plugin->priv->manager = gsd_clipboard_manager_new ();
-}
-
-static void
-gsd_clipboard_plugin_finalize (GObject *object)
-{
-        GsdClipboardPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_CLIPBOARD_PLUGIN (object));
-
-        g_debug ("GsdClipboardPlugin finalizing");
-
-        plugin = GSD_CLIPBOARD_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_clipboard_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating clipboard plugin");
-
-        error = NULL;
-        res = gsd_clipboard_manager_start (GSD_CLIPBOARD_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start clipboard manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating clipboard plugin");
-        gsd_clipboard_manager_stop (GSD_CLIPBOARD_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_clipboard_plugin_class_init (GsdClipboardPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_clipboard_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdClipboardPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdClipboard, gsd_clipboard)
diff --git a/plugins/color/gsd-color-plugin.c b/plugins/color/gsd-color-plugin.c
index 8c11546..99f8ebb 100644
--- a/plugins/color/gsd-color-plugin.c
+++ b/plugins/color/gsd-color-plugin.c
@@ -25,81 +25,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-color-plugin.h"
 #include "gsd-color-manager.h"
 
-struct GsdColorPluginPrivate {
-        GsdColorManager *manager;
-};
-
-#define GSD_COLOR_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_COLOR_PLUGIN, GsdColorPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdColorPlugin, gsd_color_plugin)
-
-static void
-gsd_color_plugin_init (GsdColorPlugin *plugin)
-{
-        plugin->priv = GSD_COLOR_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdColorPlugin initializing");
-
-        plugin->priv->manager = gsd_color_manager_new ();
-}
-
-static void
-gsd_color_plugin_finalize (GObject *object)
-{
-        GsdColorPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_COLOR_PLUGIN (object));
-
-        g_debug ("GsdColorPlugin finalizing");
-
-        plugin = GSD_COLOR_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_color_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating color plugin");
-
-        error = NULL;
-        res = gsd_color_manager_start (GSD_COLOR_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start color manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating color plugin");
-        gsd_color_manager_stop (GSD_COLOR_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_color_plugin_class_init (GsdColorPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_color_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdColorPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdColor, gsd_color)
diff --git a/plugins/cursor/gsd-cursor-plugin.c b/plugins/cursor/gsd-cursor-plugin.c
index b903dcf..de9d742 100644
--- a/plugins/cursor/gsd-cursor-plugin.c
+++ b/plugins/cursor/gsd-cursor-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-cursor-plugin.h"
 #include "gsd-cursor-manager.h"
 
-struct GsdCursorPluginPrivate {
-        GsdCursorManager *manager;
-};
-
-#define GSD_CURSOR_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_CURSOR_PLUGIN, GsdCursorPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdCursorPlugin, gsd_cursor_plugin)
-
-static void
-gsd_cursor_plugin_init (GsdCursorPlugin *plugin)
-{
-        plugin->priv = GSD_CURSOR_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdCursorPlugin initializing");
-
-        plugin->priv->manager = gsd_cursor_manager_new ();
-}
-
-static void
-gsd_cursor_plugin_finalize (GObject *object)
-{
-        GsdCursorPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_CURSOR_PLUGIN (object));
-
-        g_debug ("GsdCursorPlugin finalizing");
-
-        plugin = GSD_CURSOR_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_cursor_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating cursor plugin");
-
-        error = NULL;
-        res = gsd_cursor_manager_start (GSD_CURSOR_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start cursor manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating cursor plugin");
-        gsd_cursor_manager_stop (GSD_CURSOR_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_cursor_plugin_class_init (GsdCursorPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_cursor_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdCursorPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdCursor, gsd_cursor)
diff --git a/plugins/dummy/gsd-dummy-plugin.c b/plugins/dummy/gsd-dummy-plugin.c
index 78342d7..21470b4 100644
--- a/plugins/dummy/gsd-dummy-plugin.c
+++ b/plugins/dummy/gsd-dummy-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-dummy-plugin.h"
 #include "gsd-dummy-manager.h"
 
-struct GsdDummyPluginPrivate {
-        GsdDummyManager *manager;
-};
-
-#define GSD_DUMMY_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_DUMMY_PLUGIN, GsdDummyPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdDummyPlugin, gsd_dummy_plugin)
-
-static void
-gsd_dummy_plugin_init (GsdDummyPlugin *plugin)
-{
-        plugin->priv = GSD_DUMMY_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdDummyPlugin initializing");
-
-        plugin->priv->manager = gsd_dummy_manager_new ();
-}
-
-static void
-gsd_dummy_plugin_finalize (GObject *object)
-{
-        GsdDummyPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_DUMMY_PLUGIN (object));
-
-        g_debug ("GsdDummyPlugin finalizing");
-
-        plugin = GSD_DUMMY_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_dummy_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating dummy plugin");
-
-        error = NULL;
-        res = gsd_dummy_manager_start (GSD_DUMMY_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start dummy manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating dummy plugin");
-        gsd_dummy_manager_stop (GSD_DUMMY_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_dummy_plugin_class_init (GsdDummyPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_dummy_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdDummyPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdDummy, gsd_dummy)
diff --git a/plugins/housekeeping/gsd-housekeeping-plugin.c b/plugins/housekeeping/gsd-housekeeping-plugin.c
index 5e7a965..d8db72e 100644
--- a/plugins/housekeeping/gsd-housekeeping-plugin.c
+++ b/plugins/housekeeping/gsd-housekeeping-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-housekeeping-plugin.h"
 #include "gsd-housekeeping-manager.h"
 
-struct GsdHousekeepingPluginPrivate {
-        GsdHousekeepingManager *manager;
-};
-
-#define GSD_HOUSEKEEPING_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_HOUSEKEEPING_PLUGIN, GsdHousekeepingPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdHousekeepingPlugin, gsd_housekeeping_plugin)
-
-static void
-gsd_housekeeping_plugin_init (GsdHousekeepingPlugin *plugin)
-{
-        plugin->priv = GSD_HOUSEKEEPING_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdHousekeepingPlugin initializing");
-
-        plugin->priv->manager = gsd_housekeeping_manager_new ();
-}
-
-static void
-gsd_housekeeping_plugin_finalize (GObject *object)
-{
-        GsdHousekeepingPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_HOUSEKEEPING_PLUGIN (object));
-
-        g_debug ("GsdHousekeepingPlugin finalizing");
-
-        plugin = GSD_HOUSEKEEPING_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_housekeeping_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating housekeeping plugin");
-
-        error = NULL;
-        res = gsd_housekeeping_manager_start (GSD_HOUSEKEEPING_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start housekeeping manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating housekeeping plugin");
-        gsd_housekeeping_manager_stop (GSD_HOUSEKEEPING_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_housekeeping_plugin_class_init (GsdHousekeepingPluginClass *klass)
-{
-        GObjectClass             *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_housekeeping_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdHousekeepingPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdHousekeeping, gsd_housekeeping)
diff --git a/plugins/keyboard/gsd-keyboard-plugin.c b/plugins/keyboard/gsd-keyboard-plugin.c
index 456d37d..836329a 100644
--- a/plugins/keyboard/gsd-keyboard-plugin.c
+++ b/plugins/keyboard/gsd-keyboard-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-keyboard-plugin.h"
 #include "gsd-keyboard-manager.h"
 
-struct GsdKeyboardPluginPrivate {
-        GsdKeyboardManager *manager;
-};
-
-#define GSD_KEYBOARD_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_KEYBOARD_PLUGIN, GsdKeyboardPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdKeyboardPlugin, gsd_keyboard_plugin)
-
-static void
-gsd_keyboard_plugin_init (GsdKeyboardPlugin *plugin)
-{
-        plugin->priv = GSD_KEYBOARD_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdKeyboardPlugin initializing");
-
-        plugin->priv->manager = gsd_keyboard_manager_new ();
-}
-
-static void
-gsd_keyboard_plugin_finalize (GObject *object)
-{
-        GsdKeyboardPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_KEYBOARD_PLUGIN (object));
-
-        g_debug ("GsdKeyboardPlugin finalizing");
-
-        plugin = GSD_KEYBOARD_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_keyboard_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating keyboard plugin");
-
-        error = NULL;
-        res = gsd_keyboard_manager_start (GSD_KEYBOARD_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start keyboard manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating keyboard plugin");
-        gsd_keyboard_manager_stop (GSD_KEYBOARD_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_keyboard_plugin_class_init (GsdKeyboardPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_keyboard_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdKeyboardPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdKeyboard, gsd_keyboard)
diff --git a/plugins/media-keys/gsd-media-keys-plugin.c b/plugins/media-keys/gsd-media-keys-plugin.c
index 3fe36e4..ccde5e9 100644
--- a/plugins/media-keys/gsd-media-keys-plugin.c
+++ b/plugins/media-keys/gsd-media-keys-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-media-keys-plugin.h"
 #include "gsd-media-keys-manager.h"
 
-struct GsdMediaKeysPluginPrivate {
-        GsdMediaKeysManager *manager;
-};
-
-#define GSD_MEDIA_KEYS_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_MEDIA_KEYS_PLUGIN, GsdMediaKeysPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdMediaKeysPlugin, gsd_media_keys_plugin)
-
-static void
-gsd_media_keys_plugin_init (GsdMediaKeysPlugin *plugin)
-{
-        plugin->priv = GSD_MEDIA_KEYS_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdMediaKeysPlugin initializing");
-
-        plugin->priv->manager = gsd_media_keys_manager_new ();
-}
-
-static void
-gsd_media_keys_plugin_finalize (GObject *object)
-{
-        GsdMediaKeysPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_MEDIA_KEYS_PLUGIN (object));
-
-        g_debug ("GsdMediaKeysPlugin finalizing");
-
-        plugin = GSD_MEDIA_KEYS_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_media_keys_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating media_keys plugin");
-
-        error = NULL;
-        res = gsd_media_keys_manager_start (GSD_MEDIA_KEYS_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start media_keys manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating media_keys plugin");
-        gsd_media_keys_manager_stop (GSD_MEDIA_KEYS_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_media_keys_plugin_class_init (GsdMediaKeysPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_media_keys_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdMediaKeysPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdMediaKeys, gsd_media_keys)
diff --git a/plugins/mouse/gsd-mouse-plugin.c b/plugins/mouse/gsd-mouse-plugin.c
index 3eca07e..0575ca5 100644
--- a/plugins/mouse/gsd-mouse-plugin.c
+++ b/plugins/mouse/gsd-mouse-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-mouse-plugin.h"
 #include "gsd-mouse-manager.h"
 
-struct GsdMousePluginPrivate {
-        GsdMouseManager *manager;
-};
-
-#define GSD_MOUSE_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_MOUSE_PLUGIN, GsdMousePluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdMousePlugin, gsd_mouse_plugin)
-
-static void
-gsd_mouse_plugin_init (GsdMousePlugin *plugin)
-{
-        plugin->priv = GSD_MOUSE_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdMousePlugin initializing");
-
-        plugin->priv->manager = gsd_mouse_manager_new ();
-}
-
-static void
-gsd_mouse_plugin_finalize (GObject *object)
-{
-        GsdMousePlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_MOUSE_PLUGIN (object));
-
-        g_debug ("GsdMousePlugin finalizing");
-
-        plugin = GSD_MOUSE_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_mouse_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating mouse plugin");
-
-        error = NULL;
-        res = gsd_mouse_manager_start (GSD_MOUSE_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start mouse manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating mouse plugin");
-        gsd_mouse_manager_stop (GSD_MOUSE_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_mouse_plugin_class_init (GsdMousePluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_mouse_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdMousePluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdMouse, gsd_mouse)
diff --git a/plugins/orientation/gsd-orientation-plugin.c b/plugins/orientation/gsd-orientation-plugin.c
index 506302e..870c0db 100644
--- a/plugins/orientation/gsd-orientation-plugin.c
+++ b/plugins/orientation/gsd-orientation-plugin.c
@@ -25,81 +25,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-orientation-plugin.h"
 #include "gsd-orientation-manager.h"
 
-struct GsdOrientationPluginPrivate {
-        GsdOrientationManager *manager;
-};
-
-#define GSD_ORIENTATION_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_ORIENTATION_PLUGIN, GsdOrientationPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdOrientationPlugin, gsd_orientation_plugin)
-
-static void
-gsd_orientation_plugin_init (GsdOrientationPlugin *plugin)
-{
-        plugin->priv = GSD_ORIENTATION_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdOrientationPlugin initializing");
-
-        plugin->priv->manager = gsd_orientation_manager_new ();
-}
-
-static void
-gsd_orientation_plugin_finalize (GObject *object)
-{
-        GsdOrientationPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_ORIENTATION_PLUGIN (object));
-
-        g_debug ("GsdOrientationPlugin finalizing");
-
-        plugin = GSD_ORIENTATION_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_orientation_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating orientation plugin");
-
-        error = NULL;
-        res = gsd_orientation_manager_start (GSD_ORIENTATION_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start orientation manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating orientation plugin");
-        gsd_orientation_manager_stop (GSD_ORIENTATION_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_orientation_plugin_class_init (GsdOrientationPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_orientation_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdOrientationPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdOrientation, gsd_orientation)
diff --git a/plugins/power/gsd-power-plugin.c b/plugins/power/gsd-power-plugin.c
index 6626087..60db93c 100644
--- a/plugins/power/gsd-power-plugin.c
+++ b/plugins/power/gsd-power-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-power-plugin.h"
 #include "gsd-power-manager.h"
 
-struct GsdPowerPluginPrivate {
-        GsdPowerManager *manager;
-};
-
-#define GSD_POWER_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_POWER_PLUGIN, GsdPowerPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdPowerPlugin, gsd_power_plugin)
-
-static void
-gsd_power_plugin_init (GsdPowerPlugin *plugin)
-{
-        plugin->priv = GSD_POWER_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdPowerPlugin initializing");
-
-        plugin->priv->manager = gsd_power_manager_new ();
-}
-
-static void
-gsd_power_plugin_finalize (GObject *object)
-{
-        GsdPowerPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_POWER_PLUGIN (object));
-
-        g_debug ("GsdPowerPlugin finalizing");
-
-        plugin = GSD_POWER_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_power_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating power plugin");
-
-        error = NULL;
-        res = gsd_power_manager_start (GSD_POWER_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start power manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating power plugin");
-        gsd_power_manager_stop (GSD_POWER_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_power_plugin_class_init (GsdPowerPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_power_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdPowerPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdPower, gsd_power)
diff --git a/plugins/print-notifications/gsd-print-notifications-plugin.c b/plugins/print-notifications/gsd-print-notifications-plugin.c
index 0a78806..0e8b3ee 100644
--- a/plugins/print-notifications/gsd-print-notifications-plugin.c
+++ b/plugins/print-notifications/gsd-print-notifications-plugin.c
@@ -24,79 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-print-notifications-plugin.h"
 #include "gsd-print-notifications-manager.h"
 
-struct GsdPrintNotificationsPluginPrivate {
-        GsdPrintNotificationsManager *manager;
-};
-
-#define GSD_PRINT_NOTIFICATIONS_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_PRINT_NOTIFICATIONS_PLUGIN, GsdPrintNotificationsPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdPrintNotificationsPlugin, gsd_print_notifications_plugin)
-
-static void
-gsd_print_notifications_plugin_init (GsdPrintNotificationsPlugin *plugin)
-{
-        plugin->priv = GSD_PRINT_NOTIFICATIONS_PLUGIN_GET_PRIVATE (plugin);
-
-        plugin->priv->manager = gsd_print_notifications_manager_new ();
-}
-
-static void
-gsd_print_notifications_plugin_finalize (GObject *object)
-{
-        GsdPrintNotificationsPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_PRINT_NOTIFICATIONS_PLUGIN (object));
-
-        g_debug ("GsdPrintNotificationsPlugin finalizing");
-
-        plugin = GSD_PRINT_NOTIFICATIONS_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_print_notifications_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating print-notifications plugin");
-
-        error = NULL;
-        res = gsd_print_notifications_manager_start (GSD_PRINT_NOTIFICATIONS_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start print-notifications manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating print_notifications plugin");
-        gsd_print_notifications_manager_stop (GSD_PRINT_NOTIFICATIONS_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_print_notifications_plugin_class_init (GsdPrintNotificationsPluginClass *klass)
-{
-        GObjectClass             *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_print_notifications_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdPrintNotificationsPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdPrintNotifications, gsd_print_notifications)
diff --git a/plugins/screensaver-proxy/gsd-screensaver-proxy-plugin.c b/plugins/screensaver-proxy/gsd-screensaver-proxy-plugin.c
index d521843..879eb2f 100644
--- a/plugins/screensaver-proxy/gsd-screensaver-proxy-plugin.c
+++ b/plugins/screensaver-proxy/gsd-screensaver-proxy-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-screensaver-proxy-plugin.h"
 #include "gsd-screensaver-proxy-manager.h"
 
-struct GsdScreensaverProxyPluginPrivate {
-        GsdScreensaverProxyManager *manager;
-};
-
-#define GSD_SCREENSAVER_PROXY_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_SCREENSAVER_PROXY_PLUGIN, GsdScreensaverProxyPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdScreensaverProxyPlugin, gsd_screensaver_proxy_plugin)
-
-static void
-gsd_screensaver_proxy_plugin_init (GsdScreensaverProxyPlugin *plugin)
-{
-        plugin->priv = GSD_SCREENSAVER_PROXY_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdScreensaverProxyPlugin initializing");
-
-        plugin->priv->manager = gsd_screensaver_proxy_manager_new ();
-}
-
-static void
-gsd_screensaver_proxy_plugin_finalize (GObject *object)
-{
-        GsdScreensaverProxyPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_SCREENSAVER_PROXY_PLUGIN (object));
-
-        g_debug ("GsdScreensaverProxyPlugin finalizing");
-
-        plugin = GSD_SCREENSAVER_PROXY_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_screensaver_proxy_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating screensaver-proxy plugin");
-
-        error = NULL;
-        res = gsd_screensaver_proxy_manager_start (GSD_SCREENSAVER_PROXY_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start screensaver-proxy manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating screensaver-proxy plugin");
-        gsd_screensaver_proxy_manager_stop (GSD_SCREENSAVER_PROXY_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_screensaver_proxy_plugin_class_init (GsdScreensaverProxyPluginClass *klass)
-{
-        GObjectClass             *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_screensaver_proxy_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdScreensaverProxyPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdScreensaverProxy, gsd_screensaver_proxy)
diff --git a/plugins/sound/gsd-sound-plugin.c b/plugins/sound/gsd-sound-plugin.c
index 941dc90..a14335e 100644
--- a/plugins/sound/gsd-sound-plugin.c
+++ b/plugins/sound/gsd-sound-plugin.c
@@ -24,77 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-sound-plugin.h"
 #include "gsd-sound-manager.h"
 
-struct GsdSoundPluginPrivate {
-        GsdSoundManager *manager;
-};
-
-#define GSD_SOUND_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_SOUND_PLUGIN, GsdSoundPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdSoundPlugin, gsd_sound_plugin)
-
-static void
-gsd_sound_plugin_init (GsdSoundPlugin *plugin)
-{
-        plugin->priv = GSD_SOUND_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdSoundPlugin initializing");
-
-        plugin->priv->manager = gsd_sound_manager_new ();
-}
-
-static void
-gsd_sound_plugin_finalize (GObject *object)
-{
-        GsdSoundPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_SOUND_PLUGIN (object));
-
-        g_debug ("GsdSoundPlugin finalizing");
-
-        plugin = GSD_SOUND_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL)
-                g_object_unref (plugin->priv->manager);
-
-        G_OBJECT_CLASS (gsd_sound_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        GError *error = NULL;
-
-        g_debug ("Activating sound plugin");
-
-        if (!gsd_sound_manager_start (GSD_SOUND_PLUGIN (plugin)->priv->manager, &error)) {
-                g_warning ("Unable to start sound manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating sound plugin");
-        gsd_sound_manager_stop (GSD_SOUND_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_sound_plugin_class_init (GsdSoundPluginClass *klass)
-{
-        GObjectClass *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_sound_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdSoundPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdSound, gsd_sound)
diff --git a/plugins/updates/gsd-updates-plugin.c b/plugins/updates/gsd-updates-plugin.c
index 368b1d6..669e37a 100644
--- a/plugins/updates/gsd-updates-plugin.c
+++ b/plugins/updates/gsd-updates-plugin.c
@@ -24,77 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-updates-plugin.h"
 #include "gsd-updates-manager.h"
 
-struct GsdUpdatesPluginPrivate {
-        GsdUpdatesManager *manager;
-};
-
-#define GSD_UPDATES_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_UPDATES_PLUGIN, GsdUpdatesPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdUpdatesPlugin, gsd_updates_plugin)
-
-static void
-gsd_updates_plugin_init (GsdUpdatesPlugin *plugin)
-{
-        plugin->priv = GSD_UPDATES_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdUpdatesPlugin initializing");
-
-        plugin->priv->manager = gsd_updates_manager_new ();
-}
-
-static void
-gsd_updates_plugin_finalize (GObject *object)
-{
-        GsdUpdatesPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_UPDATES_PLUGIN (object));
-
-        g_debug ("GsdUpdatesPlugin finalizing");
-
-        plugin = GSD_UPDATES_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL)
-                g_object_unref (plugin->priv->manager);
-
-        G_OBJECT_CLASS (gsd_updates_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        GError *error = NULL;
-
-        g_debug ("Activating updates plugin");
-
-        if (!gsd_updates_manager_start (GSD_UPDATES_PLUGIN (plugin)->priv->manager, &error)) {
-                g_warning ("Unable to start updates manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating updates plugin");
-        gsd_updates_manager_stop (GSD_UPDATES_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_updates_plugin_class_init (GsdUpdatesPluginClass *klass)
-{
-        GObjectClass *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_updates_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdUpdatesPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdUpdates, gsd_updates)
diff --git a/plugins/wacom/gsd-wacom-plugin.c b/plugins/wacom/gsd-wacom-plugin.c
index a9ec227..cc16000 100644
--- a/plugins/wacom/gsd-wacom-plugin.c
+++ b/plugins/wacom/gsd-wacom-plugin.c
@@ -25,81 +25,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-wacom-plugin.h"
 #include "gsd-wacom-manager.h"
 
-struct GsdWacomPluginPrivate {
-        GsdWacomManager *manager;
-};
-
-#define GSD_WACOM_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_WACOM_PLUGIN, GsdWacomPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdWacomPlugin, gsd_wacom_plugin)
-
-static void
-gsd_wacom_plugin_init (GsdWacomPlugin *plugin)
-{
-        plugin->priv = GSD_WACOM_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdWacomPlugin initializing");
-
-        plugin->priv->manager = gsd_wacom_manager_new ();
-}
-
-static void
-gsd_wacom_plugin_finalize (GObject *object)
-{
-        GsdWacomPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_WACOM_PLUGIN (object));
-
-        g_debug ("GsdWacomPlugin finalizing");
-
-        plugin = GSD_WACOM_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_wacom_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating wacom plugin");
-
-        error = NULL;
-        res = gsd_wacom_manager_start (GSD_WACOM_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start wacom manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating wacom plugin");
-        gsd_wacom_manager_stop (GSD_WACOM_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_wacom_plugin_class_init (GsdWacomPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_wacom_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdWacomPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdWacom, gsd_wacom)
diff --git a/plugins/xrandr/gsd-xrandr-plugin.c b/plugins/xrandr/gsd-xrandr-plugin.c
index 23177e5..c8abf60 100644
--- a/plugins/xrandr/gsd-xrandr-plugin.c
+++ b/plugins/xrandr/gsd-xrandr-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-xrandr-plugin.h"
 #include "gsd-xrandr-manager.h"
 
-struct GsdXrandrPluginPrivate {
-        GsdXrandrManager *manager;
-};
-
-#define GSD_XRANDR_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GSD_TYPE_XRANDR_PLUGIN, GsdXrandrPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GsdXrandrPlugin, gsd_xrandr_plugin)
-
-static void
-gsd_xrandr_plugin_init (GsdXrandrPlugin *plugin)
-{
-        plugin->priv = GSD_XRANDR_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GsdXrandrPlugin initializing");
-
-        plugin->priv->manager = gsd_xrandr_manager_new ();
-}
-
-static void
-gsd_xrandr_plugin_finalize (GObject *object)
-{
-        GsdXrandrPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GSD_IS_XRANDR_PLUGIN (object));
-
-        g_debug ("GsdXrandrPlugin finalizing");
-
-        plugin = GSD_XRANDR_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gsd_xrandr_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating xrandr plugin");
-
-        error = NULL;
-        res = gsd_xrandr_manager_start (GSD_XRANDR_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start xrandr manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating xrandr plugin");
-        gsd_xrandr_manager_stop (GSD_XRANDR_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gsd_xrandr_plugin_class_init (GsdXrandrPluginClass *klass)
-{
-        GObjectClass           *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gsd_xrandr_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GsdXrandrPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GsdXrandr, gsd_xrandr)
diff --git a/plugins/xsettings/gsd-xsettings-plugin.c b/plugins/xsettings/gsd-xsettings-plugin.c
index 36a09dd..5195e48 100644
--- a/plugins/xsettings/gsd-xsettings-plugin.c
+++ b/plugins/xsettings/gsd-xsettings-plugin.c
@@ -24,81 +24,6 @@
 #include <gmodule.h>
 
 #include "gnome-settings-plugin.h"
-#include "gsd-xsettings-plugin.h"
 #include "gsd-xsettings-manager.h"
 
-struct GnomeXSettingsPluginPrivate {
-        GnomeXSettingsManager *manager;
-};
-
-#define GNOME_XSETTINGS_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), GNOME_TYPE_XSETTINGS_PLUGIN, GnomeXSettingsPluginPrivate))
-
-GNOME_SETTINGS_PLUGIN_REGISTER (GnomeXSettingsPlugin, gnome_xsettings_plugin)
-
-static void
-gnome_xsettings_plugin_init (GnomeXSettingsPlugin *plugin)
-{
-        plugin->priv = GNOME_XSETTINGS_PLUGIN_GET_PRIVATE (plugin);
-
-        g_debug ("GnomeXSettingsPlugin initializing");
-
-        plugin->priv->manager = gnome_xsettings_manager_new ();
-}
-
-static void
-gnome_xsettings_plugin_finalize (GObject *object)
-{
-        GnomeXSettingsPlugin *plugin;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GNOME_IS_XSETTINGS_PLUGIN (object));
-
-        g_debug ("GnomeXSettingsPlugin finalizing");
-
-        plugin = GNOME_XSETTINGS_PLUGIN (object);
-
-        g_return_if_fail (plugin->priv != NULL);
-
-        if (plugin->priv->manager != NULL) {
-                g_object_unref (plugin->priv->manager);
-        }
-
-        G_OBJECT_CLASS (gnome_xsettings_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (GnomeSettingsPlugin *plugin)
-{
-        gboolean res;
-        GError  *error;
-
-        g_debug ("Activating xsettings plugin");
-
-        error = NULL;
-        res = gnome_xsettings_manager_start (GNOME_XSETTINGS_PLUGIN (plugin)->priv->manager, &error);
-        if (! res) {
-                g_warning ("Unable to start xsettings manager: %s", error->message);
-                g_error_free (error);
-        }
-}
-
-static void
-impl_deactivate (GnomeSettingsPlugin *plugin)
-{
-        g_debug ("Deactivating xsettings plugin");
-        gnome_xsettings_manager_stop (GNOME_XSETTINGS_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-gnome_xsettings_plugin_class_init (GnomeXSettingsPluginClass *klass)
-{
-        GObjectClass             *object_class = G_OBJECT_CLASS (klass);
-        GnomeSettingsPluginClass *plugin_class = GNOME_SETTINGS_PLUGIN_CLASS (klass);
-
-        object_class->finalize = gnome_xsettings_plugin_finalize;
-
-        plugin_class->activate = impl_activate;
-        plugin_class->deactivate = impl_deactivate;
-
-        g_type_class_add_private (klass, sizeof (GnomeXSettingsPluginPrivate));
-}
+GNOME_SETTINGS_PLUGIN_REGISTER (GnomeXSettings, gnome_xsettings)



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