79 lines
2.3 KiB
Bash
Executable File
79 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# This script cleanly exits a variety of window managers, depending on the given parameters
|
|
# Also checks no windows exist on the scratchpad (as I tend to forget about those)
|
|
|
|
|
|
case "$XDG_CURRENT_DESKTOP" in
|
|
"Hyprland")
|
|
lock="hyprlock"
|
|
cmd="hyprctl clients -j | jq . | grep -E 'special' -c"
|
|
ctl="hyprctl dispatch"
|
|
logout="uwsm stop"
|
|
;;
|
|
"sway")
|
|
lock="swaylock --screenshots --clock --indicator --indicator-radius 100 --indicator-thickness 7 --effect-pixelate 25 -- effect-vignette 0.5:0.5 --ring-color 244273a --key-hl-color c6a0f6 --line-color 00000000 --inside-color 00000000 --separator-color 00000000"
|
|
cmd="swaymsg -rt get_tree | jq . | grep -E 'scratchpad_state\": \"(changed|fresh)' -c"
|
|
ctl="swaymsg"
|
|
logout="swaymsg exit"
|
|
;;
|
|
"i3")
|
|
lock='i3lock -n -c 18192666 -k --radius 180 --inside-color=24273a --layout-color=cad3f5 --time-color=cad3f5 --date-color=cad3f5 --greeter-color=cad3f5 --verif-color=cad3f5 --wrong-color=cad3f5 --modif-color=cad3f5 --ring-color=c6a0f6 --insidever-color=24273a --ringver-color=8aadf4 --insidewrong-color=24273a --ringwrong-color=ed8796 --keyhl-color=a6da95 --bshl-color=f5a97f --separator-color=24273a --date-str="%A, %d %B %Y"'
|
|
cmd="i3-msg -t get_tree | jq . | grep -E 'scratchpad_state\": \"(changed|fresh)' -c"
|
|
ctl="i3-msg"
|
|
logout="i3-msg exit"
|
|
;;
|
|
*)
|
|
dunstify -u low -t 2000 -i ~/.icons/candy-icons/apps/scalable/system-shutdown.svg "This desktop is not supported."
|
|
exit
|
|
;;
|
|
esac
|
|
|
|
spec_exist() {
|
|
n=$(eval "$cmd")
|
|
|
|
if [ "$n" -gt 0 ]; then
|
|
[ "$n" -gt 1 ] && msg="$n windows" || msg="window"
|
|
dunstify -t 3000 \
|
|
-u low \
|
|
-i ~/.icons/candy-icons/apps/scalable/system-shutdown.svg \
|
|
-a i3exit \
|
|
"Close the $msg in the scratchpad first."
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
lock() {
|
|
dunstctl set-paused true
|
|
bash -c "$lock"
|
|
dunstctl set-paused false
|
|
}
|
|
|
|
case "$1" in
|
|
lock)
|
|
lock
|
|
;;
|
|
logout)
|
|
eval "$logout"
|
|
;;
|
|
suspend)
|
|
systemctl suspend && lock
|
|
;;
|
|
hibernate)
|
|
systemctl hibernate && lock
|
|
;;
|
|
reboot)
|
|
spec_exist
|
|
systemctl reboot
|
|
;;
|
|
shutdown)
|
|
spec_exist
|
|
systemctl poweroff
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
|
|
exit 2
|
|
esac
|
|
|
|
exit 0
|