У меня есть ноутбук под управлением 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 ответов5

2

Вы могли бы сделать немного магии с Xrandr; например, что-то вроде

xrandr - выход LVDS --off

выключить его и

xrandr - выход LVDS --авто

вернуть его обратно. Замените LVDS на любое имя вывода на экран вашего ноутбука.

Недостатком этого является то, что, если что-то пойдет не так, может быть трудно вернуть экран обратно к отключению питания.

2

Добавьте следующие строки в файл /etc/acpi/lid.sh :

#open
screenon
chvt 7
#close
chvt 12
screenoff

Это переключится на консоль, когда крышка будет закрыта, и X не будет определять движения мыши.

1

Следуя идее отключения мыши, вы можете сделать это более избирательно и безопасно с помощью 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

0

Кажется, немного сложно предотвратить X от сигнализации активности и отключения DPMS, когда он получает события активности.

Но, поскольку вы уже находитесь в области сценариев, как насчет простого отключения USB-устройств, когда крышка закрыта? Эффект может быть достигнут путем простого удаления модулей или, возможно, приостановки USB-устройства. Нечто подобное может работать:

echo suspend > /sys/bus/usb/devices/usb1/power/level

Если это работает, ваш X не будет получать никаких событий, пока крышка закрыта.

0

Попробуйте использовать приложение вроде Power Devil для управления этим. КДЕ или Гном?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .