Выключите экран, когда крышка ноутбука закрыта

Вот один способ:

sed 's/^\|$/"/g' file | paste -d, -s
"string1","string2","string3","....","string12312"
1
30.09.2018, 19:20
1 ответ

Теперь я нашел ответ, который мне подходит (однопользовательская система ).

Хотя systemd-logindобрабатывает события ACPI , существует только стандартный набор опций poweroff, reboot, halt,... (, см. man logind.conf), которые не t включить только экран.

Предшественникacpidтакже предоставляет обработчики для обработки событий ACPI, таких как закрытие крышки. Самый простой способ — напрямую загромождать использовать демонстрационный файл /etc/acpi/handler.shи изменить раздел

button/lid)
    case "$3" in
        close)
            logger 'LID closed'
            ;;
        open)
            logger 'LID opened'
            ;;
        *)
            logger "ACPI action undefined: $3"
            ;;

-

button/lid)
    case "$3" in
        close)
            logger 'LID closed'
            XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force off
            ;;
        open)
            logger 'LID opened'
            XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force on
            ;;
        *)
            logger "ACPI action undefined: $3"
            ;;

(Для широкого использования acpidопределенно рекомендуется создать отдельное правило/файл для этой задачи.)

Пояснение

xset dpms force offнеявно выключает экран$DISPLAY(иначеxset -d $DISPLAY dpms force off). Для этого ему нужен файл авторизации )cookie (человека, который запустил X, расположенный по адресу $XAUTHORITY.

В случае, если Xбыл запущен rootво время входа в систему (, что является стандартным случаем ), может быть достаточно простого xset dpms force off.

Я запускаю Xв конфигурации ~/.shellrcмоей оболочки входа в систему. Следовательно, я должен вручную дать ему отображение и куки меня.


Приложение

Можно подкрутить еще больше, чтобы не использовать команду при включении переменного тока(xsetвыключает все подключенные экраны и udevне обнаруживает переключатель крышки на моем система ).

        close)
            logger 'LID closed'
            if [[ $(cat /sys/class/power_supply/AC/online) == 0 ]];then
                XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force off
            fi
            ;;
3
27.01.2020, 23:31

Теги

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