Bashcaster
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.
Installation
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.
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
Usage
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 Silentcast.
FFmpeg does all the work.
YAD shows dialogs and the stop button.
Giphy posted a helpful guide (GitHub repo) showing how to record optimized GIFs with FFmpeg.
Development
Bug reports, feature requests, suggestions — oh my!
License
GPLv3