xautolock 상태 가져오기

xautolock 상태 가져오기

나는 현재 사용하고 있습니다자동 잠금내 화면을 자동으로 잠급니다.잠그다. 하지만 영화를 보면 당연히아니요화면이 갑자기 어두워졌으면 좋겠어요. 나는 맨페이지를 읽고 xautolock -toggle키보드 단축키에 바인딩하면 모든 것을 제어할 수 있다는 것을 알았습니다.

하지만 지금은 어디에 있는지 보고 싶습니다.그렇지 않으면 나는 혼란스러울 것이다. xautolock 상태를 찾는 방법을 아는 사람이 있습니까? 아니면 현재 상태가 포함된 파일을 만들고 -enable/-disable을 사용하고 파일을 확인한 다음 뭔가 notify-send를 해야 합니까?

답변1

빠른 확인소스 코드현재 버전의 Python에서는 이 기능을 지원하지 않는다고 표시되어 있지만, 이에 대해 조금 알고 프로그래밍하는 방법을 알고 있다면 xautolock 2.2직접 구현하는 것은 어렵지 않습니다 .CX

그 이유는 다음과 같습니다. 무언가의 상태를 알고 싶을 때 xautolock마다 원하는 상태도 알 수 있습니다. 따라서 xautolock -disable끄고 싶으면 방출하면 되고 xautolock -enable그 반대의 경우도 마찬가지입니다. 이렇게 해도 xautolock다른 모든 설정에는 영향을 미치지 않습니다.

제안한 대로 상태를 직접 추적하는 것도 가능하지만 다소 신뢰할 수 없고 오류가 발생하기 쉽습니다.

답변2

대부분의 미디어 플레이어에 내장된 기능을 사용하여 관리할 수 있으며 xautolockLocker와 효과적으로 작동합니다.

유틸리티 차량그리고플레이어둘 다 화면 보호기 옵션이 있습니다.

--화면 보호기 중지, --화면 보호기를 중지하지 않음 시작 시 화면 보호기(또는 화면 차단기 및 유사한 메커니즘)를 끄고 다시 켜십시오. 종료 시 다시 엽니다(기본값: 예). 플레이어가 플레이 중일 때 화면 보호기가 항상 다시 활성화됩니다. 일시중지되었습니다. 모든 비디오 출력이나 플랫폼이 이 기능을 지원하는 것은 아닙니다. 구현하는 경우도 있고, 하지만 작동하지 않습니다(GNOME에서 자주 발생함). 다음을 사용하여 이 문제를 해결할 수 있습니다. --heartbeat-cmd 대신.

아래 줄을 포함하여 이 기능을 활성화할 수 있습니다 ~/.mpv/config.

stop-screensaver=yes

중단 없는 비디오 재생을 즐겨보세요.

사용 중인 미디어 플레이어에 이러한 기본 기능이 없는 경우 간단한 래퍼를 사용하여 동일한 효과를 얻을 수 있습니다.

#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos

usage() {
    printf "%s\n" "Usage: ${0##*/} /path/to/file"
    exit 1
}

case $# in
    1)  if [[ $1 =~ Videos ]]; then
            xset dpms 0 0 0
            xautolock -disable
            vlc "$1"
            xautolock -enable
            xset dpms 900 900 900
        else
            usage
        fi
        ;;
    *) usage
        ;;
esac

답변3

나는 OP가 요청한 작업을 수행했으며 바로 가기에 바인딩된 내 i3 구성에 모두 포함되어 있습니다(아래 참조). 그래서 Mod+o를 사용하여 화면을 잠근 다음 Mod+Shift+o를 사용하여 자동 화면 잠금을 전환합니다. 여기서 xautolock의 "상태"에 따라 "잠김" 또는 "잠금 해제"를 알리는 알림이 나타납니다. 나는 이것을 사용하여 xautlock -exit추가 파일에서 상태를 관리할 필요 없이 실행 중인지 확인합니다.

스위칭 상태를 별도로 처리하는 스크립트는 다음과 같습니다.

if xautolock -exit
    then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
    else
        notify-send -u normal -t 100 -- 'LOCK on'
        xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi

xautolock -time ...스크립트를 호출하는 위치에 따라 스크립트가 백그라운드에서 실행되고 있는지 확인해야 합니다 (예: 를 추가하여 &).

.i3/config파일에서:

exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"

bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \\"notify-send -u normal -t 100 -- 'LOCKING screen ...'\\"; fi"

관련 정보