#!/bin/sh screencast() { \ ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0 \ -f pulse -ac 2 -ar 48000 -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \ -r 24 \ -use_wallclock_as_timestamps 1 \ -f alsa -thread_queue_size 1024 -i default \ -c:v h264 \ -crf 0 -preset ultrafast -c:a aac \ ~/vids/recs/"$(date '+%C%y-%m%M-%d-%H-%M-%S').mp4" & echo $! > /tmp/recordingpid } killrecording() { recpid="$(cat /tmp/recordingpid)" kill -15 "$recpid" rm -f /tmp/recordingpid sleep 3 kill -9 "$recpid" exit } asktoend() { \ response=$(printf "No\\nYes" | dmenu -i -p "Recording still active. End recording?") && [ "$response" = "Yes" ] && killrecording } if [ -f /tmp/recordingpid ]; then asktoend && exit else screencast fi