在我的.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 秒时,屏幕锁定并显示随机照片
- 超时 3X 后,屏幕再次空白(但保持锁定状态)。
我还希望能够关闭锁定,例如,如果我在家,不担心安全,但因为必须一直解锁而烦恼 - 我只需按 Shift-$mod-L。
但是 - 当我暂停笔记本电脑时,我希望应用原始锁定(否则当我睡觉或拿起笔记本电脑出去时我可能会忘记恢复它)。
如果我想“现在”手动锁定笔记本电脑,那么只需 $mod-L。
(对于锁定操作的视觉反馈,Zenity 是可选的)。
我希望您可以根据您的用例调整这种方法。
答案2
要使用对 sway 配置所做的任何新更改,您只需重新加载它。默认快捷键应该是Alt+ Shift+ C。但是您当然可以在 sway 配置中根据您的喜好修改它。例如:
# Reload the configuration file
bindsym Mod4+R reload
这会将重新加载操作设置为⊞ Win+ R。只是不要忘记先使用之前的快捷方式重新加载它。
编辑:刚刚注意到,这实际上不会重新加载 swayidle (或由 运行的任何其他内容exec
)。然而,要重新加载此类程序,您可以手动终止它们(例如通过运行killall swayidle
),然后临时将 sway 配置中的命令更改为exec_always
并重新加载配置。只是不要忘记稍后将其更改回原来的状态exec
,否则以后每次重新加载配置时都会得到 swayidle 的新实例。