Summary: | xdg-screensaver fails with KDE4, tries to use dcop instead of dbus | ||
---|---|---|---|
Product: | Portland | Reporter: | Moritz Moeller-Herrmann <moritz-freedesktop> |
Component: | xdg-utils | Assignee: | Fathi Boudra <fabo> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | yaohan.chen |
Version: | 1.0 | Keywords: | patch |
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | |||
Bug Blocks: | 23105 |
Description
Moritz Moeller-Herrmann
2008-09-11 13:50:31 UTC
The detection/use of KDE4 DE is already fixed in svn. Unfortunately, the mapping of xdg-screensaver commands to dbus equivalents is not complete. Fwiw, what I've been trying to use and/or map to was: qdbus org.freedesktop.ScreenSaver /ScreenSaver commands available there include: Inhibit, GetActive, SetActive, Lock, UnInhibit Any additional help, insight, patches welcome. Here are the commands for suspend, resume, reset and lock; I don't know how to check the status, and the reset command isn't working for me...There is some documentation on the DBUS API at <http://www.mail-archive.com/xdg@lists.freedesktop.org/msg03804.html>. # suspend cookie=$(qdbus org.freedesktop.ScreenSaver /ScreenSaver Inhibit "$$" \ "Suspending screensaver while Window $window_id is open") # the suspense is removed when the calling process exits, so the # script needs to fork to call it # resume qdbus org.freedesktop.ScreenSaver /ScreenSaver Uninhibit $cookie # reset qdbus org.freedesktop.ScreenSaver /ScreenSaver SetActive False # or qdbus org.freedesktop.ScreenSaver /ScreenSaver SimulateUserActivity # but neither is working for me. SetActive True does launch the # screensaver without locking though # lock qdbus org.kde.krunner /ScreenSaver Lock Initial support is already in cvs. $ qdbus org.freedesktop.ScreenSaver /ScreenSaver signal void org.freedesktop.ScreenSaver.ActiveChanged(bool) method bool org.freedesktop.ScreenSaver.GetActive() method uint org.freedesktop.ScreenSaver.GetActiveTime() method uint org.freedesktop.ScreenSaver.GetSessionIdleTime() method uint org.freedesktop.ScreenSaver.Inhibit(QString application_name, QString reason_for_inhibit) method void org.freedesktop.ScreenSaver.Lock() method bool org.freedesktop.ScreenSaver.SetActive(bool e) method void org.freedesktop.ScreenSaver.SimulateUserActivity() method uint org.freedesktop.ScreenSaver.Throttle(QString application_name, QString reason_for_inhibit) method void org.freedesktop.ScreenSaver.UnInhibit(uint cookie) method void org.freedesktop.ScreenSaver.UnThrottle(uint cookie) now it need to detect kde4, i just done a simple patch like this : Index: xdg-screensaver =================================================================== RCS file: /cvs/portland/portland/xdg-utils/scripts/xdg-screensaver,v retrieving revision 1.41 diff -r1.41 xdg-screensaver 334c334,335 < if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; --- > if [ x"$KDE_FULL_SESSION" = x"true" ] && [ x"$KDE_SESSION_VERSION" = x"4" ]; then DE=kde4; > elif [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde3; 416c417 < kde) --- > kde3) 419c420,422 < --- > kde4) > screensaver_freedesktop "$1" > ;; Fixed in CVS |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.