zshrc.d/30-functions-shoot-screen.zrc
changeset 26 73ef97dce631
child 27 77e442e4e486
equal deleted inserted replaced
25:709f9a3b120e 26:73ef97dce631
       
     1 
       
     2 # Takes several screen shots in a raw
       
     3 # For usage, see shoot-screen -h
       
     4 #
       
     5 # MiKael, 2012-08
       
     6 
       
     7 function shoot-screen() {
       
     8     local prefix="screenshot-"
       
     9     local ext="jpg"
       
    10     local delay=4
       
    11     local opt
       
    12     local usage=0
       
    13 
       
    14     while getopts "hp:e:d:" opt; do
       
    15         case "$opt" in
       
    16             (p) prefix=$OPTARG;;
       
    17             (e) ext=$OPTARG;;
       
    18             (d) delay=$OPTARG;;
       
    19             (h) usage=1; break;;
       
    20             (*) usage=2; break;;
       
    21         esac
       
    22     done
       
    23 
       
    24     if (( usage != 0 )); then
       
    25         print "Usage: $0 [-h] [-p prefix] [-e extension] [-d delay]" >&2
       
    26         if (( usage == 1 )); then exit 0; fi
       
    27         exit -1
       
    28     fi
       
    29 
       
    30     local n=0
       
    31     while :; do
       
    32         print -n 'Press Enter (type "quit" to leave) > '
       
    33         read l
       
    34         if [[ $l == "q" || $l == "quit" ]]; then break; fi
       
    35         print -n "Get ready (waiting for $delay seconds)..."
       
    36         sleep $delay
       
    37         local filename
       
    38         while :; do
       
    39             (( n = n+1 ))
       
    40             filename=$(printf "%s%03d.%s" $prefix n $ext)
       
    41             [[ -f $filename ]] || break
       
    42         done
       
    43         print "\nCapture: $filename"
       
    44         import $filename
       
    45         if [[ $? != 0 ]]; then exit $?; fi
       
    46         print
       
    47     done
       
    48 }