Dear maintainer(s),

first time I try to give some feedback, so please don't feel offended, or even 
beat me, if this is not the right place to report.


PACKAGE
=======
Package: xfce4-power-manager
Version: 1.4.4-4ubuntu2


PROBLEM DESCRIPTION
===================
Running xfce4-power-manager on a lubuntu 16.04 system using a laptop running on 
battery I kept receiving the following notification 
'GDBus.Error:org.freedesktop.DBus.Error.AccessDenied:Permission denied'

Investigating further it turned out, there was a discrepancy between 
'xfce4-power-manger-settings' GUI reporting the sleep mode on battery to be 
"Suspend" and 'dbus-monitor --system' reporting the real action taking place to 
be an attempt to go into "Hibernate" mode (relevant part cited below), which in 
turn is disabled via polkit-1 on my system.

---
method call time=1469228622.268937 sender=:1.62 -> 
destination=org.freedesktop.login1 serial=25 path=/org/freedesktop/login1; 
interface=org.freedesktop.login1.Manager; member=Hibernate
   boolean true
---


STEPS TO REPRODUCE
==================
1. reset/remove xfce-power-manager.xml configuration
2. disable action "org.freedesktop.login1.hibernate" via polkit-1
3. unplug laptop from power source
4. keep doing nothing for 15 minutes


INVESTIGATION
=============
Digging the sources I found the problem to be split between 
src/xfpm-xfconf.c:489 setting the default value of the property 
"inactivity-sleep-mode-on-battery" to XFP_DO_HIBERNATE and 
'xfpm_settings_on_battery()' in settings/xfpm-settings.c:863 narrowing down 
possible ComboBox options down to those actually supported by system policy.

Given an empty/default xfce4-power-manager.xml configuration and via system 
policy disabled hibernate this leads to the funny fact that 
'xfce4-power-manager-settings' GUI will not only wrongly "report" the selected 
sleep mode to be "Suspend".
But even worse never never never ever allow the user to really switch sleep 
mode on battery to "Suspend", as to fire the necessary callback it would be 
necessary to actually change the ComboBox selection, which given a single 
choice is impossible.

I managed to circumvent the problem manually adding: <property 
name="inactivity-sleep-mode-on-battery" type="uint" value="1"/> to the 
configuration file, but probably this might not be the most obvious i.e. user 
friendly way to handle such situations.


SUGGESTED FIX
=============
To handle scenarios like the one described with either "Suspend", "Hibernate", 
or even both unavailable imho it wouldn't be too painful to allow 
XFPM_DO_NOTHING as another option for both properties 
"inactivity-sleep-mode-on-battery" and "inactivity-sleep-mode-on-ac". 

This would not only allow to select either "Suspend" or "Hibernate" even if the 
other one isn't available still firing the necessary callback in 
'xfce4-power-manager-settings', but also allow to still show a meaningful value 
in the GUI in case both of them are unavailable.

I put a patch just doing this in the attachment. 


BTW
===
imho lowering the "magic" never timeout value from 14 to 0 and allowing a range 
starting from 0 wouldn't be to painful, especially for testing purposes. :) I 
know it is already possible to use lower values manually hacking the config 
file, but again probably this is not the most obvious and user-friendly way.


Best regards
  Bernd.


-- 
Bernd <s1237...@gmail.com>
Index: xfce4-power-manager-1.4.4/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager-1.4.4.orig/settings/xfpm-settings.c
+++ xfce4-power-manager-1.4.4/settings/xfpm-settings.c
@@ -885,6 +885,9 @@ xfpm_settings_on_battery (XfconfChannel
     inact_action = GTK_WIDGET (gtk_builder_get_object (xml, "system-sleep-mode-on-battery"));
     gtk_combo_box_set_model (GTK_COMBO_BOX(inact_action), GTK_TREE_MODEL(list_store));
 
+    gtk_list_store_append (list_store, &iter);
+    gtk_list_store_set (list_store, &iter, 0, _("Do nothing"), 1, XFPM_DO_NOTHING, -1);
+
     if ( can_suspend )
     {
     gtk_list_store_append (list_store, &iter);
@@ -1111,6 +1114,9 @@ xfpm_settings_on_ac (XfconfChannel *chan
     inact_action = GTK_WIDGET (gtk_builder_get_object (xml, "system-sleep-mode-on-ac"));
     gtk_combo_box_set_model (GTK_COMBO_BOX(inact_action), GTK_TREE_MODEL(list_store));
 
+    gtk_list_store_append (list_store, &iter);
+    gtk_list_store_set (list_store, &iter, 0, _("Do nothing"), 1, XFPM_DO_NOTHING, -1);
+
     if ( can_suspend )
     {
     gtk_list_store_append (list_store, &iter);
Index: xfce4-power-manager-1.4.4/src/xfpm-xfconf.c
===================================================================
--- xfce4-power-manager-1.4.4.orig/src/xfpm-xfconf.c
+++ xfce4-power-manager-1.4.4/src/xfpm-xfconf.c
@@ -490,9 +490,9 @@ xfpm_xfconf_class_init (XfpmXfconfClass
                                      PROP_IDLE_SLEEP_MODE_ON_BATTERY,
                                      g_param_spec_uint (INACTIVITY_SLEEP_MODE_ON_BATTERY,
                                                         NULL, NULL,
-                                                        XFPM_DO_SUSPEND,
-                                                        XFPM_DO_HIBERNATE,
+                                                        XFPM_DO_NOTHING,
                                                         XFPM_DO_HIBERNATE,
+                                                        XFPM_DO_NOTHING,
                                                         G_PARAM_READWRITE));
 
     /**
@@ -502,9 +502,9 @@ xfpm_xfconf_class_init (XfpmXfconfClass
                                      PROP_IDLE_SLEEP_MODE_ON_AC,
                                      g_param_spec_uint (INACTIVITY_SLEEP_MODE_ON_AC,
                                                         NULL, NULL,
-                                                        XFPM_DO_SUSPEND,
+                                                        XFPM_DO_NOTHING,
                                                         XFPM_DO_HIBERNATE,
-                                                        XFPM_DO_SUSPEND,
+                                                        XFPM_DO_NOTHING,
                                                         G_PARAM_READWRITE));
 
     /**
_______________________________________________
Pkg-xfce-devel mailing list
Pkg-xfce-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-xfce-devel

Reply via email to