[Xfce4-commits] [xfce/xfce4-power-manager] 01/05: Let xfpm control X11's screensaver extension FIXME: dbus_init in power.c resets the configured values if xfpm restarts
noreply at xfce.org
noreply at xfce.org
Thu Jun 26 18:50:17 CEST 2014
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository xfce/xfce4-power-manager.
commit 7dd51ceaa91ecba72154dd15ecca6ddd7f33b120
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date: Mon Jun 23 15:37:51 2014 +0200
Let xfpm control X11's screensaver extension FIXME: dbus_init in power.c resets the configured values if xfpm restarts
---
data/interfaces/xfpm-settings.ui | 108 +++++++++++++++++++++++++++++---------
settings/xfpm-settings.c | 15 ++++++
src/xfpm-config.h | 3 ++
src/xfpm-power.c | 69 +++++++++++++++++++++++-
src/xfpm-xfconf.c | 6 ++-
5 files changed, 174 insertions(+), 27 deletions(-)
diff --git a/data/interfaces/xfpm-settings.ui b/data/interfaces/xfpm-settings.ui
index d824ac6..df08f8b 100644
--- a/data/interfaces/xfpm-settings.ui
+++ b/data/interfaces/xfpm-settings.ui
@@ -792,11 +792,11 @@
<property name="row_spacing">3</property>
<property name="column_spacing">12</property>
<child>
- <object class="GtkLabel" id="label14">
+ <object class="GtkLabel" id="blank-display-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Put display to sleep after</property>
+ <property name="label" translatable="yes">Blank display after</property>
</object>
<packing>
<property name="top_attach">1</property>
@@ -806,11 +806,11 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label15">
+ <object class="GtkLabel" id="sleep-display-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Switch off display after</property>
+ <property name="label" translatable="yes">Put display to sleep after</property>
</object>
<packing>
<property name="top_attach">2</property>
@@ -820,11 +820,11 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label16">
+ <object class="GtkLabel" id="switch-off-display-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Reduce brightness on inactivity</property>
+ <property name="label" translatable="yes">Switch off display after</property>
</object>
<packing>
<property name="top_attach">3</property>
@@ -834,11 +834,11 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label17">
+ <object class="GtkLabel" id="reduce-brightness-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Reduce brightness to</property>
+ <property name="label" translatable="yes">Reduce brightness on inactivity</property>
</object>
<packing>
<property name="top_attach">4</property>
@@ -848,6 +848,20 @@
</packing>
</child>
<child>
+ <object class="GtkLabel" id="reduce-brightness-to-label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Reduce brightness to</property>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkLabel" id="display_onbattery">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -876,6 +890,42 @@
</packing>
</child>
<child>
+ <object class="GtkHScale" id="blank-on-battery">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">discontinuous</property>
+ <property name="adjustment">blank-on-battery-adjustment</property>
+ <property name="digits">0</property>
+ <property name="value_pos">bottom</property>
+ <signal name="format_value" handler="format_dpms_value_cb"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHScale" id="blank-on-ac">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">discontinuous</property>
+ <property name="adjustment">blank-on-ac-adjustment</property>
+ <property name="digits">0</property>
+ <property name="value_pos">bottom</property>
+ <signal name="format_value" handler="format_dpms_value_cb"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkHScale" id="sleep-dpms-on-battery">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -889,8 +939,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -908,8 +958,8 @@
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -927,8 +977,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -946,8 +996,8 @@
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -965,8 +1015,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -984,8 +1034,8 @@
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -1003,8 +1053,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -1022,8 +1072,8 @@
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
@@ -1179,6 +1229,16 @@
<property name="upper">20</property>
<property name="step_increment">1</property>
</object>
+ <object class="GtkAdjustment" id="blank-on-battery-adjustment">
+ <property name="value">10</property>
+ <property name="upper">60</property>
+ <property name="step_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="blank-on-ac-adjustment">
+ <property name="value">10</property>
+ <property name="upper">60</property>
+ <property name="step_increment">1</property>
+ </object>
<object class="GtkSizeGroup" id="sg_critical_power">
<widgets>
<widget name="critical-level-label"/>
diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c
index a7cb56c..7e75d25 100644
--- a/settings/xfpm-settings.c
+++ b/settings/xfpm-settings.c
@@ -39,6 +39,7 @@
#include "xfpm-icons.h"
#include "xfpm-debug.h"
#include "xfpm-power-common.h"
+#include "xfpm-power.h"
#include "interfaces/xfpm-settings_ui.h"
@@ -2017,10 +2018,12 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean auth_suspend,
GtkWidget *plugged_box;
GtkWidget *viewport;
GtkWidget *hbox;
+ GtkWidget *on_battery_blank, *on_ac_blank;
GtkListStore *list_store;
GtkTreeViewColumn *col;
GtkCellRenderer *renderer;
GError *error = NULL;
+ guint val;
XFPM_DEBUG ("auth_hibernate=%s auth_suspend=%s can_shutdown=%s can_suspend=%s can_hibernate=%s " \
"has_battery=%s has_lcd_brightness=%s has_lid=%s has_sleep_button=%s " \
@@ -2047,6 +2050,18 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean auth_suspend,
on_ac_dpms_sleep = GTK_WIDGET (gtk_builder_get_object (xml, "sleep-dpms-on-ac"));
on_ac_dpms_off = GTK_WIDGET (gtk_builder_get_object (xml, "off-dpms-on-ac"));
+ on_battery_blank = GTK_WIDGET (gtk_builder_get_object (xml, "blank-on-battery"));
+ val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX ON_BATTERY_BLANK, 10);
+ gtk_range_set_value (GTK_RANGE (on_battery_blank), val);
+ xfconf_g_property_bind (channel, PROPERTIES_PREFIX ON_BATTERY_BLANK,
+ G_TYPE_INT, gtk_range_get_adjustment (GTK_RANGE (on_battery_blank)),
+ "value");
+
+ on_ac_blank = GTK_WIDGET (gtk_builder_get_object (xml, "blank-on-ac"));
+ xfconf_g_property_bind (channel, PROPERTIES_PREFIX ON_AC_BLANK,
+ G_TYPE_INT, gtk_range_get_adjustment (GTK_RANGE (on_ac_blank)),
+ "value");
+
dialog = GTK_WIDGET (gtk_builder_get_object (xml, "xfpm-settings-dialog"));
nt = GTK_WIDGET (gtk_builder_get_object (xml, "main-notebook"));
diff --git a/src/xfpm-config.h b/src/xfpm-config.h
index c6ffa26..a931c17 100644
--- a/src/xfpm-config.h
+++ b/src/xfpm-config.h
@@ -42,6 +42,9 @@ G_BEGIN_DECLS
#define CPU_FREQ_CONTROL "enable-cpu-freq-control"
#define LOCK_SCREEN_ON_SLEEP "lock-screen-suspend-hibernate"
+#define ON_BATTERY_BLANK "blank-on-battery"
+#define ON_AC_BLANK "blank-on-ac"
+
#define DPMS_ENABLED_CFG "dpms-enabled"
#define ON_AC_DPMS_SLEEP "dpms-on-ac-sleep"
#define ON_AC_DPMS_OFF "dpms-on-ac-off"
diff --git a/src/xfpm-power.c b/src/xfpm-power.c
index 515ee6e..7123c7e 100644
--- a/src/xfpm-power.c
+++ b/src/xfpm-power.c
@@ -78,6 +78,8 @@ static void xfpm_power_set_property (GObject *object,
static void xfpm_power_change_presentation_mode (XfpmPower *power,
gboolean presentation_mode);
+static void xfpm_update_blank_time (XfpmPower *power);
+
static void xfpm_power_dbus_class_init (XfpmPowerClass * klass);
static void xfpm_power_dbus_init (XfpmPower *power);
@@ -109,6 +111,8 @@ struct XfpmPowerPrivate
XfpmDpms *dpms;
#endif
gboolean presentation_mode;
+ gint on_ac_blank;
+ gint on_battery_blank;
EggIdletime *idletime;
gboolean inhibited;
@@ -149,6 +153,8 @@ enum
PROP_CAN_HIBERNATE,
PROP_HAS_LID,
PROP_PRESENTATION_MODE,
+ PROP_ON_AC_BLANK,
+ PROP_ON_BATTERY_BLANK,
N_PROPERTIES
};
@@ -211,6 +217,7 @@ xfpm_power_check_power (XfpmPower *power, gboolean on_battery)
g_object_set (G_OBJECT (g_list_nth_data (list, i)),
"ac-online", !on_battery,
NULL);
+ xfpm_update_blank_time (power);
}
}
}
@@ -1075,6 +1082,24 @@ xfpm_power_class_init (XfpmPowerClass *klass)
NULL, NULL,
FALSE,
XFPM_PARAM_FLAGS));
+
+ g_object_class_install_property (object_class,
+ PROP_ON_AC_BLANK,
+ g_param_spec_int (ON_AC_BLANK,
+ NULL, NULL,
+ 0,
+ G_MAXINT16,
+ 10,
+ XFPM_PARAM_FLAGS));
+
+ g_object_class_install_property (object_class,
+ PROP_ON_BATTERY_BLANK,
+ g_param_spec_int (ON_BATTERY_BLANK,
+ NULL, NULL,
+ 0,
+ G_MAXINT16,
+ 10,
+ XFPM_PARAM_FLAGS));
#undef XFPM_PARAM_FLAGS
g_type_class_add_private (klass, sizeof (XfpmPowerPrivate));
@@ -1106,6 +1131,8 @@ xfpm_power_init (XfpmPower *power)
power->priv->dpms = xfpm_dpms_new ();
#endif
power->priv->presentation_mode = FALSE;
+ power->priv->on_ac_blank = 15;
+ power->priv->on_battery_blank = 10;
power->priv->suspend = xfpm_suspend_get ();
power->priv->inhibit = xfpm_inhibit_new ();
@@ -1152,9 +1179,17 @@ xfpm_power_init (XfpmPower *power)
#endif
xfconf_g_property_bind(xfpm_xfconf_get_channel(power->priv->conf),
- PROPERTIES_PREFIX PRESENTATION_MODE, G_TYPE_BOOLEAN,
+ PROPERTIES_PREFIX PRESENTATION_MODE, G_TYPE_BOOLEAN,
G_OBJECT(power), PRESENTATION_MODE);
+ xfconf_g_property_bind (xfpm_xfconf_get_channel(power->priv->conf),
+ PROPERTIES_PREFIX ON_BATTERY_BLANK, G_TYPE_INT,
+ G_OBJECT (power), ON_BATTERY_BLANK);
+
+ xfconf_g_property_bind (xfpm_xfconf_get_channel(power->priv->conf),
+ PROPERTIES_PREFIX ON_AC_BLANK, G_TYPE_INT,
+ G_OBJECT (power), ON_AC_BLANK);
+
out:
xfpm_power_dbus_init (power);
@@ -1195,6 +1230,12 @@ static void xfpm_power_get_property (GObject *object,
case PROP_PRESENTATION_MODE:
g_value_set_boolean (value, power->priv->presentation_mode);
break;
+ case PROP_ON_AC_BLANK:
+ g_value_set_int (value, power->priv->on_ac_blank);
+ break;
+ case PROP_ON_BATTERY_BLANK:
+ g_value_set_int (value, power->priv->on_battery_blank);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1207,12 +1248,23 @@ static void xfpm_power_set_property (GObject *object,
GParamSpec *pspec)
{
XfpmPower *power = XFPM_POWER (object);
+ gint on_ac_blank, on_battery_blank;
switch (prop_id)
{
case PROP_PRESENTATION_MODE:
xfpm_power_change_presentation_mode (power, g_value_get_boolean (value));
break;
+ case PROP_ON_AC_BLANK:
+ on_ac_blank = g_value_get_int (value);
+ power->priv->on_ac_blank = on_ac_blank;
+ xfpm_update_blank_time (power);
+ break;
+ case PROP_ON_BATTERY_BLANK:
+ on_battery_blank = g_value_get_int (value);
+ power->priv->on_battery_blank = on_battery_blank;
+ xfpm_update_blank_time (power);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1308,6 +1360,21 @@ gboolean xfpm_power_has_battery (XfpmPower *power)
}
static void
+xfpm_update_blank_time (XfpmPower *power)
+{
+ Display* display = gdk_x11_display_get_xdisplay(gdk_display_get_default ());
+ guint screensaver_timeout;
+
+ if (power->priv->on_battery)
+ screensaver_timeout = power->priv->on_battery_blank;
+ else
+ screensaver_timeout = power->priv->on_ac_blank;
+ XFPM_DEBUG ("Timeout: %d", screensaver_timeout);
+
+ XSetScreenSaver(display, screensaver_timeout * 60, 0, DefaultBlanking, DefaultExposures);
+}
+
+static void
xfpm_power_change_presentation_mode (XfpmPower *power, gboolean presentation_mode)
{
#ifdef HAVE_DPMS
diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c
index d301538..848b6a0 100644
--- a/src/xfpm-xfconf.c
+++ b/src/xfpm-xfconf.c
@@ -191,8 +191,10 @@ xfpm_xfconf_property_changed_cb (XfconfChannel *channel, gchar *property,
if ( !g_str_has_prefix (property, PROPERTIES_PREFIX) || strlen (property) <= strlen (PROPERTIES_PREFIX) )
return;
- /* We handle presentation mode in xfpm-power directly */
- if ( g_strcmp0 (property, "/xfce4-power-manager/presentation-mode") == 0 )
+ /* We handle presentation mode and blank-times in xfpm-power directly */
+ if ( g_strcmp0 (property, "/xfce4-power-manager/presentation-mode") == 0 ||
+ g_strcmp0 (property, "/xfce4-power-manager/blank-on-ac") == 0 ||
+ g_strcmp0 (property, "/xfce4-power-manager/blank-on-battery") == 0)
return;
XFPM_DEBUG ("Property modified: %s\n", property);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list