On Fri, 2009-01-09 at 09:10 +0100, Vincent Fourmond wrote:
> Hello,
> 
> On Fri, Jan 9, 2009 at 2:50 AM, Ben Hutchings <b...@decadent.org.uk> wrote:
> > On Thu, 2009-01-08 at 20:13 +0100, Vincent Fourmond wrote:
> >>   It seems that xdg-screensaver simply does not work in my case... That
> >> explains a lot. I'm currently looking at that.
> >
> > Which screensaver are you using?
> 
>   Plain Xorg. See #511248.

This patch adds support for the X server screensaver if no desktop
environment or Xscreensaver is detected.  Please test whether it works
for you.  Note that "resume" does not restore the previous settings but
the default settings which I assume come from xorg.conf.  This might be
considered a bug.

Ben.

--- xdg-utils-1.0.2.orig/scripts/xdg-screensaver
+++ xdg-utils-1.0.2/scripts/xdg-screensaver
@@ -334,6 +334,7 @@
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
     elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; 
then DE=xfce;
+    else DE='';
     fi
 }
 
@@ -424,8 +425,12 @@
     xscreensaver)
       screensaver_xscreensaver "$1"
       ;;
-  esac
 
+    '')
+      screensaver_xserver "$1"
+      ;;
+  esac
+         
   if [ "$1" = "suspend" ] ; then
       # Save DPMS state
       if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then
@@ -584,6 +589,49 @@
     esac
 }
 
+screensaver_xserver()
+{
+    case "$1" in
+        suspend) 
+        xset s off > /dev/null
+        result=$?
+        ;;
+
+        resume)
+        xset s default > /dev/null
+        result=$?
+        ;;
+        
+        activate)
+        xset s activate > /dev/null
+        result=$?
+        ;;
+
+        reset)
+        xset s reset > /dev/null
+        result=$?
+        ;;
+
+        status)
+        timeout=`xset q | sed '/^Screen Saver:/,/^[^ ]/ { s/.*timeout: 
*\([0-9]*\).*/\1/; t }; d'`
+        result=$?
+        if [ "$timeout" -gt 0 ]; then
+            echo "enabled"
+        elif [ "$timeout" -eq 0 ]; then
+            echo "disabled"
+        else
+            echo "ERROR:  xset q did not report the screensaver timeout" >&2
+            return 1
+        fi
+        ;;
+
+        *)
+        echo "ERROR:  Unknown command '$1'" >&2
+        return 1
+        ;;
+    esac
+}
+
 screensaver_suspend_loop()
 {
   lockfile
--- END ---

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to