아치/시스템에서 덮개를 닫을 때 화면 일시 중지 및 잠금

아치/시스템에서 덮개를 닫을 때 화면 일시 중지 및 잠금

화면을 잠그고 덮개를 닫았을 때 일시 중지하는 가장 간단한 방법은 무엇입니까? 이벤트 후크를 사용하고 있는데 /etc/systemd/logind.conf뚜껑을 닫으면 성공적으로 중단됩니다. 그러나 잠금 부분에 관해서는 길을 잃었습니다. 일부 화면 보호기 서비스를 활성화해야 하며 어떻게 두 이벤트를 동시에 트리거할 수 있습니까 logind.conf?

답변1

에는 여러 가지 예가 있습니다.아치스 위키.

기본적으로 화면 잠금용 서비스 파일을 생성하고 해당 파일이 suspend, hibernate또는 sleep대상에 연결되어 있는지 확인하는 작업이 포함됩니다.

다음과 같은 간단한 화면 잠금을 사용하는 경우잠그다, /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

위키의 다른 예에는 다른 서비스를 끄고 시작하는 등의 더 복잡한 옵션이 있습니다.

답변2

Jasonwryan의 답변은 정확하지만 불완전합니다. 일시 중지 후(이전은 아님) 안전하게 잠그려면 루트가 아닌 프로세스로 인해 커널이 일시 중지되지 않을 수 있으므로 다음을 추가해야 합니다.이전=강제 인스턴스체계기다리다실행 시작에게 전화 해잠그다일시중지하기 전에 시작하세요. 사용수면 목표일시 중지, 최대 절전 모드 및 하이브리드 절전 모드를 다룹니다.

[Unit]
 Description=Lock
+Before=sleep.target

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

 [Install]
-WantedBy=suspend.target
+WantedBy=sleep.target

답변3

openrcwith를 사용하는 경우 elogind대체 솔루션이 있습니까(systemd에 종속되지 않음):

#!/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의 첫 번째 결과 중에 나타났기 때문에 이 글을 게시합니다.

답변4

여기에 제시된 모든 답변에는 한 가지 근본적인 결함이 있습니다. 즉, 어떤 좌석/세션이 활성화되어 있는지에 관계없이 DISPLAY 변수를 개별적으로 설정합니다. 여기에는 자신만의 시스템 서비스 파일을 작성하는 작업이 포함됩니다.

따라서 일시 중단되기 전에 DBUS 알림을 보낸다는 사실 때문에 logind(내 생각에는 systemd의 일부)를 사용하는 것이 좋습니다. 이 메시지를 구독하면 데스크톱 환경에서 화면 잠금 기능을 실행하고 실제로 올바른 화면/세션을 잠글 수 있습니다.

그 밖에도 다음과 같은 것들이 있습니다.https://github.com/swaywm/swayidle이미 구현했습니다. 예를 들어 내 창 관리자 구성은 다음과 같습니다.

exec swayidle -w \
    timeout 300  'swaylock -i $wallpaper' \
    timeout 600  'swaymsg "output * dpms off"' \
    resume       'swaymsg "output * dpms on"' \
    before-sleep 'swaylock -i $wallpaper' \
    lock         'swaylock -i $wallpaper'

일정 시간 후, 정지 전, 화면 잠금이 요청될 때마다 자동으로 화면을 잠급니다. HandleLidSwitch=lock노트북이 종료될 때 노트북을 잠그도록 /etc/systemd/logind.conf에 설정했습니다 .

편집: 또한 데스크톱 세션에 대해 DBUS 지원을 활성화해야 합니다. 콘솔에서 직접 창 관리자(sway)를 시작하므로 내 호출은 다음과 같습니다.

exec dbus-run-session sway

마찬가지로 다음 줄을 사용하여 X 창 관리자인 i3을 시작할 수도 있습니다(이 부분은 제대로 테스트하지 않았습니다).~/.xinitrc

exec dbus-launch i3 > /dev/null

편집: 이 답변이 제공되었습니다.많은후에. 이 답변이 제공되는 시점에 이것이 이미 가능한지 모르겠으며 다른 저자의 신용을 떨어뜨리고 싶지 않습니다.

관련 정보