diff options
author | Alice Carroll <git@alice-carroll.pet> | 2022-03-31 19:28:16 +0300 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2022-04-21 10:41:48 +0200 |
commit | a5f01a0e04642cf035e5ae416e7bc631988e30a6 (patch) | |
tree | bded23c78c91734e17a91f80ae3ee1b6946aa848 /contrib/grimshot | |
parent | 2dace6b8242189332c68d47467f59feb54e6a56a (diff) | |
download | sway-a5f01a0e04642cf035e5ae416e7bc631988e30a6.tar.xz |
Support cursor capture in grimshot
Refactor argument parser
Bring back `sh` compatibility
Default to NOTIFY=no
Diffstat (limited to 'contrib/grimshot')
-rwxr-xr-x | contrib/grimshot | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/contrib/grimshot b/contrib/grimshot index 4ce31f29..d42fe9d8 100755 --- a/contrib/grimshot +++ b/contrib/grimshot @@ -13,18 +13,32 @@ ## See `man 1 grimshot` or `grimshot usage` for further details. getTargetDirectory() { - test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && \ - . ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs + test -f "${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs" && \ + . "${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs" - echo ${XDG_SCREENSHOTS_DIR:-${XDG_PICTURES_DIR:-$HOME}} + echo "${XDG_SCREENSHOTS_DIR:-${XDG_PICTURES_DIR:-$HOME}}" } -if [ "$1" = "--notify" ]; then - NOTIFY=yes - shift 1 -else - NOTIFY=no -fi +NOTIFY=no +CURSOR= + +while [ $# -gt 0 ]; do + key="$1" + + case $key in + -n|--notify) + NOTIFY=yes + shift # past argument + ;; + -c|--cursor) + CURSOR=yes + shift # past argument + ;; + *) # unknown option + break # done with parsing --flags + ;; + esac +done ACTION=${1:-usage} SUBJECT=${2:-screen} @@ -32,7 +46,7 @@ FILE=${3:-$(getTargetDirectory)/$(date -Ins).png} if [ "$ACTION" != "save" ] && [ "$ACTION" != "copy" ] && [ "$ACTION" != "check" ]; then echo "Usage:" - echo " grimshot [--notify] (copy|save) [active|screen|output|area|window] [FILE|-]" + echo " grimshot [--notify] [--cursor] (copy|save) [active|screen|output|area|window] [FILE|-]" echo " grimshot check" echo " grimshot usage" echo "" @@ -67,7 +81,7 @@ notifyError() { MESSAGE=${1:-"Error taking screenshot with grim"} notify -u critical "$TITLE" "$MESSAGE" else - echo $1 + echo "$1" fi } @@ -91,12 +105,12 @@ takeScreenshot() { FILE=$1 GEOM=$2 OUTPUT=$3 - if [ ! -z "$OUTPUT" ]; then - grim -o "$OUTPUT" "$FILE" || die "Unable to invoke grim" + if [ -n "$OUTPUT" ]; then + grim ${CURSOR:+-c} -o "$OUTPUT" "$FILE" || die "Unable to invoke grim" elif [ -z "$GEOM" ]; then - grim "$FILE" || die "Unable to invoke grim" + grim ${CURSOR:+-c} "$FILE" || die "Unable to invoke grim" else - grim -g "$GEOM" "$FILE" || die "Unable to invoke grim" + grim ${CURSOR:+-c} -g "$GEOM" "$FILE" || die "Unable to invoke grim" fi } @@ -147,7 +161,7 @@ else TITLE="Screenshot of $SUBJECT" MESSAGE=$(basename "$FILE") notifyOk "$MESSAGE" "$TITLE" - echo $FILE + echo "$FILE" else notifyError "Error taking screenshot with grim" fi |