void Linux를 사용하는 데 몇 가지 문제가 있습니다. zzz에 스크립트로 slock을 추가해 보았습니다./etc/zzz.d/suspend/slock
#!/bin/sh
slock
이상한 방식으로 작동합니다. 호출하면 zzz
slock이 발생하고 비밀번호를 입력하여 잠금이 해제될 때까지 멈추지 않습니다. 스크립트를 으로 옮겼고 /etc/zzz.d/resume/slock
이제 다시 시작하면 잠금 해제 화면이 잠시 깜박인 다음 화면이 잠깁니다. 좋지는 않지만 괜찮습니다.
하지만 또 다른 문제가 있습니다. 덮개를 닫으면 노트북이 정지되지만 화면은 전혀 잠기지 않습니다. 내 생각엔 이것 과 관련 이 있을 것 같아요 acpid
. acpid
덮개를 닫아도 노트북을 비활성화할 때 노트북이 일시 중지되지 않으므로 이는 acpid
확실히 책임이 있습니다. 패치를 시도했는데 /etc/acpi/handler.sh
이제 다음과 같습니다.
close)
# suspend-to-ram
logger "LID closed, suspending..."
slock
zzz
;;
open) logger "LID opened" ;;
*) logger "ACPI action undefined (LID): $2";;
그리고 slock
어쨌든 실행되지 않습니다. 나는 zzz
그것을 제거한 handler.sh
다음 뚜껑을 닫아도 아무 일도 일어나지 않습니다. 즉, 실제로 zzz
존재할 때 실행되지만 zzz
어떤 이유로 사용자 스크립트를 실행하지 않는다는 의미입니다. 나는 또한 두 가지를 모두 slock
(예 : voidi3lock
handler.sh
위키피디아제안) zzz.d/resume
하지만 똑같습니다. 내가 뭔가 잘못하고 있는 걸까요, 아니면 이 동작을 일으키는 다른 문제가 있는 걸까요?
답변1
다음과 같이 문제를 해결하세요.
/etc/zzz.d/일시 중단/01
#!/bin/sh
doas -u ds xsecurelock &
sleep 2
/etc/doas.conf
permit persist :wheel
permit nopass root as ds cmd xsecurelock
permit nopass :wheel as root cmd zzz
permit nopass :wheel as root cmd ZZZ
permit nopass keepenv root as root
일시 중지 스크립트에서 루트에 대해 $DISPLAY를 정의해 볼 수 있지만 이것을 알아내기에는 너무 어리석습니다.
답변2
계속하기 전에 쉘이 slock 프로세스가 중지될 때까지 기다리기 때문에 초기 솔루션이 작동하지 않습니다. 가장 간단한(그러나 최선은 아님) 솔루션은 slock &
프로세스가 계속 실행되도록 허용하는 명령을 만드는 것입니다. 그러나 이것이 장치가 정지되기 전에 slock의 실행이 완료된다는 보장은 없습니다.
xss-lock
이를 수행하는 "올바른" 방법은 call slock을 사용 하고 xset
명령을 사용하여 화면을 잠그는 것입니다. 이 두 가지 모두 Void 저장소에서 찾을 수 있습니다. xss-lock slock
xss-lock은 잠금을 위해 slock을 사용하도록 설정됩니다.
이것~해야 한다xss-lock은 정상적인 중단 시 작동해야 하므로 추가 스크립팅 없이도 작동합니다. 그러나 보류 중인 이벤트에는 항상 버그가 있으므로 xset을 통한 추가 활성화는 나쁜 생각이 아닙니다.
예 는 다음 /etc/zzz.d/suspend/slock
과 같습니다
#!/bin/sh
xset s activate
유사한 스크립트를 해당 "복구" 파일에 배치할 수 있지만 화면을 잠그기 전에 화면을 잠금 해제하는 문제는 여전히 발생합니다.