71 lines
1.4 KiB
Bash
71 lines
1.4 KiB
Bash
|
# Screenshot utils
|
||
|
shot() {
|
||
|
# Usage: shot XY
|
||
|
local destdir="$HOME/Pictures/screenshots"
|
||
|
local fname="shot-$(date +%F-%T).png"
|
||
|
local pb="fb"
|
||
|
local paste msgt msgd opts
|
||
|
|
||
|
if [ -z "$1" ]; then
|
||
|
printf "Usage: shot XY
|
||
|
X: Target
|
||
|
Y: Destination
|
||
|
|
||
|
Valid Targets:
|
||
|
w Active Window
|
||
|
a All displays
|
||
|
s Mouse Selection
|
||
|
|
||
|
Valid Destinations:
|
||
|
f Save to file (defined in function)
|
||
|
p Upload to a pastebin (defined in function)
|
||
|
"
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
# X: What to capture
|
||
|
case ${1:0:1} in
|
||
|
# Active window
|
||
|
w) printf "Focus target window now...\n"
|
||
|
opts="-i $(xdotool getactivewindow)"
|
||
|
msgt="active window"
|
||
|
;;
|
||
|
# All
|
||
|
a) msgt="all displays"
|
||
|
;;
|
||
|
# Mouse selection
|
||
|
s) opts="-s --noopengl"
|
||
|
msgt="mouse selection"
|
||
|
;;
|
||
|
|
||
|
*) printf "Unknown target: %s\n" "${1:0:1}"
|
||
|
return
|
||
|
;;
|
||
|
esac
|
||
|
# Y: Where to put the result
|
||
|
case ${1:1:1} in
|
||
|
# Save to file
|
||
|
f) msgd="file: $destdir/$fname"
|
||
|
;;
|
||
|
# Post to a pastebin
|
||
|
p) destdir=$destdir/pasted
|
||
|
msgd="pastebin"
|
||
|
paste=1;;
|
||
|
|
||
|
*) printf "Unknown destination: %s\n" "${1:1:1}"
|
||
|
return
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# Make sure destination directory will exist
|
||
|
[[ ! -d "$destdir" ]] && mkdir -p "$destdir"
|
||
|
local fpath="${destdir}/${fname}"
|
||
|
# If target is active window, give a 5 second countdown before running maim
|
||
|
[[ "$msgt" = "active window" ]] && countdown 5
|
||
|
|
||
|
maim $opts "$fpath"
|
||
|
printf "Captured %s -> %s\n" "$msgt" "$msgd"
|
||
|
# If destination is a pastebin, do the needful
|
||
|
[[ "$paste" ]] && $pb "$fpath"
|
||
|
}
|