画面がタイムアウトになったときとスリープが解除されたときにスクリプトを実行する方法を知りたいのですが。休止状態やサスペンドについてではなく、画面がオフになったときだけです。
理由は、LEDキーボードを使用していて、起動時に組み込みのLEDを切り替えたいからです。
xset -q
を使用して、モニターのステータスを確認できます。これまでのところ、モニターのDPMS状態が「モニターがオン」、「モニターがオフ」、または「モニターがサスペンド中」になっています。 xorgの起動後に自動起動するスクリプトを作成できます。
#!/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
スクリプトをテストするには、xset dpms force suspend
を使用して画面をサスペンド状態にします。
上記のように、オフにはさまざまな状態があるように見えるため、「Monitor is On」のgrepをお勧めします。