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はロック操作の視覚的なフィードバックのためのオプションです。)

このアプローチをお客様のユースケースに合わせて調整できることを願っています。

おすすめ記事