78 lines
1.6 KiB
Bash
Executable File
78 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#: mb-screenrec - very simple screen recorder
|
|
CNF_FILE="$HOME"/.config/mabox/mb-screenrec.conf
|
|
. "$CNF_FILE"
|
|
|
|
DATE=$(date +%Y%m%d_%H-%M-%S)
|
|
FRAMERATE=${framerate:-30}
|
|
EXT=${container:-webm}
|
|
AUDIO=${record_audio:-no}
|
|
SCREEN_SIZE=$(xdpyinfo | awk '/^ +dimensions/ {print $2}')
|
|
# Alternative: xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'
|
|
RECDIR="$(xdg-user-dir VIDEOS)/Recordings"
|
|
|
|
mkdir -p $RECDIR
|
|
|
|
if [ "$AUDIO" == "yes" ];then
|
|
AUDIOCMD="-f pulse -ac 2 -i default"
|
|
else
|
|
AUDIOCMD=""
|
|
fi
|
|
|
|
show_stop_icon () {
|
|
case "$LANG" in
|
|
pl*) STOP_INFO="Zatrzymaj nagrywanie";;
|
|
*) STOP_INFO="Click to stop recording";;
|
|
esac
|
|
yad --notification --image media-playback-stop --text "${STOP_INFO}"
|
|
kill $FFMPEG_PID
|
|
wait $FFMPEG_PID
|
|
|
|
xdg-open $RECDIR
|
|
}
|
|
|
|
rec_full () {
|
|
ffmpeg -f x11grab \
|
|
-video_size $SCREEN_SIZE \
|
|
-framerate $FRAMERATE \
|
|
-i :0.0+0,0 ${AUDIOCMD} \
|
|
${RECDIR}/rec_${DATE}.${EXT} &
|
|
FFMPEG_PID=$!
|
|
|
|
show_stop_icon
|
|
}
|
|
|
|
|
|
get_area () {
|
|
read X Y W H <<<"$(slop -l -b 3 --color=0.3,0.4,0.6,0.4 -f '%x %y %w %h')"
|
|
}
|
|
sel_cancelled () {
|
|
notify-send.sh -i mbcc "Error" "Selection was cancelled by keystroke or right-click."
|
|
}
|
|
|
|
rec_area () {
|
|
get_area
|
|
if [ "$X" != "" ];then
|
|
ffmpeg -f x11grab \
|
|
-video_size ${W}x${H} \
|
|
-framerate $FRAMERATE \
|
|
-i :0.0+${X},${Y} ${AUDIOCMD} \
|
|
${RECDIR}/rec_${DATE}.${EXT} &
|
|
FFMPEG_PID=$!
|
|
|
|
show_stop_icon
|
|
else
|
|
sel_cancelled
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
|
|
case "$1" in
|
|
-f|--fullscreen) rec_full;;
|
|
-a|--area) rec_area;;
|
|
*) ;;
|
|
esac
|