12

Мне нравится переводить дисплеи в режим энергосбережения / ожидания, когда я на некоторое время покидаю компьютер. Было бы хорошо, если бы не сверхчувствительная мышь. Иногда драйвер читает какое-то движение, которое не видно невооруженным глазом (то есть курсор), и это нарушает энергосбережение. Было бы ждать еще 10 минут, прежде чем вернуться в режим ожидания.

Мой обходной путь - следующий скрипт, связанный с C-S-q:

xlock -startCmd 'xset dpms 2 2 2' -endCmd 'xset dpms 600 1200 1300' -mode blank -echokeys -timeelapsed +usefirst

С помощью xset я устанавливаю значения в 2 секунды каждое перед переходом в режим ожидания. Во всяком случае, это нехорошо. Иногда есть интересные состояния, которые я хочу прочитать, прежде чем вводить пароль. Я мог бы держать курсор движущимся, но он грязный. (Кстати, опция mousemotion не помогает - она просто скрывает курсор, но, тем не менее, загораются дисплеи.)

Итак, вопрос: есть ли способ заставить дисплеи переходить в режим ожидания и оставаться там до тех пор, пока не будет нажата клавиша клавиатуры? Я использую gentoo и недавний Xorg, но я надеюсь, что ответ не должен быть специфичным для дистрибутива.

В основном ответ может быть таким же простым, как включить / отключить мышь в командной строке? Думаю, это бы сработало, если бы DPMS не знала эту идею.

2 ответа2

5

На сайте Unix SE есть отличный пост @pbm, который освещает эту проблему.

Короче говоря, сначала используйте xinput list чтобы получить идентификатор устройства для вашей мыши, а затем используйте

xinput --set-prop [ID#] "Device Enabled" "0"

а также

xinput --set-prop [ID#] "Device Enabled" "1"

отключить и включить мышь.

Я только что проверил их здесь, отключив мышь и затем вызвав xset dpms force standby . Размахивание мышью в течение нескольких секунд ничего не мешало экрану, но нажатие одной клавиши работало нормально. Используя вторую команду, вы вернули мышь в нормальное состояние, включая настройку "Постоянное замедление", которую мне установили мои скрипты запуска по умолчанию.

Вы должны быть в состоянии передать эти две команды -startCmd и -endCmd в xlock чтобы получить то, что вам нужно.

4

Я делаю это так в Ubuntu:

#!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

Некоторые заметки:

  • Я также выключаю монитор.
  • Лучше использовать полное имя вместо ID.

Я надеюсь, что это помогает.

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