swaydots

my dotfiles
git clone https://git.awy.one/swaydots.git
Log | Files | Refs | README | LICENSE

maimpick (1561B)


      1 #!/bin/sh
      2 
      3 # This is bound to Shift+PrintScreen by default, requires grim. It lets you
      4 # choose the kind of screenshot to take, including copying the image or even
      5 # highlighting an area to copy.
      6 
      7 # variables
      8 output="$(date '+%y%m%d-%H%M-%S').png"
      9 wclip_cmd="wl-copy -t image/png"
     10 ocr_cmd="wl-copy"
     11 
     12 case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)\\ncopy selected image to text" | bemenu -l 7 -i -p "Screenshot which area?")" in
     13   "a selected area") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" pic-selected-"${output}" ;;
     14   "current window")
     15     geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
     16     sleep 0.2
     17     grim -g "$geometry" pic-window-"${output}" ;;
     18   "full screen") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" pic-full-"${output}" ;;
     19   "a selected area (copy)") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" - | ${wclip_cmd} ;;
     20   "current window (copy)")
     21     geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
     22     sleep 0.2
     23     grim -g "$geometry" - | ${wclip_cmd} ;;
     24   "full screen (copy)") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" - | ${wclip_cmd} ;;
     25   "copy selected image to text") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && slurp | grim -g - - > "$tmpfile" && tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" ;;
     26 esac