75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Fish
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Fish
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 |