В жизни есть некоторые мелочи, к которым привыкаешь и считаешь их само собой разумеющимися. И которые очень хочется вернуть на место, если они куда-то исчезли. :) В данном случае речь идёт о блокировке системы по закрытию крышки ноутбука. На моём ThinkPad'е это действие выполняется по умолчанию — даже не нужно было лезть в настройку acpi-скриптов. А вот на eeePC — свои обработчики событий acpi, поэтому мне пришлось немного пошаманить. :)
В общем, сразу к делу. B-) В настройках eeepc-acpi-scripts, которые хранятся в
/etc/defaults/eeepc-acpi-scripts
, есть переменная LID_CLOSE_ACTION
, которая может принимать значения suspend
, nothing
или "". Последнее значение (пустая строка) обрабатывается как suspend
, обеспечивая переход в ждущий режим, параметры которого задаются в этом файле ранее. В принципе, существует возможность задать в качестве значения переменной любую строку, и она будет запущена из скрипта-обработчика /etc/acpi/action/lid.sh
как команда. Казалось бы, нужно просто поставить туда "xscreensaver-command -lock"
... Но, оказывается, не всё так просто... %) Если запускать этот скрипт из командной строки, что-то даже работает. Но, поскольку его запуском занимается демон, то некоторые действия нужно делать "в обход", через обёртки, которые реализуются функциями из /usr/share/eeepc-acpi-scripts/functions.sh
, как, например, функция lock_x_screen
. Так вот после того, как я это обнаружил, всё получилось с полпинка. :) Общая идея: в качестве команды для
LID_CLOSE_ACTION
задаём скрипт, который импортирует functions.sh
и с их помощью делает всё, что нам требуется. Более конкретно, для Debian Squeeze/Sid на eeePC, нужно сделать следующее:- В директории
/usr/local/bin
от рута создаём скриптeeepc-acpi-xlock.sh
следующего содержания:
#!/bin/sh
FUNC_LIB=/usr/share/eeepc-acpi-scripts/functions.sh
# Если библиотеки нет - молча сваливаем
[ -e "$FUNC_LIB"] || exit 0
# Если есть - импортируем
. $FUNC_LIB
lock_x_screen
exit 0
- Устанавливаем разрешения на чтение и исполнение для всех:
# chmod a+rx /usr/local/bin/eeepc-acpi-xlock.sh
- В файле
/etc/defaults/eeepc-acpi-scripts
переменнойLID_CLOSE_ACTION
присваиваем значение/usr/local/bin/eeepc-acpi-xlock.sh
Всё. =) Этого достаточно, чтобы, закрыв и открыв крышку, увидеть предложение ввести пароль. Даже ничего не нужно рестартовать: все скрипты запускаются динамически, поэтому все изменения ловятся сразу же после внесения.
Просто в качестве развлекухи :) перед запуском скринсейвера можно проиграть какой-нибудь звук или, например, запустить festival в режиме TTS, чтобы он что-нибудь ляпнул. Кстати, в Squeeze наконец-то появился русский голос для "фестиваля"! Но это уже совсем другая история. ;)
Комментариев нет:
Отправить комментарий