Спираючись на різні джерела, я спільно спіткав ~/.config/systemd/user/screenlock.service
:
[Unit]
Description=Lock X session
Before=sleep.target
[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xautolock -locknow
[Install]
WantedBy=sleep.target
Я ввімкнув це за допомогою systemctl --user enable screenlock.service
. Але після перезавантаження, входу в систему, призупинення та відновлення (тестування як із systemctl suspend
закритою кришкою, так і з екраномjournalctl --user-unit screenlock.service
) екран не блокується, і в ньому нічого немає . Що я роблю неправильно?
Запуск DISPLAY=:0 /usr/bin/xautolock -locknow
блокує екран, як очікувалося.
$ systemctl --version
systemd 215
+PAM -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ +SECCOMP -APPARMOR
$ awesome --version
awesome v3.5.5 (Kansas City Shuffle)
• Build: Apr 11 2014 09:36:33 for x86_64 by gcc version 4.8.2 (nobody@)
• Compiled against Lua 5.2.3 (running with Lua 5.2)
• D-Bus support: ✔
$ slim -v
slim version 1.3.6
Якщо я запускаю systemctl --user start screenlock.service
блокування екрана негайно, і я отримую повідомлення журналу journalctl --user-unit screenlock.service
, настільки ExecStart
чітко це правильно.
xautolock -locker slock &
Створення системної служби з тим самим файлом працює (тобто slock
є активним при поновленні):
# ln -s "${HOME}/.config/systemd/user/screenlock.service" /usr/lib/systemd/system/screenlock.service
# systemctl enable screenlock.service
$ systemctl suspend
Але я не хочу додавати певний користувальницький файл зовні $HOME
з кількох причин:
- Послуги користувачів повинні бути чітко відокремлені від системних служб
- Служби користувачів повинні контролюватися без використання привілеїв суперпользователя
- Конфігурація повинна легко контролюватися версією
systemd-user
все ще дуже лускатий; змусити його працювати в рамках сесії за допомогою підходу, який я окреслив, допоможе звузити проблему; це все, що я можу запропонувати.
/etc/systemd/system/
або $HOME/.local/systemd/system
уникати нічого /usr
вручну. Як зазначав @jasonwryan, сеанси користувачів все ще не вважаються якісними показниками виробництва; але вони наближаються.