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.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
# Takes several screen shots in a raw
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
# For usage, see shoot-screen -h
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
#
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
# MiKael, 2012-08
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
function shoot-screen() {
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
    local prefix="screenshot-"
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
    local ext="jpg"
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
    local delay=4
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
    local opt
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
    local usage=0
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
    while getopts "hp:e:d:" opt; do
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
        case "$opt" in
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
            (p) prefix=$OPTARG;;
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
            (e) ext=$OPTARG;;
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
            (d) delay=$OPTARG;;
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
            (h) usage=1; break;;
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
            (*) usage=2; break;;
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
        esac
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
    done
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
    if (( usage != 0 )); then
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
        print "Usage: $0 [-h] [-p prefix] [-e extension] [-d delay]" >&2
27
77e442e4e486 Fix the shoot-screen() function
Mikael Berthe <mikael@lilotux.net>
parents: 26
diff changeset
    26
        if (( usage == 1 )); then return 0; fi
77e442e4e486 Fix the shoot-screen() function
Mikael Berthe <mikael@lilotux.net>
parents: 26
diff changeset
    27
        return -1
26
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
    fi
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
    local n=0
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
    while :; do
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
        print -n 'Press Enter (type "quit" to leave) > '
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
        read l
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
        if [[ $l == "q" || $l == "quit" ]]; then break; fi
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
        print -n "Get ready (waiting for $delay seconds)..."
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
        sleep $delay
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
        local filename
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
        while :; do
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
            (( n = n+1 ))
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
            filename=$(printf "%s%03d.%s" $prefix n $ext)
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
            [[ -f $filename ]] || break
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
        done
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
        print "\nCapture: $filename"
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
        import $filename
27
77e442e4e486 Fix the shoot-screen() function
Mikael Berthe <mikael@lilotux.net>
parents: 26
diff changeset
    45
        if [[ $? != 0 ]]; then return $?; fi
26
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
        print
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
    done
73ef97dce631 Add a shoot-screen command
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
}