Dựa trên nhiều nguồn khác nhau, tôi đã cùng nhau tìm hiểu ~/.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
Tôi đã kích hoạt nó bằng cách sử dụng systemctl --user enable screenlock.service
. Nhưng sau khi khởi động lại, đăng nhập, tạm dừng và tiếp tục (đã kiểm tra cả bằng systemctl suspend
và đóng nắp) màn hình không bị khóa và không có gì trong đójournalctl --user-unit screenlock.service
. Tôi đang làm gì sai?
Chạy DISPLAY=:0 /usr/bin/xautolock -locknow
khóa màn hình như mong đợi.
$ 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
Nếu tôi chạy systemctl --user start screenlock.service
các khóa màn hình ngay lập tức và tôi nhận được một thông điệp tường trình journalctl --user-unit screenlock.service
, thì ExecStart
rõ ràng là chính xác.
xautolock -locker slock &
Tạo một dịch vụ hệ thống với cùng một tệp hoạt động (nghĩa slock
là hoạt động khi tiếp tục lại):
# ln -s "${HOME}/.config/systemd/user/screenlock.service" /usr/lib/systemd/system/screenlock.service
# systemctl enable screenlock.service
$ systemctl suspend
Nhưng tôi không muốn thêm một tệp cụ thể của người dùng bên ngoài $HOME
vì một số lý do:
- Dịch vụ người dùng nên được tách biệt rõ ràng với dịch vụ hệ thống
- Dịch vụ người dùng nên được kiểm soát mà không cần sử dụng đặc quyền superuser
- Cấu hình nên được kiểm soát phiên bản dễ dàng
systemd-user
vẫn còn rất dễ vỡ; làm cho nó hoạt động như một phần của phiên thông qua cách tiếp cận tôi đã vạch ra sẽ giúp thu hẹp vấn đề; đó là tất cả những gì tôi có thể đề xuất.
/etc/systemd/system/
hoặc $HOME/.local/systemd/system
để tránh đưa bất cứ thứ gì vào /usr
bằng tay. Như @jasonwryan đã đề cập, các phiên của người dùng vẫn chưa được coi là chất lượng sản xuất; nhưng họ đang tiến gần hơn.