screenshot & screencast screen regions; FFmpeg; X11; run command on rectangular screen regions
Shell M4 Makefile
Latest commit b43cb77 Oct 30, 2016 @lolilolicon Don't fail to print help
As described in 924e807, when DISPLAY is unset, ffcast will bail before
option parsing. 924e807 therefore decided to always print help on this
failure. 706f168 disagreed, and removed this behavior.

Here we find a sensible middle ground, by following the convention that
-h and --help should print help for a program.



FFcast deals with rectangles on screens. Mostly, it selects rectangles. Like most boring jobs, there are many ways to do it: free selection, selection by window, screen number, numeric geometry, or by edge detection. Simple arithmetic operations allow simple combinations and adjustments.

Now FFcast knows all about these rectangles, but what to do with them? Well, like most useless things, there are many ways to use them: in practice, screenshots and screencasts are obviously popular options; in general, the geometry can be utilized by any application that understands X geometry, including window managers, xorg-apps (xclock, xev), byzanz-record, dunst, dzen2, FFmpeg, gifview, ImageMagick, maim, mousetweaks, mpv, Nautilus, screenkey, sxiv, xdotool, xscast, xsnap, zenity, to randomly name a few.

FFcast provides several short commands for common tasks, just to please its users, but hardly ever satisfies anyone. Like most unhelpful tools, it encourages its users to roll their own cigarettes.

Anyway, here’s wonder…​ful demos.


Bash 4.3+, FFmpeg (png rec), ImageMagick (trim), xdpyinfo (-x), xprop (-f), xrectsel (-s), xwininfo (-w).


Package available for: Arch Linux, Gentoo, openSUSE. And your distro, too!

To build and install from source,

./bootstrap  # generates ./configure
./configure --prefix /usr --libexecdir /usr/lib --sysconfdir /etc
make DESTDIR="$dir" install  # $dir must be an absolute path

To get xrectsel along with FFcast, pull in the submodule,

git clone --recursive

Then build and install as described above, but passing an additional --enable-xrectsel to ./configure.


See ffcast(1). Perhaps start with EXAMPLES.