Приостановить и заблокировать экран при закрытии крышки в arch / systemd

22

Какой самый простой способ заблокировать экран и приостановить при закрытии крышки? Я использую события /etc/systemd/logind.confи успешно приостанавливаю работу после закрытия крышки. Однако, когда дело доходит до блокировки, я заблудился - должен ли я включить некоторую службу заставки и как я могу вызвать два события одновременно logind.conf?

pldimitrov
источник
Вне области, поэтому я комментирую: в i3 очень легко назначать комбинации клавиш для команд. Поскольку меня mod+Lуже назначили blurlock, было легко mod+Sбыть blurlock && systemctl suspend -iвместо этого. Таким образом, не при закрытии крышки, но работает очень хорошо, чтобы выбрать, хочу ли я просто заблокировать, или заблокировать и приостановить.
pzkpfw

Ответы:

17

Есть несколько примеров в Arch Wiki .

По сути, это включает в себя создание служебного файла для вашей блокировки экрана и обеспечение его привязки либо к цели suspend, hibernateлибо к sleepцели.

Если вы используете простую блокировку экрана, такую ​​как slock , это /etc/systemd/system/lock.serviceбудет выглядеть так:

[Unit]
Description=Lock the screen on resume from suspend

[Service]
User=jason
Environment=DISPLAY=:0
ExecStart=/usr/bin/slock

[Install]
WantedBy=suspend.target

Другие примеры в вики имеют более сложные опции, включая выключение и запуск других сервисов и т. Д.

jasonwryan
источник
Спасибо, я видел этот пример, но не понял, что ExecStart=/usr/bin/slockбит относится к блокировке с первого взгляда.
плдимитров
Если я приостановлю работу и вернусь, у моего диспетчера отображения X будет блокировка экрана, это здорово. А как насчет моих ттыс? Что делать, если я вошел в систему, и я приостановил и забыл выйти из своих ttys, люди могли бы переключиться туда и продолжить свою работу.
CMCDragonkai
@CMCDragonkai ты хочешь физлок, тогда ...
jasonwryan
1
Это работает, но только если вы единственный пользователь системы. Более чистое решение - использовать xss-lock(доступно в Debian, Arch Linux; также на следующей неделе Fedora) и запускать его как пользователь вместе с i3lockили slock.
Мартин Уединг,
1
@MartinUeding и @jasonwryan Userжестко закодированы. Предположение, что эта машина будет использоваться только jason(или кем-то, кто знает его пароль, например, его подруга). В идеале мы хотели бы Userбыть тем, кто инициировал приостановку, но я не нашел решения для этого (пока).
Рольф
1

Если вы используете openrcс, elogindесть ли альтернативное решение (которое не зависит от системы):

#!/bin/sh
#
# /lib/elogind/system-sleep/lock.sh
# Lock before suspend integration with elogind

username=lerax
userhome=/home/$username
export XAUTHORITY="$userhome/.Xauthority"
export DISPLAY=":0.0"

case "${1}" in
        pre)
            su $username -c "/usr/bin/slock" &
            sleep 1s;
            ;;
esac

ссылка: https://gist.github.com/ryukinix/bd0c1ddcbbafdb4149ae70e41b7c822b

Я публикую это, потому что было очень трудно найти правильный способ его работы, и эта тема появляется в первых результатах поиска Google по поводу "блокировки после приостановки" или чего-то еще.

Маноэль Вилела
источник