#!/bin/zsh

[ "${DOTWRYN}" ] || {
	notify-send 'I3 UTILS' 'cannot determine $DOTWRYN for utility execution'
	return 1
}

command -v scwrypts &>/dev/null || {
	scwrypts() { "${DOTWRYN}/zsh/plugins/scwrypts/scwrypts" $@; }
}

export CI=true
export DESKTOP__SFX_PATH="${HOME}/Media/sfx"
export SCWRYPTS_LOG_LEVEL=0
case $(hostnamectl --static) in
	( pikachu )
		export DESKTOP__BACKLIGHT_DEVICE=xrandr-fake-brightness
		export XRANDR_TARGET=DP-2
		;;
esac

#####################################################################

case $1 in
	( next | previous | play-pause ) playerctl $1 ;;
	( fastforward ) playerctl position 5+ ;;
	( rewind      ) playerctl position 5- ;;

	( volumedown ) scwrypts media pulseaudio volume -- sink down ;;
	( volumeup   ) scwrypts media pulseaudio volume -- sink up ;;
	( volumemute ) scwrypts media pulseaudio volume -- sink mute ;;
	( micmute    ) scwrypts media pulseaudio volume -- source mute ;;

	( backlightup   ) scwrypts desktop backlight -- up ;;
	( backlightdown ) scwrypts desktop backlight -- down ;;

	( lock ) scwrypts desktop lock i3 -- ;;

	( bgrandomize ) scwrypts desktop set i3 background -- random ;;

	( logout ) scwrypts desktop i3 logout -- ;;

	( launch )
		local PROGRAM
		local ARGS=()
		case $2 in
			messages ) PROGRAM=slack ARGS+=(-c Slack --has-statusbar-icon) ;;
			voice    ) PROGRAM=google-voice-desktop ;;
			ytmusic  ) PROGRAM=youtube-music-desktop-app ARGS+=(-c '"YouTube Music Desktop App"' --has-statusbar-icon) ;;

			1pass    ) PROGRAM=1password   ARGS+=(-c 1Password) ;;
			discord  ) PROGRAM=discord     ARGS+=(--has-statusbar-icon) ;;
			obs      ) PROGRAM=obs         ARGS+=(-c '^obs' -n -l --has-statusbar-icon) ;;
			pavuctrl ) PROGRAM=pavucontrol ARGS+=(-s 0.5 -c '^Pavucontrol') ;;
			scrcpy   ) PROGRAM=scrcpy      ARGS+=(-n -l) ;;
			spotify  ) PROGRAM=youtube-music-desktop-app ARGS+=(-c '"YouTube Music Desktop App"' --has-statusbar-icon) ;;

			*        ) PROGRAM=$2 ;;
		esac
		scwrypts i3 launch or show -- $PROGRAM ${ARGS[@]}
		;;

	( screenshot )
		command -v flameshot || notify-send "I3 UTILS" "screenshot application 'flameshot' not available"
		flameshot gui
		;;
esac
