#!/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 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"