Fiw-Gentoo-Dots/configs/kde-shortcuts/files/.local/bin/fiw-shot

49 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/env bash
# fiw-shot: Spectacle in background mode (never opens the app window).
# The shot goes straight to the clipboard, then a notification shows the
# thumbnail (drag it into any app) with Save / Edit buttons.
#
# fiw-shot region Alt+S select area (adjust with handles, Enter = take)
# fiw-shot screen Alt+D monitor under the cursor
set -u
mode=${1:-region}
tmp_dir="${XDG_RUNTIME_DIR:-/tmp}/fiw-shot" # tmpfs, gone at logout
save_dir="$HOME/Pictures/Screenshots"
case $mode in
region) flag=-r ;;
screen) flag=-m ;;
*) echo "usage: fiw-shot region|screen" >&2; exit 2 ;;
esac
mkdir -p "$tmp_dir"
# keep the last 20 unsaved shots, drop older ones
ls -1t "$tmp_dir"/*.png 2>/dev/null | tail -n +21 | xargs -r rm -f --
name="Screenshot_$(date +%Y%m%d_%H%M%S).png"
shot="$tmp_dir/$name"
spectacle --background --nonotify $flag --output "$shot" 2>/dev/null
[[ -s $shot ]] || exit 0 # Esc during selection: nothing to do
wl-copy --type image/png < "$shot"
action=$(notify-send --app-name=Screenshot --icon="$shot" \
--hint="variant:x-kde-urls:@as ['file://$shot']" \
--action=save=Save --action=edit=Edit \
"Copied to clipboard" "$name")
case $action in
save)
mkdir -p "$save_dir"
cp -- "$shot" "$save_dir/$name"
notify-send --transient --app-name=Screenshot --icon="$save_dir/$name" \
--hint="variant:x-kde-urls:@as ['file://$save_dir/$name']" \
"Saved" "$save_dir/$name"
;;
edit)
# Spectacle's editor; copy/save from there when done
spectacle --edit-existing "$shot"
;;
esac