29 lines
668 B
Bash
29 lines
668 B
Bash
|
#!/usr/bin/zsh
|
||
|
|
||
|
local resp="$(fuzzel --index -d <<'EOF'
|
||
|
Whole screen
|
||
|
Current window
|
||
|
Selected area
|
||
|
EOF
|
||
|
)"
|
||
|
|
||
|
local outfile="$(date +'screenshot-%F--%H-%M-%S.png')"
|
||
|
|
||
|
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}"
|
||
|
;;
|
||
|
esac
|