Skip to content

Typewriter Terminal

A terminal window typing commands with a human, uneven rhythm and a block caret, printing the output after each one.

Text layer, V4 Titles2D131 lines of codev1.0.0

In Text & data

Next: Kinetic Title RevealSurprise me

Typewriter Terminal preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source.

Open in the title maker

Your current settings go with it. Combine several clips and hand them over together from your sequence.

Effect controls

Presets

13

Characters per second.

7

The preview runs the same code your AI receives. These settings travel with the hand-off.

Info

What it is

A command line typing itself out. A terminal window drifts in, a prompt appears, a command is typed at a human, slightly uneven pace with a blinking block caret, the output prints in a dimmer colour and the next command follows. The typing times come from a seeded generator, so the same words always type the same way. Type two commands and their output, choose the theme (midnight, paper, phosphor or ember), the typing speed, the window title and the backdrop colour.

Reuse it in your own idea

  • Dev tool demo: Midnight.
  • Clean docs: Paper, light.
  • Hacker look: Phosphor green, fast.

Which part is reusable

src/typewriter-terminal.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses the demo harness only for the demo.

Good to know

  • System fonts differ between computers; pass fontFamily and load the font first for identical renders.
  • There is no scrolling: a long session needs a taller window or fewer lines.

Technical details

Technical details
Implementation
Canvas 2D — plain browser JavaScript, no libraries · ES module src/typewriter-terminal.js
Exports
  • createTypewriterTerminal({ steps?, title?, prompt?, theme?, speed?, start?, seed?, fontFamily? }) => { draw(ctx, info, width, height), revealDuration }
  • THEMES: { midnight, paper, phosphor, ember }
Dependencies (exact)
  • apw-runtime@1.0.0 (demo) — Demo harness. The reusable source has no dependencies.
How it fits a scene

Coordinates: The window is centred and 86% of the width wide; its height follows the number of lines; type size scales with the smaller side of the canvas.

Lighting: A soft drop shadow lifts the window; the demo adds a glow of the theme's accent behind it.

Timing: Pure function of time; the schedule of keystrokes is computed once from the seed; revealDuration says when everything is on screen.

Output
1080×1080, 30 fps, 9 s · procedural (computed from the frame number) · not a loop — Not a loop: the window arrives, both commands type and print, and the caret blinks on a fresh prompt.
Tested
Rendered 270 frames on 2026-10-08 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (Canvas 2D). Same frame twice from fresh pages: identical.
Performance
A few filled shapes and measured text per frame; negligible. Commands and outputs should fit on one line (about 40 characters).
Export a video yourself
Download the source, then in the folder: npm install npm run render -- typewriter-terminal/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.
Version
1.0.0 · sha256:03280ecb2a61e108…
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. License details
Provenance
Original code written for AI Pixel Wizard in October 2026, to the catalog quality bar (docs/QUALITY.md).
BinMore like this