Приобретен отличный HDMI-телевизор / монитор Samsung, который не переходит в режим ожидания при падении сигнала. Я приобрел командный инжектор Pulse Eight CEC и решил, как включить или выключить монитор из командной строки.
Проблема в том, что я не знаю, где наиболее надежный / перспективный способ / Ubuntu / Gnome способ заставить эти команды выполнять - Что я изучал до сих пор:
Кажется, есть цели, когда пользователь вошел в систему и когда графическая система запускается, но не до входа в систему.
Поймать механизм сна / бодрствования на экране здесь звучит идеально, но я не могу найти способ сделать это.
Кажется, поддерживает добавление сценариев почти в каждом случае ДРУГОЙ, чем при работе с клавиатурой.
Попытка использовать это со сценарием для сна монитора, когда он работает, и перехватить SIGHUP для выдачи команды пробуждения - но, похоже, она не работает надежно.
Я нашел это в 2015 году: Как запускать сценарии в режиме сна / пробуждения
... но почти каждый из приведенных выше вариантов выглядит как лучшее решение, чем зацикливание Фоновая задача - постоянно очищать трафик журнала или вызывать @ wait / 2 секунды после нажатия клавиши. Это лучшее из доступных решений?
Я использую приведенный ниже скрипт, чтобы выключить экран после 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