#!/usr/bin/fish
#
# Screenshot wrapper
#
# Take a screenshot of a
#   region, window, or screen
# and
#   save it to $dest
#   copy it to the clipboard
#   pipe it through tesseract and xclip the result


function capture
	# Screenshot save location
	set dest $HOME/Screenshots/

	#set tmp_file (mktemp --tmpdir "scrot-tmp-XXX.png")
	set tmp_file "/tmp/scrot-tmp.png"

	# Capture the desired portion of the screen
	switch $argv[1]
		case window
			scrot --overwrite --silent --focused $tmp_file
		case screen
			scrot --overwrite --silent $tmp_file
		case region
			scrot --overwrite --silent --select --freeze --line style=dash,width=2 $tmp_file
		case "*"
			echo "Unknown source \"$argv[1]\""
			echo ""
			echo "Usage: capture [source] [target]"
			echo "    Valid sources: window, screen, region"
			echo "    Valid targets: save, copy, ocr"
			return 0
	end

	# Output to the desired location
	switch $argv[2]
		case save
			set fname (md5sum $tmp_file | cut -c 1-32)
			mv $tmp_file "$dest$fname.png"

		case copy
			# Don't use the mktmp file here, since we can't clean
			#   it away immediately. Use the fixed /tmp/scrot-clip insead.
			# (Only applicable when a mktemp file is being used)
			#rm $tmp_file
			#set tmp_file /tmp/scrot-clip.png

			xclip -i -selection clipboard -t "image/png" $tmp_file

		case ocr
			# Recognize text
			set ocr (tesseract --dpi 96 -l eng $tmp_file stdout)

			# Trim whitespace and copy to clipboard
			echo $ocr | sed -e "s/^[ \t]*//" | xclip -i -rmlastnl -selection clipboard
			rm $tmp_file

		case "*"
			echo "Unknown target \"$argv[2]\""
			echo ""
			echo "Usage: capture [source] [target]"
			echo "    Valid sources: window, screen, region"
			echo "    Valid targets: save, copy, ocr"
			return 0
	end

	return 1
end

# Awesomewm refuses to execute this without a sleep.
sleep 0.1
capture $argv