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.

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.

Coming soon. In-app scrub / replay of a recording is a planned follow-up. For now, play .cast files with the asciinema tooling.