-
Notifications
You must be signed in to change notification settings - Fork 13
Demos
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.
| 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
|
mcstruct.tape |
A DBF file in mcstruct: header fields with the hex dump and the def-file in sync, the records as a grid. |
Down (walk the header and records), Enter (grid), Right/Down (cells), Escape (tree), Escape (quit) |
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
|
skineditor.tape |
Skin editor on gruvbox256: open it from the Plugin panel list, walk the keys with the live sample, recolour two of them in the Color dialog, save the result as a user skin. |
Esc p (Alt-P, Plugin panel), 3 Enter (Skin editor), Down/Up, Space (show), Enter (Color dialog), arrows + Space (pick), b (Bold), o (OK), Esc 2 (F2, save), type demo, Esc
|
Fixtures: sample.json, sample.log, and demo.keymap (see below).
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 oneMC_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.
The image knows the family JetBrains Mono; the JetBrains Mono NL Thin
the older tapes name matches nothing there and falls back to a proportional
font stretched over the cells.
VHS has no function keys and no Alt combinations, but mc reads Esc
followed by a digit as a function key and Esc followed by a letter as
Alt-letter, so a tape types Escape and then 9 for F9, Escape and
then p for Alt-P. Since mcterm took over the command line, a Ctrl-letter
typed at the shell prompt goes to the shell's line editor, not to mc, so
the Ctrl rebinds in demo.keymap only work where no prompt is under the
keys; new tapes bind to Alt keys instead.
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.
These are recorded here rather than fixed silently, and are scheduled for the next build:
-
arcmc.tapeused to pressCtrl-A, whichdemo.keymapnever 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
Downcounts ingit-panel.tapewere tuned against a host build whose plugin set differs from the image's. Both counts need re-verifying once against the image. -
git-panel.tapeneeds an uncommitted change to display; the image creates one by prepending a comment tosrc/panel-plugins/arcmc/arcmc.c.