5

I'm wondering how to run a script when the screen times out and when it wakes. I am not talking about hibernate or suspend, but only when the screen turns off.

The reason is I have a LED keyboard and want to toggle the built-in LEDs on wake.

1 Answer 1

6

you can use xset -q to check the status of your monitor. so far i have seen DPMS states for the monitor to be "Monitor is On", "Monitor is Off" or "Monitor is in Suspend". you could write a script which you then autostart after xorg starts:

#!/bin/bash
while true; do
    xset -q | grep "Monitor is On"
    if [ $? -eq 1 ]; then
        if [ "`cat /tmp/displaystate`" != "off" ]; then 
            echo "off" > /tmp/displaystate
            # do something when display is switched off
            /opt/myScreenOffAction.sh
        fi
        sleep 1
    else 
        if [ "`cat /tmp/displaystate`" != "on" ]; then 
            echo "on" > /tmp/displaystate
            #do something when display is switched on
            /opt/myScreenOffAction.sh
        fi
        sleep 10
    fi
done

to test your script you can use xset dpms force suspend to put your screen into suspend.

I suggest you grep for "Monitor is On" as it seems there are different states for off as mentioned above.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .