DPMS, держите экран выключенным, когда крышка закрыта
У меня есть ноутбук под управлением Linux. В моей конфигурации xorg у меня есть настройка DPMS, так что экран автоматически отключается во время нескольких событий. В дополнение к этому я должен следующий скрипт, связанный с событиями открытия / закрытия крышки ACPI:
#!/bin/sh
for i in $(pidof X); do
CMD=$(ps --no-heading $i)
XAUTH="$(echo $CMD | sed -n 's/.*-auth \(.*\)/\1/p')"
DISPLAY="$(echo $CMD | sed -n 's/.* \(:[0-9]\) .*/\1/p')"
# turn the display off or back on
export XAUTHORITY=$XAUTH
/usr/bin/xset -display $DISPLAY dpms force $1
done
По сути, этот сценарий принимает один параметр ("включен" или "выключен"), затем проходит через все мои запущенные сеансы X и либо включает, либо выключает монитор.
Вот моя проблема. Когда я закрываю крышку ноутбука, экран гаснет, как и ожидалось, но если происходит событие мыши (например, если что-то натолкнулось на стол...), экран снова включается, даже если он закрыт (я вижу свет через боковую часть ноутбука).
Есть ли способ предотвратить включение экрана во время события мыши, если крышка закрыта?
5 ответов
Добавьте следующие строки в /etc/acpi/lid.sh
файл:
#open
screenon
chvt 7
#close
chvt 12
screenoff
Это переключится на консоль, когда крышка будет закрыта, и X не будет определять движения мыши.
Вы могли бы сделать немного магии с Xrandr; например, что-то вроде
xrandr - выход LVDS --off
выключить его и
xrandr - выход LVDS --auto
вернуть его обратно. Замените LVDS на любое имя вывода на экран вашего ноутбука.
Недостатком этого является то, что если что-то пойдет не так, может быть трудно вернуть ваш экран обратно к отключению питания.
Следуя идее отключения мыши, вы можете сделать это более избирательно и безопасно с помощью xinput:
# open
DISPLAY=:0.0 xinput set-int-prop 12 "Device Enabled" 8 1
# close
DISPLAY=:0.0 xinput set-int-prop 12 "Device Enabled" 8 0
Вы найдете ID (12 здесь) с: xinput --list
Попробуйте использовать приложение типа Power Devil для управления этим. КДЕ или Гном?
Кажется немного сложным предотвратить X от сигнализации активности и отключения DPMS при получении событий активности.
Но, поскольку вы уже находитесь в сфере сценариев, как насчет простого отключения USB-устройств, когда крышка закрыта? Эффект может быть достигнут путем простого удаления модулей или, возможно, приостановки USB-устройства. Нечто подобное может работать:
echo suspend > /sys/bus/usb/devices/usb1/power/level
Если это работает, ваш X не будет получать никаких событий, пока крышка закрыта.