Session lock (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Session lock. Дата последней синхронизации: 30 января 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Существует множество утилит для блокировки экрана в текущем сеансе. Но важно отметить, что выбор утилиты сильно зависит от среды, в которой вы находитесь: виртуальная консоль или графический сервер (Xorg или Wayland).

Смотрите List of applications#Screen lockers.

Среды

Виртуальная консоль

Для блокировки виртуальной консоли можно использовать vlock или physlock.

Xorg

В Xorg есть много разных блокировки сеанса, поэтому этот раздел, скорее всего, будет неполным. Тем не менее, вот некоторые методы:

В большинстве сред рабочего стола предусмотрены способы блокировки сеанса.

Wayland

Можно использовать swaylock или waylock.

Блокировка сеанса

Заблокировать сеанс можно различными способами:

  • через терминал
  • с помощью графического интерфейса:
    • значком рабочего стола
    • с помощью горячих углов
    • из меню (управляемого мышью или клавиатурой)
  • с помощью горячих клавиш
  • по событию:

Последний пункт (срабатывание блокировки от события) является самым сложным, потому что вы можете сделать это одним из двух способов:

  • получить триггер действия для выполнения блокировки, а затем выполнить изначальное действие.
  • из триггера события добавить блокировку в цепочку событий. Пока это можно сделать только с помощью 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
Примечание: При использовании xss-lock с DPMS вам придётся самостоятельно гасить экран. Он не будет срабатывать при просмотре видео.

xautolock

$ xautolock -time 12 -locker "systemctl suspend" -detectsleep
Примечание: xautolock имеет ограничения у выставляемых таймеров:
  • от 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.

Смотрите также