Add a shoot-screen command
authorMikael Berthe <mikael@lilotux.net>
Mon, 06 Aug 2012 22:44:48 +0200
changeset 26 73ef97dce631
parent 25 709f9a3b120e
child 27 77e442e4e486
Add a shoot-screen command
zshrc.d/30-functions-shoot-screen.zrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zshrc.d/30-functions-shoot-screen.zrc	Mon Aug 06 22:44:48 2012 +0200
@@ -0,0 +1,48 @@
+
+# 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 exit 0; fi
+        exit -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 exit $?; fi
+        print
+    done
+}