Update X.org packages (fixes bug with intel driver)
[hvlinux.git] / stage2 / misc / acpi / suspend2ram.sh
index f7db74c..6fdbd96 100755 (executable)
@@ -1,10 +1,36 @@
 #!/bin/sh
 
-if [ -f /proc/acpi/button/lid/LID/state ]; then
-    if grep -q open /proc/acpi/button/lid/LID/state; then
-        # Do not act on lid opened event. Only on lid closed.
-        exit 0
-    fi
+case "$1" in
+    button-sleep)
+        logger "Sleep button pressed"
+        ;;
+    button-lid)
+        if [ -f /proc/acpi/button/lid/LID/state ]; then
+            if grep -q open /proc/acpi/button/lid/LID/state; then
+                logger "Lid opened detected, do nothing"
+                # Do not act on lid opened event. Only on lid closed.
+                exit 0
+            fi
+
+            logger "Lid closed detected"
+        fi
+        ;;
+    *)
+        logger "Unknown event: ${1}"
+        ;;
+esac
+
+logger "Going to sleep"
+
+XSCREENSAVER_ACTIVE="$(pidof /usr/bin/xscreensaver)"
+
+# Check if xscreensaver is running. if not, just skip on.
+if [ "x${XSCREENSAVER_ACTIVE}" != "x" ]; then
+    # Run the lock command as the user who owns xscreensaver process,
+    # and not as root, which won't work.
+    su "$(ps aux | grep xscreensaver | grep -v grep | grep ${XSCREENSAVER_ACTIVE} | awk '{print $1}' )" \
+        -c "/usr/bin/xscreensaver-command -lock" &
+    sleep 1
 fi
 
 # discover video card's ID
@@ -21,13 +47,8 @@ sync
 # temporary file
 cat /proc/bus/pci/$ID > $TMP_FILE
 
-# Stopping network.
-/etc/rc.d/init.d/named stop
-/etc/rc.d/init.d/network stop
-
 echo "Entering suspend mode"
 
-# suspend
 echo -n mem > /sys/power/state
 
 echo "Resuming"
@@ -36,8 +57,5 @@ echo "Resuming"
 # on resume
 cat $TMP_FILE > /proc/bus/pci/$ID
 
-/etc/rc.d/init.d/network start
-/etc/rc.d/init.d/named start
-
 # remove temporary file
 rm -f $TMP_FILE