bashcaster icon indicating copy to clipboard operation
bashcaster copied to clipboard

An actually simple screen recorder for Linux

#+TITLE: Bashcaster #+PROPERTY: LOGGING nil

Note: This readme works with the org-make-toc https://github.com/alphapapa/org-make-toc package, which automatically updates the table of contents.

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 :PROPERTIES: :TOC: 0 :END:

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:

#+BEGIN_SRC sh bashcaster --window output.gif #+END_SRC

Record a window to a GIF at 15 frames per second, with the mouse cursor, optimize it, and don't show confirmation prompts:

#+BEGIN_SRC sh bashcaster -coy --window -f 15 output.gif #+END_SRC

Record the whole screen to an MKV at 60 fps immediately, without confirmation:

#+BEGIN_SRC sh bashcaster -f 60 -y output.mkv #+END_SRC

  • Usage

#+BEGIN_EXAMPLE 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 #+END_EXAMPLE

  • 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/!

  • License

GPLv3

Local Variables:

eval: (require 'org-make-toc)

before-save-hook: org-make-toc

org-export-with-properties: ()

org-export-with-title: t

End: