Remo H. Jansen1 min read

I have open sourced a WebGL front-end for your terminal that emulates a CRT monitor

I'm thrilled to announce that I've open sourced cool-retro-term-webgl, a modern WebGL-based recreation of the beloved cool-retro-term terminal emulator!

For years, developers and retro computing enthusiasts have loved cool-retro-term by Filippo Scognamiglio (Swordfish90) — a Qt-based terminal that perfectly mimics the look and feel of old cathode ray tube (CRT) monitors, complete with scanlines, glow, and that nostalgic flicker.

Inspired by its cyberpunk aesthetic (think Fallout or Alien), I wanted to bring those authentic retro effects to the web and modern applications. The original is built in QML and C++, so I set out to port the shader magic to WebGL, making it usable in browsers, web apps, and even native desktop apps via Electron.

The result? A lightweight, high-performance CRT renderer that integrates seamlessly with XTerm.js.

Key Features

  • Authentic retro CRT effects powered by WebGL:

    • Screen curvature and distortion
    • Phosphor glow and bloom
    • Scanlines and rasterization
    • RGB chromatic aberration
    • Flicker, static noise, and burn-in persistence
    • Horizontal sync jitter
  • Two packages in a monorepo:

    • cool-retro-term-renderer: The core library for adding CRT effects to any XTerm.js instance.
    • cool-retro-term-electron: A full-featured desktop terminal app built with Electron, supporting real shell processes via node-pty.

Here's a glimpse of the retro magic in action:

Image description

Live demo https://remojansen.github.io/

Try the Desktop App

Download the Mac binary

The project is licensed under GPL-3.0, just like the original.

Check out the repo: https://github.com/remojansen/cool-retro-term-webgl

Thanks to Swordfish90 for the original inspiration.

TerminalWebglRetroCrtElectron
Remo H. Jansen@remo-h.-jansen-ed2

CEO & Founder @WolkSoftware | EP @JSConfIE | Former Microsoft MVP | Author of @inversify

Loading

Loading discussion...

Hey! 👋

Got something to say?

or to leave a comment.