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

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

  • Как устанавливаются шрифты по умолчанию для таких программ, как FireFox?
  • Если вы используете SSH на другом компьютере, как получить доступ к другим дисплеям X?
  • Начать X после автоматического входа в систему
  • Запуск моно на CentOS 5 CLI
  • Определение телевизора на ноутбуке в виде отдельного экрана xorg
  • Chrooted драйверы
  • Как организован стек графики linux?
  • Прерывание естественной прокрутки Magic trackpad
  • 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

    Изменение терминальных эмуляторов

    Чтобы настроить уровни APM на жестком диске и поддерживать их после приостановки / возобновления

    Как исправить повреждение шаров смолы?

    Поддерживает ли интерфейс интерпретатора командной строки драйверы ядра / устройства так же, как и обычная GUI-программа?

    Переменная локали LANGUAGE – как установить английский как основной язык? Ошибка в gettext?

    Получите список файлов Linux, рекурсивный и прямой вывод в файл

    Как получить имя Диспетчера отображения в Linux?

    Как создать каталог, который не может быть просмотрен и доступен только через его абсолютное имя пути?

    Поиск файлов по длине имени файла

    Ограничение размера передачи для SCP, SFTP, RSYNC?

    Экран записи в X

    Какой лучший и безопасный способ сохранить настройки приложения?

    Как ограничить размер файла журнала, используя >>

    Bash – переменная Shell получает повышенную переменную окружения в процессе child bash

    Нет Вход в систему от tty2 до 6

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