Session lock (Русский)
Существует множество утилит для блокировки экрана в текущем сеансе. Но важно отметить, что выбор утилиты сильно зависит от среды, в которой вы находитесь: виртуальная консоль или графический сервер (Xorg или Wayland).
Смотрите List of applications#Screen lockers.
Среды
Виртуальная консоль
Для блокировки виртуальной консоли можно использовать vlock
или physlock.
Xorg
В Xorg есть много разных блокировки сеанса, поэтому этот раздел, скорее всего, будет неполным. Тем не менее, вот некоторые методы:
-
xlock
из пакета xlockmore -
xsecurelock
из пакета xsecurelock -
xscreensaver-command -lock
из пакета xscreensaver - xss-lock
-
slock
из пакета slock - kscreenlocker
- i3lock
- i3lock-colorAUR
В большинстве сред рабочего стола предусмотрены способы блокировки сеанса.
Wayland
Можно использовать swaylock или waylock.
Блокировка сеанса
Заблокировать сеанс можно различными способами:
- через терминал
- с помощью графического интерфейса:
- значком рабочего стола
- с помощью горячих углов
- из меню (управляемого мышью или клавиатурой)
- с помощью горячих клавиш
- по событию:
- бездействие (с помощью systemd, xss-lock или xautolock)
- события systemd (приостановка, гибернация и т.д.).
Последний пункт (срабатывание блокировки от события) является самым сложным, потому что вы можете сделать это одним из двух способов:
- получить триггер действия для выполнения блокировки, а затем выполнить изначальное действие.
- из триггера события добавить блокировку в цепочку событий. Пока это можно сделать только с помощью systemd.
Триггеры командных оболочек
Zsh
Чтобы выполнить команду после бездействия терминала, можно использовать переменную окружения TMOUT.
Для выполнения блокировки её можно объединить с ловушкой по сигналу ALARM. Без ловушки оболочка просто завершится.
Возможно, вы захотите определить, находитесь ли вы в графической среде, иначе ваши графические терминалы могут начать исчезать без понимания причин.
Триггеры Xorg
xss-lock
xss-lock срабатывает при одном из двух событий:
- события systemd
- DPMS
Преимуществом является то, что вы можете управлять ручной блокировкой, блокировкой по бездействию и блокировкой при уходе в ждущий режим в одном и том же месте.
Чтобы выполнить действие по одному из этих событий:
$ xss-lock <утилита-блокировки>
События systemd
По умолчанию xss-lock подписывается на suspend
, hibernate
, lock-session
и unlock-session
с соответствующими действиями (запустить блокировщик и ждать, пока пользователь разблокирует или убьёт блокировщик).
Вы можете предотвратить срабатывание xss-lock при при событиях suspend
и hibernate
(ждущий и спящий режимы) с помощью опции --ignore-sleep
.
Заблокировать сеанс вручную можно командой loginctl lock-session
.
DPMS
Настройка таймаута DPMS:
# Переход в энергоэффективный режим после 10 минут бездействия xset s on xset s 600
Сигналы DPMS также можно настроить в /etc/X11/xorg.conf.d/
в секции Monitor
.
Используя сигнал DPMS, можно установить второй таймер, например, для уведомления пользователя или затемнения экрана. Например (из xss-lock(1)):
# Погасить экран спустя три минуты неактивности, заблокировать экран спустя ещё две минуты, используя i3lock: xset s 180 120 xss-lock -n dim-screen.sh -- i3lock -n
xautolock
$ xautolock -time 12 -locker "systemctl suspend" -detectsleep
- от 1 минуты до 1 часа для
time
- от 10 минут до 2 часов для
killtime
-detectsleep
, чтобы xautolock не блокировал сеанс после возвращения из ждущего режима. Одной из приятных особенностей xautolock являются corners
.Триггеры Wayland
swayidle
swayidle получает от Wayland-композитора информацию о неактивности, а также следит за событиями systemd, и выполняет соответствующие команды. Смотрите Sway#Idle.
Уведомления D-Bus
Используя loginctl lock-session
или действие lock
в logind.conf(5), вы можете уведомить систему через DBUS о том, что хотите заблокировать сеанс. Это уведомление может быть обработано, например, с помощью xss-lock.
Бездействие
В logind.conf(5) вы можете настроить IdleAction
на lock
. Это отправит уведомление DBUS, которое должно быть кем-то обработано (например, xss-lock) для блокировки сеанса.
Обратите внимание, что это относится ко всей системе целиком (так что это не идеально для многопользовательской среды).
Обратите также внимание, что "это требует, чтобы пользовательские сеансы правильно сообщали системе о бездействии".
Юниты
Перед ждущим или спящим режимом
Можно использовать Sleep hook.
[Unit] Description=Lock the screen Before=sleep.target [Service] User=%I Type=forking Environment=DISPLAY=:0 ExecStart=/usr/bin/i3lock -c 000000 [Install] WantedBy=sleep.target
Чтобы включить его для определённого пользователя, включите sleep@имяпользователя.service
.
Закрытие крышки ноутбука
Можно использовать действие lock
для соответствующего события ACPI.