Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- set -e
- shopt -s extglob
- TEMPFILE=image.png TEMPDIR= DIR="$(pwd)"
- usage () {
- cat <<EOF
- This script saves image from cliboard into
- a png file which name is sha256sum of that
- image.
- This script uses xclip and therefore is
- valid only for X11 sessions.
- Options:
- -1 Nothing will work without
- this option. Don't ask why.
- -h (--help): Show this help.
- -d (--directory): Specify target directory.
- Otherwise current is used.
- -t (--tempdir): Set directory for temp file.
- EOF
- }
- create_tempfile () {
- local dirs=("/tmp/$USER" "/tmp/_$USER" "/tmp/__$USER") \
- files=(".image" "._image" ".__image")
- for dir in "${dirs[@]}"
- do
- if [[ -d $dir ]]
- then
- for file in "${files[@]}"
- do
- if [[ ! -a $dir/$file ]]
- then
- TEMPDIR="$dir"
- TEMPFILE="$file"
- return 0
- fi
- done
- else
- mkdir "$dir"
- TEMPDIR="$dir"
- TEMPFILE="${files[0]}"
- return 0
- fi
- done
- [[ -z $TEMPDIR ]] && return 1
- }
- if [[ -z $1 || $1 = @(-h|--help) ]]
- then
- usage
- exit $(( $# ? 0 : 1 ))
- fi
- while (( $# ))
- do
- case $1 in
- -1)
- GO=1
- shift
- ;;
- -d|--directory)
- DIR="$2"
- shift 2
- ;;
- -t|--tempdir)
- TEMPDIR="$2"
- shift 2
- ;;
- *)
- echo "Unknown option '$1'."
- echo
- usage
- exit 1
- ;;
- esac
- done
- if (( ! GO ))
- then
- usage
- exit 1
- fi
- [[ -z $TEMPDIR ]] &&
- if ! create_tempfile
- then
- echo "Could not create tempfile, try -t."
- exit 1
- fi
- for dir in "$DIR" "$TEMPDIR"
- do
- if [[ ! -d $dir ]]
- then
- echo "'$dir' is not a directory."
- exit 1
- fi
- done
- touch "$TEMPDIR/$TEMPFILE"
- xclip -t image/png -selection c -o > "$TEMPDIR/$TEMPFILE"
- sha256sum - <"$TEMPDIR/$TEMPFILE" | cut -d' ' -f 1 |
- cp "$TEMPDIR/$TEMPFILE" "$DIR/$( cat - ).png"
- rm "${TEMPDIR:?}/$TEMPFILE"
- rmdir "$TEMPDIR" 2>/dev/null || true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement