#!/bin/sh

# A dmenu wrapper script for system functions.
export WM=$XDG_CURRENT_DESKTOP
case "$(readlink -f /sbin/init)" in
	*systemd*) ctl='systemctl' ;;
	*) ctl='loginctl' ;;
esac

case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon" | dmenu -i -l 15 -p 'Action: ')" in
	'🔒 lock')
		setsid -f swaylock
		setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#'
		;;
	"🚪 leave $WM") swaymsg exit ;;
	"♻️ renew") swaymsg reload ;;
	'🐻 hibernate') $ctl hibernate -i ;;
	'💤 sleep') $ctl suspend -i ;;
	'🔃 reboot') $ctl reboot -i ;;
	'🖥️ shutdown') $ctl poweroff -i ;;
	'📺 display off') swayidle -w timeout 1 'wlopm --off "*"' resume 'wlopm --on "*" && kill $#' ;;
	' set background') change-background ;;
	' start idle') idle ;;
	' kill swayidle') killall swayidle ;;
	' fcitx5') fcitx5 ;;
	' kill fcitx5') killall fcitx5 ;;
	' start emacs daemon') emacs --daemon && notify-send 'emacs daemon started' ;;
	' kill emacs daemon') killall emacs && notify-send 'emacs daemon killed' ;;
	*) exit 1 ;;
esac