#!/bin/sh
export SCHEME="$(xrescat basilisk.theme)"
export BAS_ROOT="$(dirname "$(realpath "$0")")/../"
restart_panel() {
pkill waybar
shchemes inject "${BAS_ROOT}/waybar/style.css"
waybar \
-c "${BAS_ROOT}/waybar/config.jsonc" \
-s "${BAS_ROOT}/waybar/style.css" & disown

}
notifs() {
rofication-gui

}
power-off-monitors() {
niri msg action power-off-monitors

}
lock() {
img="/tmp/basilisk-lock.png"
niri msg action screenshot-screen -p false -d true --path "/tmp/basilisk-lock-raw.png"
inotifywait -q -e close_write /tmp/basilisk-lock-raw.png | head -n1
magick "/tmp/basilisk-lock-raw.png" \
-set colorspace Gray \
"$img"
swaylock -i "$img" & disown

}
suspend() {
systemctl suspend && lock

}
logout() {
loginctl terminate-session ${XDG_SESSION_ID-}

}
shutdown() {
systemctl poweroff

}
reboot() {
systemctl reboot

}
reload_compositor() {
shchemes inject "${BAS_ROOT}/niri/config.kdl"

}
reload_shell() {
"${BAS_ROOT}/genctl"

}
timeout_daemon() {
pkill swayidle
swayidle -w \
timeout 300 'bas lock' \
timeout 360 'bas power-off-monitors' \
before-sleep 'bas power-off-monitors && bas lock' & disown

}
notif_daemon() {
pkill -f rofication-daemon
rofication-daemon & disown

}
wallpaper() {
pkill swaybg
swaybg -i "$(xrescat basilisk.wallpaper)"

}
theme_apps() {
shchemes inject "$HOME/.config/qutebrowser/config.py"
shchemes create_theme css > "$HOME/.config/base16.css"
shchemes create_theme css > "$HOME/.config/qutebrowser/base16.css"
pkill -HUP qutebrowser
shchemes create_theme rofi > "$HOME/.config/rofi/theme.rasi"


}
load() {
reload_shell
"$0" reload_compositor
"$0" restart_panel
"$0" notif_daemon
"$0" timeout_daemon
"$0" wallpaper
"$0" theme_apps

}
rofi_report() {
[ -n "$BASILISK_ROFI_REPORT_STATE" ] && printf %s\n  >> "$BASILISK_ROFI_REPORT_STATE"
rofi -dmenu -format i -matching prefix -auto-select -markup -theme-str '
element { font: "Noto Mono 11"; }
' $BASILISK_ROFI_ARGS
[ -n "$BASILISK_ROFI_REPORT_STATE" ] && printf %s\n  >> "$BASILISK_ROFI_REPORT_STATE"
}
if [ -z "$1" ]; then
case "$(printf %s\\n ' rb. Restart Panel
  n. Notifications
 pm. Power Off Monitors
  l. Lock
 ps. Suspend
 pe. Log Out
pdy. Shutdown
pry. Reboot
 rc. Reload Compositor
 rs. Reload Shell
rdt. Reload Timeout Daemon
rdn. Reload Notification Daemon
 rw. Reload Wallpaper
rat. Reload App Themes
 rr. Reload All'| rofi_report)" in
0) restart_panel ;;
1) notifs ;;
2) power-off-monitors ;;
3) lock ;;
4) suspend ;;
5) logout ;;
6) shutdown ;;
7) reboot ;;
8) reload_compositor ;;
9) reload_shell ;;
10) timeout_daemon ;;
11) notif_daemon ;;
12) wallpaper ;;
13) theme_apps ;;
14) load ;;
esac
else
case "$1" in
"restart_panel") restart_panel ;;
"notifs") notifs ;;
"power-off-monitors") power-off-monitors ;;
"lock") lock ;;
"suspend") suspend ;;
"logout") logout ;;
"shutdown") shutdown ;;
"reboot") reboot ;;
"reload_compositor") reload_compositor ;;
"reload_shell") reload_shell ;;
"timeout_daemon") timeout_daemon ;;
"notif_daemon") notif_daemon ;;
"wallpaper") wallpaper ;;
"theme_apps") theme_apps ;;
"load") load ;;
"rb") restart_panel ;;
"n") notifs ;;
"pm") power-off-monitors ;;
"l") lock ;;
"ps") suspend ;;
"pe") logout ;;
"pdy") shutdown ;;
"pry") reboot ;;
"rc") reload_compositor ;;
"rs") reload_shell ;;
"rdt") timeout_daemon ;;
"rdn") notif_daemon ;;
"rw") wallpaper ;;
"rat") theme_apps ;;
"rr") load ;;
esac
fi
