Index: ffalarms/ffalarms.py
===================================================================
--- ffalarms/ffalarms.py	(revisione 12)
+++ ffalarms/ffalarms.py	(copia locale)
@@ -69,6 +69,7 @@
 ALSASTATE=%(ALSASTATE)s
 AMIXER_PID=
 ORIG_ALSASTATE=`mktemp /tmp/$0.XXXXXX`
+DISPLAY=:0
 
 COPY=
 for NAME in `ls x*.ffalarms.* | sed s/^x//`; do
@@ -78,6 +79,9 @@
 [ -n "$COPY" ] || alsactl -f "$ORIG_ALSASTATE" store
 
 quit() {
+        if [ -n "$ss_timeout" ]; then
+            xset -display $DISPLAY s $ss_timeout
+        fi
         kill "$AMIXER_PID" $!
         wait
         alsactl -f "$ORIG_ALSASTATE" restore
@@ -90,8 +94,15 @@
 
 PIDS=`ps -C ffalarms --no-heading --format "pid"` && \
     for PID in $PIDS; do kill -USR1 $PID && break; done || \
-    { DISPLAY=:0 ffalarms --puzzle & }
+    { DISPLAY=$DISPLAY ffalarms --puzzle & }
 
+ss_timeout=$(expr "$(xset q -display $DISPLAY)" : ".*timeout:[ ]*\([0-9]\+\)")
+if [ -z "$ss_timeout" ]; then
+    ss_timeout=0
+fi
+xset -display $DISPLAY s off
+xset -display $DISPLAY s reset
+
 alsactl -f "$ALSASTATE" restore
 amixer --quiet sset PCM,0 150
 for x in `seq 150 255`; do echo sset PCM,0 $x || break; sleep 1; done \
