#!/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