Вопрос или проблема
Я запускаю Sway на Fedora 26 и хочу, чтобы мой ноутбук блокировался, когда я закрываю экран. Я изменил HandleLidSwitch
на lock
в /etc/systemd/logind.conf
и после этого выполнил systemctl restart systemd-logind
. Однако закрытие крышки ничего не дает.
Программа блокировки, которую я собираюсь использовать, — это Swaylock, и я могу вручную вызвать ее, выполнив команду swaylock
в терминале.
Как мне заставить Systemd вызывать swaylock
, когда он пытается закрыть экран (как указано в logind.conf
)?
Цель
Если HandleLidSwitch
установлен на режим сна, вы можете создать новую службу systemd с целью сна, и таким образом ваша служба будет выполняться, когда вызывается сон (крышка закрыта) вот пример с целью питания… обновите это на сон.
Команда при блокировке
Этот вопрос объясняет, как запустить команду, когда экран блокировки активирован
Скринсейвер
Вы можете использовать bash для отслеживания скринсейвера, если хотите запустить его, когда скринсейвер активирован; это объясняется здесь
Похоже, что swayidle предназначен для этого. Он может запустить swaylock “когда logind сигнализирует, что сессия должна быть заблокирована”:
swayidle -w lock 'swaylock -f -c 000000'
Ответ или решение
Чтобы заблокировать экран при закрытии крышки ноутбука с использованием systemd в окружении Sway на Fedora 26, следуйте ниже описанным подробным шагам. Этот процесс позволит вам настроить автоматическую блокировку экрана через swaylock
при закрытии крышки устройства.
Шаг 1: Конфигурация systemd-logind
Сначала убедитесь, что в файле конфигурации logind.conf
установлено правильное значение для HandleLidSwitch
. Для этого откройте файл в текстовом редакторе с правами администратора:
sudo nano /etc/systemd/logind.conf
Найдите строку с HandleLidSwitch
и измените её на:
HandleLidSwitch=lock
Если этой строки нет, добавьте её. После внесения изменений сохраните файл и выйдите из редактора.
Шаг 2: Перезапуск systemd-logind
Чтобы применить изменения, выполните следующую команду:
sudo systemctl restart systemd-logind
Шаг 3: Установка swayidle
Для автоматического вызова swaylock
при закрытии крышки ноутбука, вы можете использовать swayidle
. Если swayidle
у вас ещё не установлен, вы можете установить его через пакетный менеджер:
sudo dnf install sway
Шаг 4: Конфигурация swayidle
Чтобы настроить swayidle
для вызова swaylock
, создайте или откройте существующий конфигурационный файл для вашей сессии Sway (например, ~/.config/sway/config
) и добавьте следующую строку:
exec swayidle -w lock 'swaylock -f -c 000000'
Эта команда будет следить за событиями блокировки и вызовет swaylock
с заданным фоновым цветом (в данном случае черным).
Шаг 5: Создание службы systemd (опционально)
Если вы хотите, чтобы swaylock
запускался именно при закрытии крышки, вы можете создать пользовательскую службу systemd. Для этого создайте файл службы:
sudo nano /etc/systemd/system/lidlock.service
Вставьте следующий код в этот файл:
[Unit]
Description=Lock the screen on lid close
After=sway.service
[Service]
Type=simple
Environment=DISPLAY=:0
ExecStart=/usr/bin/swaylock -f -c 000000
Restart=on-failure
[Install]
WantedBy=logind.target
После сохранения файла выполните следующие команды, чтобы активировать и запустить службу:
sudo systemctl enable lidlock.service
sudo systemctl start lidlock.service
Шаг 6: Проверка работы
После выполнения всех шагов, закройте крышку своего ноутбука и проверьте, заблокируется ли экран с swaylock
. Если всё настроено правильно, то при закрытии крышки окно блокировки должно появляться.
Заключение
Следуя указанным выше шагам, вы сможете настроить автоматическую блокировку экрана на вашем устройстве под управлением Sway и Fedora 26 при закрытии крышки. Важно следить за журналами системы в случае возникновения проблем, чтобы получить больше информации об ошибках и их устранении.