#!/bin/sh

MODE=
OUTPUT=
while [ $# -gt 0 ]; do
	case "$1" in
		-h|--help)
			echo "Usage: xshot [MODE] [OUTPUT]"
			echo "Make Xorg screenshot"
			echo
			echo "Modes:"
			echo "  window (w)"
			echo "  screen (s)"
			echo "  desktop (d)"
			echo "Default mode is window."
			exit 0
			;;
		window|screen|desktop)
			MODE="$1"
			;;
		*)
			if [ -z "$MODE" ]; then
				MODE="$1"
			elif [ -z "$OUTPUT" ]; then
				OUTPUT="$1"
			else
				echo "Unknown argument: $1" >&2
				exit 1
			fi
	esac
	shift
done

[ -n "$MODE" ] || MODE=window

case "$MODE" in
	window|w)
		# TODO how about getting window class and naming it according to it
		[ -n "$OUTPUT" ] || OUTPUT="xshot_$(date +%F_%H%M%S_%N).png"
		import "$OUTPUT"
		;;
	screen|s)
		# TODO mode complicated
		# https://unix.stackexchange.com/questions/247935/automatically-take-screenshot-of-specific-display-in-x#247936
		# This is going to work but question is how to specify screen/which screen
		# is currently active
		exit 1
		;;
	desktop|d)
		[ -n "$OUTPUT" ] || OUTPUT="xshot_$(date +%F_%H%M%S_%N).png"
		import -window root "$OUTPUT"
		;;
	*)
		echo "Unknown mode: $MODE" >&2
		exit 1
esac