Bashcaster is a simple script that uses =ffmpeg= to record screencasts to videos or GIFs. It can record the whole screen or a window. It can optionally optimize GIFs with =gifsicle=.
Put =bashcaster.sh= wherever you want.
** Requirements
Bashcaster only works on X-based GUIs. It should work on any Linux distro, and all common ones should have these tools available for installation:
=ffmpeg= does all the work behind the scenes.
=xprop= and =xwininfo= are used to retrieve screen and window dimensions.
=yad= shows the stop-icon tray notification and confirmation dialogs.
[[https://github.com/naelstrof/slop][slop]] is used when available to select rectangles, otherwise a fallback method is used.
=gifsicle= optionally optimizes GIFs.
Examples
Record a window to a GIF:
bashcaster --window output.gif
Record a window to a GIF at 15 frames per second, with the mouse cursor, optimize it, and don't show confirmation prompts:
bashcaster -coy --window -f 15 output.gif
Record the whole screen to an MKV at 60 fps immediately, without confirmation:
bashcaster -f 60 -y output.mkv
bashcaster.sh [OPTIONS] OUTPUT-FILE
Bashcaster is a simple script that uses ffmpeg to record screencasts to videos or GIFs. It can record the whole screen or a window. It can optionally optimize GIFs with gifsicle.
OUTPUT-FILE should end with the desired video type's extension, e.g. ".mp4" or ".gif".
Click the stop-icon tray notification to stop recording.
Options --debug Print debug info --help I need somebody!
--force Overwrite output file if it exists -y, --no-confirm Don't ask for confirmation before recording
-c, --cursor Record mouse cursor -F, --fullscreen Record the whole screen (the default) -R, --rectangle Select and record a rectangle -W, --window Select and record a window
-f, --framerate NUMBER Video framerate (default: 30)
-l, --left NUMBER Video left edge position (default: 0) -t, --top NUMBER Video top edge position (default: 0) -h, --height NUMBER Video height -w, --width NUMBER Video width
--max-colors NUMBER Limit colors in palette -d, --dither Enable dithering to reduce filesize -o, --optimize Optimize GIF with gifsicle
Credits
Inspired by [[https://github.com/colinkeenan/silentcast][Silentcast]].
[[https://www.ffmpeg.org/][FFmpeg]] does all the work.
[[https://sourceforge.net/projects/yad-dialog/][YAD]] shows dialogs and the stop button.
Giphy posted a helpful [[https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/][guide]] ([[https://github.com/cyburgee/ffmpeg-guide][GitHub repo]]) showing how to record optimized GIFs with FFmpeg.
Development
Bug reports, feature requests, suggestions — /oh my/!
GPLv3