나는 다양한 출처를 바탕으로 함께 모았습니다 ~/.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이 언급했듯이 사용자 세션은 여전히 프로덕션 품질로 간주되지 않습니다. 하지만 점점 가까워지고 있습니다.