2023-09-14 11:41:52 -07:00
|
|
|
#!/usr/bin/zsh
|
|
|
|
|
|
|
|
local resp="$(fuzzel --index -d <<'EOF'
|
|
|
|
Whole screen
|
|
|
|
Current window
|
|
|
|
Selected area
|
2023-11-15 00:25:36 -08:00
|
|
|
Copy text with OCR (English)
|
|
|
|
Copy text with OCR (Japanese)
|
2023-11-20 23:18:58 -08:00
|
|
|
Select a color from the screen
|
2023-09-14 11:41:52 -07:00
|
|
|
EOF
|
|
|
|
)"
|
|
|
|
|
2023-11-26 18:48:29 -08:00
|
|
|
local outfile="${HOME}/downloads/$(date +'screenshot-%F--%H-%M-%S.png')"
|
2023-09-14 11:41:52 -07:00
|
|
|
|
2023-11-15 00:25:36 -08:00
|
|
|
# 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
|
|
|
|
}
|
|
|
|
|
2023-09-14 11:41:52 -07:00
|
|
|
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}"
|
|
|
|
;;
|
2023-10-30 01:01:04 -07:00
|
|
|
3)
|
2023-11-15 00:25:36 -08:00
|
|
|
copy_with_ocr eng
|
|
|
|
;;
|
|
|
|
4)
|
|
|
|
copy_with_ocr jpn
|
|
|
|
;;
|
2023-11-20 23:18:58 -08:00
|
|
|
5)
|
|
|
|
local color="$(hyprpicker -f hex -n -r)"
|
|
|
|
(( ${#color} == 0 )) && exit
|
|
|
|
wl-copy "${color}"
|
|
|
|
notify-send -t 5000 "Color Selected" "${color}"
|
|
|
|
;;
|
2023-09-14 11:41:52 -07:00
|
|
|
esac
|