Где мне поставить скрипт для перевода моего монитора в режим ожидания?

Приобретен отличный HDMI-телевизор / монитор Samsung, который не переходит в режим ожидания при падении сигнала. Я приобрел командный инжектор Pulse Eight CEC и решил, как включить или выключить монитор из командной строки.

Проблема в том, что я не знаю, где наиболее надежный / перспективный способ / Ubuntu / Gnome способ заставить эти команды выполнять - Что я изучал до сих пор:

systemd

Кажется, есть цели, когда пользователь вошел в систему и когда графическая система запускается, но не до входа в систему.

acpid

Поймать механизм сна / бодрствования на экране здесь звучит идеально, но я не могу найти способ сделать это.

gdm3

Кажется, поддерживает добавление сценариев почти в каждом случае ДРУГОЙ, чем при работе с клавиатурой.

xss-lock

Попытка использовать это со сценарием для сна монитора, когда он работает, и перехватить SIGHUP для выдачи команды пробуждения - но, похоже, она не работает надежно.


Я нашел это в 2015 году: Как запускать сценарии в режиме сна / пробуждения

... но почти каждый из приведенных выше вариантов выглядит как лучшее решение, чем зацикливание Фоновая задача - постоянно очищать трафик журнала или вызывать @ wait / 2 секунды после нажатия клавиши. Это лучшее из доступных решений?

1
задан 20 July 2019 в 18:08

1 ответ

Я использую приведенный ниже скрипт, чтобы выключить экран после 1 минуты бездействия. Код не принадлежит мне, я просто изменил его для своих нужд

Вам нужно установить xprintidle

sudo apt install xprintidle
cd ~
mkdir myscripts
cd myscripts

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

cat>turnoffscreen.sh<<'EOF'
#!/bin/sh
# Wanted trigger timeout in milliseconds.
IDLE_TIME=$((1*60*1000))
IDLE_WARN=$((((1*60*1000))-((10000))))
# Sequence to execute when timeout triggers.
trigger_cmd() {

   # put your code here, the below command just an example
   xset s blank ; sleep 1 ; xset s activate 

}

sleep_time=$IDLE_TIME
triggered=false

# ceil() instead of floor()
while sleep $(((sleep_time+999)/1000)); do
    idle=$(xprintidle)

if [ $idle -ge $IDLE_WARN ]; then
    notify-send --icon=info "Turning off the screen ..."
    sleep 10
    idle_check=$(xprintidle)
       if [ $idle_check -ge $idle  ]; then
        if ! $triggered; then
                 trigger_cmd
                 triggered=true
                 sleep_time=$IDLE_TIME
        fi
     fi


    else

        triggered=false

        # Give 100 ms buffer to avoid frantic loops shortly before triggers.
        sleep_time=$((IDLE_TIME-idle+100))
    fi
done
EOF

затем сделайте его исполняемым

chmod +x turnoffscreen.sh

Добавьте его в список запускаемых приложений

gnome-session-properties
0
ответ дан 20 July 2019 в 18:08

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

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