#!/bin/sh # This is bound to Shift+PrintScreen by default, requires maim. It lets you # choose the kind of screenshot to take, including copying the image or even # highlighting an area to copy. scrotcucks on suicidewatch right now. # variables opts="a selected area current window full screen a selected area (copy) current window (copy) full screen (copy) copy selected image to text copy selected image to text (choose language)" output="$(date '+%y%m%d-%H%M-%S').png" xclip_cmd_png="xclip -sel clip -t image/png" xclip_cmd_text="xclip -sel clip" tesseract_langs="$(tesseract --list-langs 2>/dev/null | sed '1d;/^List/d;/osd/d')" opt="$(printf "%s\n" "${opts}" | dmenu -l 7 -i -p "Screenshot which area?")" case "${opt}" in "a selected area") maim -u -s pic-selected-"${output}" ;; "current window") maim -B -q -d 0.2 -i "$(xdotool getactivewindow)" pic-window-"${output}" ;; "full screen") maim -q -d 0.2 pic-full-"${output}" ;; "a selected area (copy)") maim -u -s | ${xclip_cmd_png} ;; "current window (copy)") maim -q -d 0.2 -i "$(xdotool getactivewindow)" | ${xclip_cmd_png} ;; "full screen (copy)") maim -q -d 0.2 | ${xclip_cmd_png} ;; "copy selected image to text") maim -u -s | tesseract stdin stdout -l eng | ${xclip_cmd_text} ;; "copy selected image to text (choose language)") lang="$(printf "%s" "$tesseract_langs" | dmenu -i -p "Choose Language")" maim -u -s | tesseract stdin stdout -l $lang | ${xclip_cmd_text} ;; esac