64 lines
1.3 KiB
Bash
Executable file
64 lines
1.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
NOTIFY_CMD="notify-send -i "shoot" -t 10000 -A open=Open -A delete=Delete -A edit=Edit *click*"
|
|
|
|
TARGET_DIRECTORY="$(xdg-user-dir)/Pictures/Screenshots"
|
|
|
|
SOURCE="${1:-area}"
|
|
TEMP_FILE="/tmp/screenshot.png"
|
|
|
|
getGrimArea() {
|
|
case $SOURCE in
|
|
area)
|
|
workspaces=$(hyprctl -j monitors | jq -r 'map(".workspace.id == \(.activeWorkspace.id)") | join(" or ")')
|
|
hyprctl -j clients |
|
|
jq -r ".[] | select($workspaces) | \"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1]) \(.class)\"" |
|
|
slurp -b "#11111177" -c "#1090ffff" -d -F mono
|
|
;;
|
|
active)
|
|
hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
|
|
;;
|
|
esac
|
|
return $?
|
|
}
|
|
|
|
targetFolder=""
|
|
if [[ $SOURCE == "active" ]]; then
|
|
targetFolder="/$(hyprctl -j activewindow | jq -r '(.class)')"
|
|
fi
|
|
|
|
targetPath="$TARGET_DIRECTORY$targetFolder"
|
|
mkdir -m 0744 -p "$targetPath"
|
|
|
|
targetPath="$targetPath/$(date "+%d-%b_%H-%M-%S").png"
|
|
|
|
area="$(getGrimArea)"
|
|
if [[ $? != 0 ]]; then
|
|
exit
|
|
fi
|
|
if [[ "$area" == 'invalid geometry' ]]; then
|
|
exit
|
|
fi
|
|
echo "$area"
|
|
|
|
sleep 0.1
|
|
grim -g "$area" "$targetPath"
|
|
|
|
wl-copy <"$targetPath"
|
|
|
|
response=$(
|
|
${NOTIFY_CMD} "Took screenshot"
|
|
)
|
|
echo "Responded with '$response'"
|
|
|
|
case "$response" in
|
|
delete)
|
|
rm "$targetPath"
|
|
;;
|
|
edit)
|
|
hyprctl dispatch exec pinta "$targetPath" &
|
|
;;
|
|
open)
|
|
hyprctl dispatch exec xdg-open "$targetPath" &
|
|
;;
|
|
esac
|