screen recording
This commit is contained in:
parent
d20a88d501
commit
0f4a003365
@ -844,6 +844,16 @@ case $LANG in
|
||||
BACK="wróć"
|
||||
OPEN_SCR_DIR="Otwórz katalog ze zrzutami ekranu"
|
||||
CANCEL="Anuluj"
|
||||
SCRNREC="Nagrywanie pulpitu"
|
||||
FULLREC="Pełny ekran"
|
||||
AREA="Obszar lub okno"
|
||||
VIDEOSETTINGS="Ustawienia nagrywania"
|
||||
AUDIO="Dźwięk"
|
||||
FORMAT="Kontener (rozszerzenie)"
|
||||
FRAMERATE="Klatki na sekundę (fps)"
|
||||
REC_AUDIO="Nagrywaj dźwięk"
|
||||
NO_AUDIO="Bez dźwięku"
|
||||
OPEN_REC_DIR="Otwórz katalog z nagraniami"
|
||||
;;
|
||||
es*)
|
||||
SCRNSHOTS="Captura Pantalla"
|
||||
@ -857,9 +867,12 @@ case $LANG in
|
||||
BACK="atrás"
|
||||
OPEN_SCR_DIR="Abrir carpeta de capturas"
|
||||
CANCEL="Cancelar"
|
||||
SCRNREC="Screen recording"
|
||||
FULLREC="Full screen "
|
||||
AREA="Selected Area or Window"
|
||||
;;
|
||||
*)
|
||||
SCRNSHOTS="Screenshot tool"
|
||||
SCRNSHOTS="Screenshot"
|
||||
FULLSCR="Full screen"
|
||||
ACTIVE_WIN="Active window"
|
||||
ACTIVE_WIN_NO_DECOR="Active window (no decorations)"
|
||||
@ -870,6 +883,16 @@ case $LANG in
|
||||
BACK="back"
|
||||
OPEN_SCR_DIR="Open screenshot directory"
|
||||
CANCEL="Cancel"
|
||||
SCRNREC="Screen recording"
|
||||
FULLREC="Full screen "
|
||||
AREA="Selected Area or Window"
|
||||
VIDEOSETTINGS="Recording settings"
|
||||
AUDIO="Audio"
|
||||
FORMAT="Container (file extension)"
|
||||
FRAMERATE="Framerate (fps)"
|
||||
REC_AUDIO="Record Audio"
|
||||
NO_AUDIO="No Audio"
|
||||
OPEN_REC_DIR="Open recordings dir"
|
||||
;;
|
||||
esac
|
||||
jgtools_padding=${jgtools_padding:-0}
|
||||
@ -892,6 +915,32 @@ VIEW="'viewnior $IMG'"
|
||||
|
||||
THUMB="$(DISPLAY=:0 scrot -t 340x213 -o $HOME/.config/mabox/jgscrot.png -e 'echo $m')"
|
||||
|
||||
# Video recordings
|
||||
CNF_FILE="$HOME"/.config/mabox/mb-screenrec.conf
|
||||
|
||||
if [ ! -f $CNF_FILE ]; then
|
||||
cat <<EOF > ${CNF_FILE}
|
||||
# Container (file extension): webm,mp4 or mkv
|
||||
container=webm
|
||||
# Record Audio? yes or no
|
||||
record_audio=no
|
||||
#Framerate (frames per second)
|
||||
framerate=30
|
||||
EOF
|
||||
fi
|
||||
. "$CNF_FILE"
|
||||
|
||||
if [ "$record_audio" == "yes" ];then
|
||||
case "$LANG" in
|
||||
pl*) AUD="z dźwiękiem";;
|
||||
*) AUD="audio";;
|
||||
esac
|
||||
else
|
||||
case "$LANG" in
|
||||
pl*) AUD="bez dźwięku";;
|
||||
*) AUD="noaudio";;
|
||||
esac
|
||||
fi
|
||||
mkconfigfile
|
||||
|
||||
cat <<EOF > ${MENU_ITEMS}
|
||||
@ -905,6 +954,13 @@ cat <<EOF > ${MENU_ITEMS}
|
||||
# Multimonitor, scrot -m $IMG -e $VIEW
|
||||
^sep()
|
||||
$OPEN_SCR_DIR,xdg-open $(xdg-user-dir PICTURES)/screenshots
|
||||
^sep($SCRNREC)
|
||||
$FULLREC,mb-screenrec -f
|
||||
$AREA,mb-screenrec -a
|
||||
^sep()
|
||||
|
||||
$VIDEOSETTINGS [ <small><b>$container</b> / <b>${AUD}</b> / <b>$framerate fps</b></small> ],^checkout(videosettings)
|
||||
$OPEN_REC_DIR,xdg-open $(xdg-user-dir VIDEOS)/Recordings
|
||||
^sep()
|
||||
$CANCEL <small>esc</small>,exit 1
|
||||
^tag(full)
|
||||
@ -928,6 +984,25 @@ cat <<EOF > ${MENU_ITEMS}
|
||||
$SEC10,scrot -d 10 -u $IMG -e $VIEW
|
||||
^sep()
|
||||
⮜ $BACK,^back()
|
||||
^tag(videosettings)
|
||||
^sep($VIDEOSETTINGS)
|
||||
$AUDIO [ <b>${AUD}</b> ],^checkout(audio)
|
||||
$FORMAT [ <b>${container}</b> ],^checkout(format)
|
||||
$FRAMERATE [ <b>${framerate}</b> ],^checkout(framerate)
|
||||
^tag(audio)
|
||||
^sep($AUDIO)
|
||||
$REC_AUDIO,mb-setvar record_audio=yes ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
$NO_AUDIO,mb-setvar record_audio=no ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
^tag(format)
|
||||
^sep($FORMAT)
|
||||
webm,mb-setvar container=webm ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
mkv,mb-setvar container=mkv ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
mp4,mb-setvar container=mp4 ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
^tag(framerate)
|
||||
^sep($FRAMERATE)
|
||||
30,mb-setvar framerate=30 ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
25,mb-setvar framerate=25 ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
24,mb-setvar framerate=24 ${CNF_FILE};mb-jgtools screenshot ipc
|
||||
EOF
|
||||
jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null
|
||||
}
|
||||
|
77
bin/mb-screenrec
Executable file
77
bin/mb-screenrec
Executable file
@ -0,0 +1,77 @@
|
||||
#!/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
|
Loading…
Reference in New Issue
Block a user