49 lines
1 KiB
Text
49 lines
1 KiB
Text
|
#!/usr/bin/env sh
|
||
|
# Take a screenshot on wayland
|
||
|
# By default takes a screenshot of the whole desktop
|
||
|
# If 'region' or 'area' command is passed in will allow selecting a region to screenshot.
|
||
|
# Example: `screenshot region`
|
||
|
|
||
|
TIME="$(date +%Y-%m-%d-%H-%M-%S)"
|
||
|
readonly TIME
|
||
|
readonly TMPSCREENSHOTDIR="$HOME/.cache/screenshot"
|
||
|
readonly TMPIMGPATH="$TMPSCREENSHOTDIR/img-$TIME.png"
|
||
|
|
||
|
FULLSCREEN=true
|
||
|
|
||
|
if [ "$1" = "area" ] || [ "$1" = "region" ]; then
|
||
|
FULLSCREEN=false
|
||
|
fi
|
||
|
|
||
|
main() {
|
||
|
prepare_cache
|
||
|
take_screenshot "$FULLSCREEN"
|
||
|
if [ -n "$SCREENSHOT_POSTPROCESS" ]; then
|
||
|
eval "$SCREENSHOT_POSTPROCESS"
|
||
|
else
|
||
|
postprocess
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
prepare_cache() {
|
||
|
if [ ! -d "$TMPSCREENSHOTDIR" ]; then
|
||
|
mkdir -p "$TMPSCREENSHOTDIR"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
take_screenshot() {
|
||
|
if $1; then
|
||
|
grim "$TMPIMGPATH"
|
||
|
else
|
||
|
grim -g "$(slurp)" "$TMPIMGPATH"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
postprocess() {
|
||
|
notify-send -i "$TMPIMGPATH" "Screenshot taken" "$TMPIMGPATH"
|
||
|
echo "$TMPIMGPATH" | wl-copy
|
||
|
echo "$TMPIMGPATH"
|
||
|
}
|
||
|
|
||
|
main "$@"
|