как сцепиться для слежения за развитием события сна?

Существует ли событие, которое я могу сцепить до того, когда монитор установлен спать? Я имею в виду просто монитор сон DPMS, не, ПК спит/приостанавливает.

Мое намерение состоит в том, чтобы запустить скрипт, когда монитор отправляется в сон, но ПК все еще включен.

Так же существует ли событие, которое инициировано, когда монитор возобновляется от сна?

1
задан 10 October 2015 в 09:57

2 ответа

xset -q скажет Вам, работает ли монитор или прочь.

Обычно, это скажет, что Вы «Контролируете, идет». Однако, если Вы выключите монитор и затем выполните команду, то она скажет Вам, что это выключено.

Попытка это, входя:

sleep 1; xset dpms force off; sleep 1; xset -q

(sleep команды там, чтобы препятствовать тому X перепутывать заказ событий). Тогда шевелите своей мышью, чтобы вернуть экран.

В сценарии, делая $(xset -q|grep Monitor|awk '{print $3;}') даст Вам переменную, которая является или On или Off.

X сложный зверь, но на моей системе он работает правильно каждый раз.

1
ответ дан 7 December 2019 в 16:08

Я создаю сценарий удара сегодня, который может предоставить лучший ответ через неделю или около этого. Тем временем я нашел этот ответ reddit со сценарием удара, который Вы могли бы использовать:

#!/bin/bash
jsdev=${1:-"/dev/input/js0"}
getxss() {
    xset q | grep -e 'timeout\:\|Standby\:' \
        | awk '{a[NR]=$1}END{asort(a);print a[1]}' RS=' '
}
tellit() { notify-send "controller xss holder" "${1:-"date"}: $(date +%T)"; }
fin() { tellit "${1:-"bye"}"; exit; }
trap 'fin "sigint recieved"' INT
slt=$((($(getxss)/5)*4)); [ $slt -lt 1 ] && slt=1; w=60
until [[ -e "$jsdev" || $w -lt 1 ]]; do
    t=$(date +%s); f="$(inotifywait -qq -e create --format '%w%f' -t $w "$(dirname $jsdev)")"
    [ "$f" == "$jsdev" ] && break || t=$(($(date +%s)-$t)) && ((w-=$t))
done; [ $w -lt 1 ] && fin "dev not found" && exit
tellit "connected"; while [ -e "$jsdev" ]; do
    read -rn1< <(jstest --nonblock "$jsdev" 2>/dev/null) \
        && [ -e "$jsdev" ] && xset -display :0 s reset dpms force on
    inotifywait -qq -e delete_self --format '%w%f' -t $slt $jsdev 2>/dev/null
done; fin "disconnected"
0
ответ дан 7 December 2019 в 16:08

Другие вопросы по тегам:

Похожие вопросы: