Power Management and Inhibition by Applications

Matthieu Gallien gallien.matthieu at gmail.com
Wed Jan 23 20:18:16 GMT 2019


Hello,

On mercredi 23 janvier 2019 08:52:26 CET Kai Uwe Broulik wrote:
> Hi,
> 
> > I had thought that would only inhibit the screensaver instead of automatic
> > sleep.
> 
> KScreenLocker (previously KSMServer) that owns the
> org.freedesktop.ScreenSaver interface tells PowerDevil to keep the
> screen on when screensaver is inhibited. It makes no sense to prevent
> the screen from locking (ie. keep the desktop visible) but then allow
> the screen to turn off, having the same effect: hiding the desktop.
> > I did a quick test and in case I inhibit through
> > org.freedesktop.ScreenSaver interface, the battery applet does not
> > indicate any inhibit whereas through
> > org.freedesktop.PowerManagement.Inhibit indicates that an inhibition is
> > valid.
> It should and it does here. Note that PowerDevil only enforces
> inhibitions after five seconds to prevent short transient inhibitions
> (e.g. web browsers block suspend when playing audio which could also
> lead to short notification sounds prolonging the time until suspend)

I have restarted my session and it is now working. Sorry for that.

I also had somehow missed that interface. It looks to me like it is also 
supported by other desktop environments. Do you know if it is really the case 
?

> > I wonder if I should not instead make usage of the Inhibit mechanism from
> > logind coupled with powerdevil. I am not sure if this is desired.
> 
> It is and I would love that, I just haven't had the time to implement it.
> 
> Also I'm a bit tired of adding yet another inhibition interface (we
> already have like three or four of them) of the "but this time, I
> promise, it will be perfect!!" kind. Last time I checked logind didn't
> offer signals for when an inhibition was added/removed, so the "xyz is
> curently blocking PM" in Battery Monitor might not be possible anymore
> this way.
> 
> Cheers
> Kai Uwe

My understanding of the current mechanism in Logind is that except the 
"systemctl suspend" command, nothing prevent suspend when you add an inhibitor 
blocking sleep. I was hoping for this interface to be the "universal" one that 
would avoid the need to support many interfaces in an application.

As far as I understand, each software wanting to suspend has to check itself 
for any blocking inhibition for sleep. I can volunteer to add this to 
Powerdevil if this is deemed useful.

I had checked the dbus interface for logind and there is still no any signals 
to know when an inhibition is added or removed.

Best regards

--
Matthieu Gallien




More information about the Kde-frameworks-devel mailing list