Bug 271731

Summary: kscreensaver doesn't set session idle
Product: [Plasma] kscreenlocker Reporter: shining
Component: generalAssignee: David Edmundson <kde>
Status: RESOLVED INTENTIONAL    
Severity: wishlist CC: bhush94, mgraesslin
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Bug Depends on: 318461    
Bug Blocks:    

Description shining 2011-04-26 00:24:55 UTC
Version:           unspecified (using KDE 4.5.1) 
OS:                Linux

Unlike its gnome counterpart, kde screensaver doesn't mark the session as idle on dbus system bus. Some applications may rely on this mechanism, eg. to start a backup procedure.

Reproducible: Always

Steps to Reproduce:
Open a terminal and verify this is the only session (on org.freedesktop.ConsoleKit terms). Type as current user:
dbus-monitor --system \
"type='signal',interface='org.freedesktop.ConsoleKit.Manager',member='SystemIdleHintChanged'"

Then wait for the screensaver to start or lock the screen. Take some time and exit from screensaver.

Actual Results:  
You won't intercept the expected signal because not raised. You'll never read a line like this:
signal sender=:1.11 -> dest=(null destination) serial=3057 path=/org/freedesktop/ConsoleKit/Manager; interface=org.freedesktop.ConsoleKit.Manager; member=SystemIdleHintChanged
   boolean true

Expected Results:  
Delivery of the signal org.freedesktop.ConsoleKit.Manager.SystemIdleHintChanged(bool) when both starting (true) and stopping (false) the screensaver. You should read a line like this:
signal sender=:1.11 -> dest=(null destination) serial=3062 path=/org/freedesktop/ConsoleKit/Manager; interface=org.freedesktop.ConsoleKit.Manager; member=SystemIdleHintChanged
   boolean false

Unlike its gnome counterpart, kde screensaver doesn't mark the session as idle on dbus system bus. Let's state kde session is Session6 on ConsoleKit point of view, then the method org.freedesktop.ConsoleKit.Session.GetIdleHint at dbus system bus org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session6 should return "true" when kscreensaver is running. Instead we get "false" in every occasion. The effect is that signal dbus system bus org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.SystemIdleHintChanged(bool) is never raised and method org.freedesktop.ConsoleKit.Manager.GetSystemIdleHint at the same path always return "false". For what I can understand, in the same time ActiveChanged(bool) is emitted on dbus session bus org.freedesktop.ScreenSaver /ScreenSaver, kscreesaver should set org.freedesktop.ConsoleKit.Session.SetIdleHint(bool) at dbus system bus org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session6. I inspected the sources on kubuntu maverick and I found no invoking of such a method.
Comment 1 Martin Flöser 2015-12-15 16:41:13 UTC
ConsoleKit is nowadays unmaintained, thus I'm setting to WONTFIX. Sorry that we never came around to implement this.