1

Есть ли способ установить какой-нибудь хук, который обеспечит xlock или аналогичной программы перед тем, как мой ноутбук перейдет в спящий режим, независимо от источника запроса (вызова pm-suspend из скрипта или просто закрытия крышка и т. д.) и оконный менеджер я сейчас использую?

(В настоящее время я использую Debian Linux, но я предполагаю, что будет решение, не зависящее от распространения.)

1 ответ1

3

Нет, так как ядро не предоставляет какой-либо сигнал "засыпания" до замораживания всех процессов, нет никакого независимого от распределения способа его обнаружения.

Тем не менее, почти все запросы приостановки - включая закрытие крышки - имеют тенденцию проходить через несколько пользовательских интерфейсов API: в конечном итоге они либо вызывают функцию Suspend() systemd-logind через D-Bus, либо порождают команду pm-suspend . Оба имеют различные виды "крючков", которые можно использовать для этого.

(Обратите внимание, что независимо от того, что вы делаете, прямое echo mem > /sys/power/state остается практически невидимым для пространства пользователя, если не считать внезапных скачков часов ...)

Итак, если вы используете systemd в качестве init:

  1. Установите xss-lock и сделайте так, чтобы среда рабочего стола запускала его при входе в систему (через ~/.xinitrc , через ~/.config/autostart/ или через что угодно):

    xss-lock xlock &

    Это будет обрабатывать предварительные уведомления systemd, а также ручные loginctl lock-sessions если они вам понадобятся.

  2. Создайте скрипт подключения pm-utils в /etc/pm/sleep.d/50lock:

    #!/bin/sh loginctl lock-сессии

    (Не забудьте chmod +x .) Это не нужно для обычного приостановления systemd, но оно будет отправлять уведомление в xss-lock всякий раз, когда вы вручную запускаете pm-suspend .

Если вы используете другую систему инициализации:

Если вы используете pm-suspend , я полагаю, вы можете запустить xlock непосредственно из скрипта ловушки pm/sleep.d. Это потребовало бы, чтобы вы также непосредственно устанавливали переменные окружения DISPLAY и XAUTHORITY , что довольно ужасно, так как они могут варьироваться от загрузки к загрузке (хотя некоторые люди используют жесткий код :0 там ...)

В целом, в этой ситуации методы, специфичные для среды рабочего стола, могут работать лучше.

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