#!/bin/bash

capture_region() {
	wayfreeze & FREEZE_PID=$!
	sleep 0.1
	REGION=$(slurp -d -c "007DFFFF" -w 1)
	if [ $? -eq 0 ]; then
	  sleep .3
	  grim -g "$REGION" - | wl-copy
	  
		caelestia shell toaster success 'Screenshot saved' 'Screenshot of region saved in clipboard' image
	else
		caelestia shell toaster error 'Screenshot failed' 'Failed to save screenshot' image
	fi
	kill $FREEZE_PID
}

capture_window() {
	REGION=$(hyprctl activewindow -j | jq -r '"\(.at | join(",")) \(.size | join("x"))"')
	grim -g "$REGION"
	
	if [ $? -eq 0 ]; then
		caelestia shell toaster success 'Screenshot saved' 'Screenshot of window in ~/Pictures' image
	else
		caelestia shell toaster error 'Screenshot failed' 'Failed to save screenshot' image
	fi
		
}

capture_screen() {
	SCREEN=$(hyprctl activeworkspace -j | jq -r ".monitor")
	grim -o "$SCREEN" - | wl-copy
	
	if [ $? -eq 0 ]; then
		caelestia shell toaster success 'Screenshot saved' 'Screenshot of monitor saved in clipboard' image
	else
		caelestia shell toaster error 'Screenshot failed' 'Failed to save screenshot' image
	fi
}

subcommand=$1
case $subcommand in
		"r" | "region")
			capture_region
			;;
		"w" | "window")
			capture_window
			;;
		"s" | "screen")
			capture_screen
			;;
		*)
			;;
esac

