aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2013-03-27 14:52:16 +0100
committerLaurent Ghigonis <laurent@p1sec.com>2013-03-27 14:52:16 +0100
commit7ac840b7c068cd99067e42bf117668b3479b56c6 (patch)
treea2c1efa8d687f42e9ed2105e0b4200150984b046 /tools
parentqvm-screenshot: small fixes (diff)
downloadlaurent-tools-7ac840b7c068cd99067e42bf117668b3479b56c6.tar.xz
laurent-tools-7ac840b7c068cd99067e42bf117668b3479b56c6.zip
add qvm-screenrecord, to record desktop in Qubes Dom0 and copy video to AppVM
Diffstat (limited to 'tools')
-rw-r--r--tools/qvm-screenrecord.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/qvm-screenrecord.sh b/tools/qvm-screenrecord.sh
new file mode 100644
index 0000000..a50440c
--- /dev/null
+++ b/tools/qvm-screenrecord.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Record desktop in Qubes Dom0 and copy video to AppVM
+# If you want create a keyboard shortcut, use "konsole -e qvm-screenrecord.sh -n"
+# Dependencies: recordmydesktop (sudo qubes-dom0-update recordmydesktop)
+# 2013, Laurent Ghigonis <laurent@p1sec.com>
+
+DOM0_SHOTS_DIR=$HOME/shots
+APPVM_SHOTS_DIR=/home/user/shots
+QUBES_DOM0_APPVMS=/var/lib/qubes/appvms/
+
+usage() {
+ echo "$program [-hn]"
+ echo -e "\t-n : after capturing, run nautilus in AppVM"
+}
+
+program="`basename $0`"
+mode_nautilus=0
+opts="$(getopt -o hn -n "$program" -- "$@")"
+err=$?
+eval set -- "$opts"
+while true; do case $1 in
+ -h) usage; exit 1 ;;
+ -n) mode_nautilus=1; shift ;;
+ --) shift; break ;;
+esac done
+[[ $err -ne 0 ]] && usage && exit 1
+
+mkdir -p $DOM0_SHOTS_DIR ||exit 1
+d=`date +"%Y%m%d-%H%M"`
+tmpname=$d.ogv
+echo "==================================="
+echo "Hit Crtl-C to terminate the capture"
+echo "==================================="
+recordmydesktop --no-sound -o $DOM0_SHOTS_DIR/$tmpname $@
+
+title=`kdialog --inputbox "Enter capture title" --title "$program"`
+[[ X"$title" = X"" ]] && exit 1
+vidname=${d}_${title}.ogv
+
+echo "[-] saving $DOM0_SHOTS_DIR/$vidname"
+mv $DOM0_SHOTS_DIR/$tmpname $DOM0_SHOTS_DIR/$vidname
+
+choice=`ls $QUBES_DOM0_APPVMS |sed 's/\([^ ]*\)/\1 \1/g'`
+appvm=`kdialog --menu "Select destination AppVM" $choice --title "$program"`
+
+if [ X"$appvm" != X"" ]; then
+ if [ $mode_nautilus -eq 1 ]; then
+ echo "[-] running nautilus in AppVM"
+ qvm-run $appvm "nautilus $APPVM_SHOTS_DIR"
+ fi
+
+ echo "[-] copy to AppVM $appvm"
+ qvm-run $appvm "mkdir -p $APPVM_SHOTS_DIR"
+ echo "[-] copying $APPVM_SHOTS_DIR/$vidname"
+ cat $DOM0_SHOTS_DIR/$vidname \
+ |qvm-run --pass-io $appvm "cat > $APPVM_SHOTS_DIR/$vidname"
+else
+ echo "no AppVM name provided"
+fi
+
+echo "[*] done"