Allow recording to gif

screencast2gif will record a standard `ffcast` (just like pressing
PrtSc) and then ffmpeg will convert it to gif format a short while later
This commit is contained in:
David Todd 2019-09-11 15:39:52 -05:00
parent d671dbcc32
commit accd7763c5
2 changed files with 13 additions and 0 deletions

View File

@ -75,6 +75,7 @@ bindsym $mod+Shift+Insert --release exec --no-startup-id maim ~/Pictures/$(date
bindsym $mod+Ctrl+Insert exec --no-startup-id maim -s ~/Pictures/$(date +%Y-%m-%d).png&& pinta ~/Pictures/$(date +%Y-%m-%d-%s).png # screenshot and edit
# Screen recording
bindsym Shift+Print exec --no-startup-id ~/.i3/screencast2gif.sh
bindsym Print exec --no-startup-id "ffcast -q $(while slop -q -n -f '-g %g ';do :;done) rec ~/Videos/rec-%si-$(date +%Y-%m-%d-%s).mp4"
bindsym $mod+Print exec --no-startup-id pkill -fxn '(/\S+)*ffmpeg\s.*\sx11grab\s.*'

12
i3/screencast2gif.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
date=$(date +%Y-%m-%d-%s)
ffmpeg() {
command ffmpeg -hide_banner -loglevel error -nostdin "$@"
}
ffcast -q $(while slop -q -n -f '-g %g ';do :;done) rec ~/Videos/screencast-${date}.mp4
ffmpeg -i ~/Videos/screencast-${date}.mp4 -vf palettegen -f image2 -c:v png - |
ffmpeg -i ~/Videos/screencast-${date}.mp4 -i - -filter_complex paletteuse ~/Pictures/screencast-${date}.gif && notify-send "Gif recorded to ~/Pictures/screencast-${date}"