[OBSOLETE - see readme] A tool for creating GIF screencasts of a terminal, with key presses overlaid.
Python Shell Makefile
Latest commit 7d6ac78 Dec 19, 2015 @KeyboardFire Update README.md



mkcast is no longer being maintained (by me, at any rate). It's really just a bundle of hackiness and kludges, so I've essentially rewritten it from scratch: KeyboardFire/xscast.

xscast's goal is to be usable with any desktop environment. Instead of the buggy screenkey, it uses a dzen2 box to display keys. There are no external Python dependencies; it's written entirely in Bash. It can record any window, instead of relying on moving it to the bottom so that screenkey displays on top of it.

Basically, it's much better. Don't use mkcast.


A tool for creating GIF screencasts of a terminal, with key presses overlaid.

Dependencies: wmctrl, byzanz-record (slightly patched screenkey already bundled). Only tested on GNOME on Ubuntu so far.

$ sudo apt-get install wmctrl byzanz


$ sudo make install
$ newcast  # opens and casts a new terminal window, finishes recording on exit

How to use

Suggested use: symlink mkcast and newcast in /usr/local/bin (or just run make install), and simply type (in GNOME) Alt+F2 newcast Enter for a quick mini-cast.

This even allows you to set up a gnome-terminal profile called "mkcast," letting you automatically start a command when it opens (such as vim) and finish when the command exits, customize the size or colors of the new terminal that is created, etc.

Usage: ./mkcast WINNAME DURATION [COMMAND (optional)]
Usage: ./newcast [MKCAST ARGS]


# cast the window titled "Terminal" for 10 seconds
# (omitting -o will default to out.gif, also supports .webm and .ogg)
./mkcast Terminal 10 -o out.gif

# equivalent to the above, but creates a new terminal for you and finishes
# when the terminal exits instead of after a certain amount of time

Why GIF?

I chose GIF because I designed this with the intent that the mini-screencasts be supplemented by text with the full list of keystrokes and an explanation of what's actually happening (specifically, I wrote this with the forthcoming Vim Stack Exchange site in mind).

However, it would be trivial to replace byzanz-record with recordmydesktop and output real video files. That would defeat the original purpose of being a "mini-screencast," though, since it couldn't be ex. easily embedded in ex. a blog post with no extra work for the reader.

What does the name mean?

The name has a double meaning: mini-key-cast, or make cast (like mkdir).