diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
index ec805d8a..cf0d6793 100644
--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
+++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
@@ -11,6 +11,11 @@
Activation of this plugin
Whether this plugin would be activated by unity-settings-daemon or not
+
+ false
+ Reset X DPMS values
+ Whether DPMS values will be adjusted by gnome-settings-daemon
+
30
The brightness of the screen when idle
diff --git a/plugins/power/gpm-common.c b/plugins/power/gpm-common.c
index a7ca87fb..a56a7cdc 100644
--- a/plugins/power/gpm-common.c
+++ b/plugins/power/gpm-common.c
@@ -280,6 +280,18 @@ disable_builtin_screensaver (gpointer unused)
return TRUE;
}
+gboolean
+manage_dpms (void)
+{
+ GSettings *settings;
+ gboolean manage_dpms_defaults;
+
+ settings = g_settings_new ("org.gnome.settings-daemon.plugins.power");
+ manage_dpms_defaults = g_settings_get_boolean (settings, "manage-dpms-defaults");
+ g_object_unref (settings);
+ return manage_dpms_defaults;
+}
+
guint
gsd_power_enable_screensaver_watchdog (void)
{
@@ -290,7 +302,7 @@ gsd_power_enable_screensaver_watchdog (void)
* way. The defaults are now applied in Fedora 20 from
* being "0" by default to being "600" by default */
gdk_x11_display_error_trap_push (gdk_display_get_default ());
- if (DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy))
+ if (manage_dpms () && DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy))
DPMSSetTimeouts (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), 0, 0, 0);
gdk_x11_display_error_trap_pop_ignored (gdk_display_get_default ());
id = g_timeout_add_seconds (XSCREENSAVER_WATCHDOG_TIMEOUT,
diff --git a/plugins/power/gpm-common.h b/plugins/power/gpm-common.h
index 88a8e00e..af106479 100644
--- a/plugins/power/gpm-common.h
+++ b/plugins/power/gpm-common.h
@@ -34,6 +34,7 @@ gchar *gpm_get_timestring (guint time);
gboolean gsd_power_is_hardware_a_vm (void);
guint gsd_power_enable_screensaver_watchdog (void);
void reset_idletime (void);
+gboolean manage_dpms (void);
/* Backlight helpers */
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index c500fa38..445496ee 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -1033,6 +1033,9 @@ backlight_enable (GsdPowerManager *manager)
gboolean ret;
GError *error = NULL;
+ if (!(manage_dpms ()))
+ return;
+
iio_proxy_claim_light (manager, TRUE);
ret = gnome_rr_screen_set_dpms_mode (manager->rr_screen,
GNOME_RR_DPMS_ON,
@@ -1052,6 +1055,9 @@ backlight_disable (GsdPowerManager *manager)
gboolean ret;
GError *error = NULL;
+ if (!(manage_dpms ()))
+ return;
+
iio_proxy_claim_light (manager, FALSE);
ret = gnome_rr_screen_set_dpms_mode (manager->rr_screen,
GNOME_RR_DPMS_OFF,