random-scripts/wayland-screenshot.sh

55 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/zsh
local resp="$(fuzzel --index -d <<'EOF'
Whole screen
Current window
Selected area
Copy text with OCR (English)
Copy text with OCR (Japanese)
Select a color from the screen
EOF
)"
local outfile="$(date +'screenshot-%F--%H-%M-%S.png')"
# copy_with_ocr <language>
function copy_with_ocr() {
local area="$(slurp 2>&1)"
if [[ "${area}" != 'selection cancelled' ]]; then
local text="$(grim -g "${area}" -t png /dev/fd/1 |
tesseract stdin stdout -l ${1} 2>/dev/null)"
wl-copy "${text}"
notify-send -t 5000 "Coppied Text" "Coppied ${#text} characters"
fi
}
case "${resp}" in
0)
grim "${outfile}"
;;
1)
local active_window="$(hyprctl -j activewindow)"
[[ activewindow == '{}' ]] ||
jq -r --null-input --argjson 'window' "${active_window}" \
'$window | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' |
grim -g - "${outfile}"
;;
2)
local area="$(slurp 2>&1)"
[[ "${area}" == 'selection cancelled' ]] ||
grim -g "${area}" "${outfile}"
;;
3)
copy_with_ocr eng
;;
4)
copy_with_ocr jpn
;;
5)
local color="$(hyprpicker -f hex -n -r)"
(( ${#color} == 0 )) && exit
wl-copy "${color}"
notify-send -t 5000 "Color Selected" "${color}"
;;
esac