zshrc.d/30-functions-shoot-screen.zrc
author Mikael Berthe <mikael@lilotux.net>
Wed, 04 Sep 2013 19:33:22 +0200
changeset 27 77e442e4e486
parent 26 73ef97dce631
permissions -rw-r--r--
Fix the shoot-screen() function s/exit/return/ since this function is to be called from an interactive shell.


# Takes several screen shots in a raw
# For usage, see shoot-screen -h
#
# MiKael, 2012-08

function shoot-screen() {
    local prefix="screenshot-"
    local ext="jpg"
    local delay=4
    local opt
    local usage=0

    while getopts "hp:e:d:" opt; do
        case "$opt" in
            (p) prefix=$OPTARG;;
            (e) ext=$OPTARG;;
            (d) delay=$OPTARG;;
            (h) usage=1; break;;
            (*) usage=2; break;;
        esac
    done

    if (( usage != 0 )); then
        print "Usage: $0 [-h] [-p prefix] [-e extension] [-d delay]" >&2
        if (( usage == 1 )); then return 0; fi
        return -1
    fi

    local n=0
    while :; do
        print -n 'Press Enter (type "quit" to leave) > '
        read l
        if [[ $l == "q" || $l == "quit" ]]; then break; fi
        print -n "Get ready (waiting for $delay seconds)..."
        sleep $delay
        local filename
        while :; do
            (( n = n+1 ))
            filename=$(printf "%s%03d.%s" $prefix n $ext)
            [[ -f $filename ]] || break
        done
        print "\nCapture: $filename"
        import $filename
        if [[ $? != 0 ]]; then return $?; fi
        print
    done
}