Documentation

Session recording

Record the focused pane to an asciinema cast v2 .cast file — replayable anywhere in the asciinema ecosystem.

Toowl can record the focused pane's output to an asciinema cast v2 file. The result is a plain .cast that plays back anywhere the asciinema ecosystem reaches — asciinema play recording.cast in a terminal, or uploaded to asciinema.org to share a link. No conversion, no proprietary format.

Start & stop

  • Press Cmd+Opt+R (macOS) / Ctrl+Alt+R (Linux, Windows). Shift+R is deliberately left to roost_active_pane, so recording takes the Alt variant rather than shadowing it.
  • Or use the ≡ menu in the tab strip — it reads Start Recording / Stop Recording depending on the focused pane.
  • Or the command palette (Cmd+Shift+P / Ctrl+Shift+P) → Toggle recording (toggle_recording).
  • A red dot appears on the tab while a recording is live.
  • A toast confirms start, and stop — reporting the elapsed time and file size.
Privacy — read before you share. A recording captures everything rendered to the screen, including any secret that gets echoed — tokens, passwords, keys, private output. .cast files are plaintext. Never share one without reviewing its contents first. (Your keystrokes / input are not recorded — only what the terminal drew.)

Where recordings land

Configure the output folder in the [recording] section of ~/.config/toowl/config.toml:

[recording]
# Defaults to ~/Desktop. "~" is expanded at record time.
# Set empty ("") to fall back to <data_dir>/toowl/recordings
# (e.g. ~/.local/share/toowl/recordings on Linux).
dir = "~/Desktop"
KeyDefaultNotes
dir ~/Desktop Folder for .cast files. ~ expands; created on demand. Set empty ("") to fall back to <data_dir>/toowl/recordings (e.g. ~/.local/share/toowl/recordings on Linux).

The folder is also editable from Settings (Cmd+, / Ctrl+,) — focus the Recording folder row and press Enter to edit it inline. Changes take effect on the next recording; one already in flight keeps writing to where it started.

Play it back

.cast has no default handler on any operating system, so a recording you double-click normally does nothing. toowl plays its own recordings — no asciinema required:

toowl play session.cast

It opens in a new tab with a transport strip along the bottom: play/pause, elapsed time, a scrub bar, and a speed control. Space toggles play, ←/→ jump five seconds, [/] jump thirty, s toggles idle-skipping, and . cycles the speed. Dead air longer than two seconds is skipped by default — a recording of real work is mostly waiting.

You can also drag a .cast onto a toowl window, double-click one in Finder, or press Cmd+Y on macOS or Ctrl+Shift+Y on Linux (Play Last Recording in the palette) to replay whatever you just recorded. The replay is an ordinary pane, so selection, search and scrollback all work on it; it is pinned to the size the recording was made at, so nothing reflows.

Send one to someone without toowl

Export a single self-contained HTML file — the frames and a small player, inlined. No network, no dependencies, opens in any browser:

toowl play session.cast --export-html
# -> session.html

The page is rendered through toowl's own terminal parser at export time, so what it shows is exactly what toowl would draw — colours, bold, everything — and there is no terminal emulator running in the browser to disagree with it. Frames carry only the rows that changed, so a typical recording exports to a handful of kilobytes.

Turn a recording into a GIF or video

A .cast is a timed text log, not pixels, so it stays tiny and stays greppable. When you need something to drop into a README or a chat, render it with agg:

# GIF, straight from the cast
agg session.cast session.gif

# Smaller: cap the idle gaps and the frame rate
agg --idle-time-limit 2 --fps-cap 15 session.cast session.gif

# MP4 (agg renders frames, ffmpeg encodes)
agg session.cast session.gif
ffmpeg -i session.gif -movflags faststart -pix_fmt yuv420p \
  -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" session.mp4

Or skip the file entirely: asciinema upload session.cast gives you a shareable link with selectable text.