Investigations

ASCII Pipes Screensaver

JavaScript February 2026

A mesmerising animated terminal screensaver that draws colourful pipes growing across the screen using Unicode box-drawing characters.

Remember those old Windows screensavers with pipes growing across the screen? I rebuilt the concept for the terminal using Unicode box-drawing characters. Multiple pipes grow simultaneously, each with a random colour, random starting position, and a 20% chance of turning at each step.

Straight segments use vertical and horizontal line characters, turns use corner characters, and when pipes cross each other, an intersection character is drawn. Pipes have random lifespans of 30-100 segments. When screen coverage exceeds 65%, the oldest completed pipes are recycled to make room for new ones, so it runs indefinitely.

There are two colour palettes — classic with 6 bright ANSI colours, and a brighter 8-colour variant. You can configure animation speed, number of simultaneous pipes (1-6), and palette via CLI flags.

The architecture separates pure logic from terminal I/O: pipes-engine.js handles all state and movement decisions with no I/O dependencies, and pipes.js is a thin wrapper that reads the engine state and writes to the terminal. It uses the alternate screen buffer so your terminal content is preserved when you exit. Zero dependencies, just Node.js.

What this project demonstrates

Animated pipes with Unicode box-drawing characters
Configurable speed, pipe count (1-6), and colour palette
Intersection detection with crossover characters
Automatic screen recycling at 65% coverage
Clean engine/renderer separation — pure logic has no I/O
Zero dependencies — just Node.js 21.2+

Technologies

Node.jsTerminalScreensaverASCII ArtCLI

© 2026 Jonathan Leahy · v0.8.1-31-g196fa14