swayidle/swaylock을 다시 로드하는 방법은 무엇입니까?

swayidle/swaylock을 다시 로드하는 방법은 무엇입니까?

내 것에 .sway/config

exec swayidle -w \
        timeout 30 'swaylock -f -c 000000' \
        timeout 30 'swaymsg "output * dpms off"' \
                resume 'swaymsg "output * dpms on"' \
        before-sleep 'swaylock -f -c 000000'

제한 시간을 늘리기로 결정했다고 가정해 보겠습니다.

exec swayidle -w \
        timeout 180 'swaylock -f -c 000000' \
        timeout 180 'swaymsg "output * dpms off"' \
                resume 'swaymsg "output * dpms on"' \
        before-sleep 'swaylock -f -c 000000'

이 설정을 어떻게 다시 로드하나요? 또한 이 명령을 수동으로 실행하려고 하면 다음과 같은 메시지 killall swayidle가 나타납니다.

Failed to find session name: PID 8472 does not belong to any known session
No command specified! Nothing to do, will exit

swayidle업데이트된 시간 제한으로 어떻게 실행할 수 있나요 ?

답변1

스크립트를 사용했는데 잘 작동합니다. 아마도 이 접근 방식이 도움이 될 것입니다. 내 잠금 스크립트 "mylock"의 관련 부분은 다음과 같습니다.

#!/usr/bin/env bash

[[ "$SWAYSOCK" ]] && {
    TIMEOUT=600

    BACKGROUND_COLLECTION=~/.fluxbox/backgrounds
    BACKGROUND=$( ls $BACKGROUND_COLLECTION | shuf -n 1)
    case "$1" in
        lock-now)
            BG='&'
            [[ "$2" == "wait" ]] && BG=''
            swaylock -f --image "$BACKGROUND_COLLECTION/$BACKGROUND" $BG
            ;;

        lock-off)
            pkill swayidle
            swayidle -w \
                timeout $TIMEOUT  "swaymsg 'output * dpms off'" \
                resume            "swaymsg 'output * dpms on'" \
                before-sleep      "mylock lock-now wait; mylock enable-lock" &
            rofi -width 20 -e "screen lock disabled"
            ;;

        enable-lock|*)
            pkill swayidle
            swayidle -w \
                timeout $TIMEOUT                "swaymsg 'output * dpms off'"  resume "swaymsg 'output * dpms on'" \
                timeout $(( TIMEOUT * 2 ))      "swaymsg 'output * dpms on'; mylock lock-now" \
                timeout $(( TIMEOUT * 3 ))      "swaymsg 'output * dpms off'" resume "swaymsg 'output * dpms on'" \
                timeout $(( TIMEOUT * 4 ))      "sudo systemctl suspend" \
                before-sleep                    "mylock lock-now wait" &
            ;;
    esac

    #ps -ef |grep '[s]wayidle'
    exit $?
}

...그리고 sway 구성에서는 다음과 같습니다.

set $a Mod1
set $mod Mod4
set $c Control
set $s Shift
...
bindsym $a+$c+l    exec mylock lock-now
bindsym $mod+l     exec mylock lock-now
bindsym $s+$a+$c+l exec mylock lock-off
bindsym $s+$mod+l  exec mylock lock-off

이는 매우 복잡하고 동적인 잠금 동작을 허용합니다.

  • 시간 초과 X초, 화면이 비어 있음
  • 2X초의 시간 초과 후 화면이 잠기고 임의의 사진이 표시됩니다.
  • 3번의 시간 초과 후에는 화면이 다시 공백으로 표시됩니다(단, 잠긴 상태는 유지됩니다).

예를 들어 집에 있고 보안에 대해 걱정하지 않지만 항상 잠금을 해제해야 해서 짜증이 나는 경우 자물쇠를 끌 수 있으면 좋겠습니다. Shift-$mod-L을 누르기만 하면 됩니다.

하지만 - 노트북을 일시 정지할 때 원래의 잠금 장치가 적용되기를 원합니다(그렇지 않으면 잠에 들 때 복원하는 것을 잊어버리거나 노트북을 들고 나갈 때 잊어버릴 수도 있습니다).

"지금" 노트북을 수동으로 잠그려면 $mod-L을 사용하세요.

(Zenity는 잠금 작업에 대한 시각적 피드백을 위한 선택 사항입니다.)

이 접근 방식을 귀하의 사용 사례에 맞게 조정할 수 있기를 바랍니다.

답변2

Sway 구성에 대한 새로운 변경 사항을 사용하려면 다시 로드하기만 하면 됩니다. 기본 단축키는 ++ Alt이어야 합니다 . 하지만 물론 스웨이 구성에서 원하는 대로 수정할 수도 있습니다. 예를 들어:ShiftC

# Reload the configuration file
bindsym Mod4+R reload

그러면 다시 로드 작업이 ⊞ Win+ 로 설정됩니다 R. 먼저 이전 단축키를 사용하여 다시 로드하는 것을 잊지 마세요.

편집: 이것이 실제로 swayidle(또는 에 의해 실행되는 다른 것 exec)을 다시 로드하지 않는다는 것을 알아냈습니다. 그러나 이러한 프로그램을 다시 로드하려면 수동으로(예: 를 실행하여 killall swayidle) 종료한 다음 일시적으로 sway 구성의 명령을 로 변경 exec_always하고 구성을 다시 로드할 수 있습니다. 나중에 원래 상태로 다시 변경하는 것을 잊지 마세요 exec. 그렇지 않으면 나중에 구성을 다시 로드할 때마다 새로운 swayidle 인스턴스를 얻게 됩니다.

관련 정보