Выполнять команду при обнаружении взаимодействия пользователя (например: перемещение мыши, нажатие клавиши)

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

  • Escape on Control, управление клавишей Capslock, клавиша Capslock on Escape
  • Принудите X использовать вторую видеокарту, чтобы я мог пройти первую карту до XEN VM?
  • Как работает GUI в Unix / Linux?
  • Xorg -configure не работает с драйверами nouveau
  • Прикрепите терминал к рабочему столу X, работающему в VM
  • Какую графическую программу запуска я могу использовать?
  • Linux Mint 13 Xfce оконная кнопка исчезла и нет курсора мыши в текстовом режиме
  • Как настроить клавиши numpad с помощью XKB?
  • 2 Solutions collect form web for “Выполнять команду при обнаружении взаимодействия пользователя (например: перемещение мыши, нажатие клавиши)”

    Предположительно, вы знаете о xset dpms который обеспечивает управление питанием дисплея, и ярлык, который меняет прогрессивную подсветку, но если этого недостаточно, вы можете обнаружить движение, когда вы находитесь в режиме ожидания, используя xinput следующим образом.

    Перечислите устройства ввода с помощью простого xinput и найдите идентификаторы мыши и клавиатуры, которые вы хотите прослушать. В моем случае это было 11 и 9.

     Logitech USB Optical Mouse id=11 [slave pointer (2)] HID 05f3:0007 id=9 [slave keyboard (3)] 

    Затем вы можете ожидать выхода из xinput --test для каждого идентификатора:

     xinput --test 9 | read stuff & pid1=$! xinput --test 11 | read stuff & pid2=$! wait -n kill -hup $pid1 $pid2 2>/dev/null echo 'ready' 

    Вы можете попробовать использовать dbus . В частности, используйте dbus-send для вызова метода org.freedesktop.ScreenSaver на org.freedesktop.ScreenSaver :

     dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call --print-reply=literal /ScreenSaver org.freedesktop.ScreenSaver.GetSessionIdleTime 

    Это напечатает 4 пробела, затем «uint32», затем количество миллисекунд с момента последнего нажатия пользователем клавиши или перемещения мыши. Вы можете извлечь номер с помощью команды cut :

     echo $result | cut -d ' ' -f 5 

    Для этого требуется регулярный опрос dbus , поэтому будет задержка между вводом пользователя и ответом вашего сценария в зависимости от того, как часто вы проводите опрос.

    Interesting Posts

    Как связать Ctrl + стрелки / backspace / del с командами Readline

    Как перенести существующую систему Linux в раздел LVM

    Как удалить неиспользованный физический том из LVM?

    Как ограничить доступ к Интернету для определенного пользователя на LAN с помощью iptables в Linux

    Как вы получаете `pam_succeed_if.so` для распознавания пользователя` service`?

    .forward имя файла и разделитель папок

    Что именно мы имеем в виду, когда говорим, что мы используем Linux?

    Истинное vim-подобное поведение в Chromium

    Можно ли отключить программу GUI, запущенную в vifm из vifm?

    Общий препроцессор добавляет дополнительные пробелы

    Есть ли дистрибутив Linux с воспроизводимой системой сборки?

    Почему Linux показывает разделы разделов устройств для диска без разделов?

    Установка VMWare на Arch Linux

    Как изменить размер шрифта, количество строк / столбцов на терминале

    Как запустить демон с настраиваемыми параметрами

    Linux и Unix - лучшая ОС в мире.