Skip to content
Ilia Maslakov edited this page Jul 23, 2026 · 1 revision

Demo recordings

The GIFs used on this wiki and in the repo README are recorded from VHS tapes. Tapes, fixtures and the image that renders them live in demos/ in this wiki repository; the rendered GIFs land in assets/ next to them.

They used to live in the mc tree under doc/demos/, where a tape could only run against the maintainer's local build. The image pins the mc revision instead, so a tape keeps rendering the demo of the revision it pins.

Tapes

Tape Shows Keys
arcmc.tape Create a 7z archive from tagged files, with the pack dialog and progress. Insert x3 (tag), Ctrl-G (menu), Tab Down Space (pick 7z), Enter (OK)
viewer-tree.tape Structured tree view of a JSON file: toggle, navigate, search, copy jq-path. t (tree), Down/Enter (expand), / type Enter (search), Ctrl-Y (copy path), q
viewer-filter.tape Grep-style live filter over a log, keeping only matching lines. Ctrl-L, type ERROR, Enter, ]/[ (jump matches), q
git-panel.tape Git panel plugin: browse changes, open a file's diff. Ctrl-K -> Git status, Down to file, Ctrl-D (diff), Enter (jump to hunk)
panel-hide.tape Hide a panel and run a shell command in the freed area. Ctrl-W (hide left panel), type ls, Enter

Fixtures: sample.json, sample.log, and demo.keymap (see below).

Recording

Only Docker is needed; the image brings mc, its plugins, vhs, ttyd, ffmpeg and the fonts.

cd demos
MC_REF=v6.0.1 ./record.sh build   # build the image at a pinned revision
./record.sh                       # record every tape into ../assets/
./record.sh viewer-tree           # or just one

MC_REF is any ref of the mc fork and defaults to master. MC_REPO (a build arg) points at the repository. The plugin set is pinned in the Dockerfile rather than autodetected, so the plugin drive menu keeps the same entries between builds.

demo.keymap

A small keymap, merged over the defaults via MC_KEYMAP, that binds the actions a demo needs onto Ctrl-keys (menu bar, drive menu, viewer filter, structured copy-path, panel toggle). VHS cannot send function keys or Alt-combos, hence the rebinds. It is never installed; the image exports MC_KEYMAP pointing at it.

Known rough edges

These are recorded here rather than fixed silently, and are scheduled for the next build:

  • arcmc.tape used to press Ctrl-A, which demo.keymap never bound, so the create-archive dialog never opened. It now goes through the menu bar, but the menu path and the pack-dialog field order still need one manual pass.
  • The Down counts in git-panel.tape were tuned against a host build whose plugin set differs from the image's. Both counts need re-verifying once against the image.
  • git-panel.tape needs an uncommitted change to display; the image creates one by prepending a comment to src/panel-plugins/arcmc/arcmc.c.

Clone this wiki locally