This is taking
longer than expected.

Check your connection.

Still tinkering with this one
back to projects
a terminal toy i kept polishing

kmatrix

Matrix rain for the terminal, written in Python. It has six themes, keyboard controls, and a renderer that only redraws the cells that changed. I made it because I wanted my own take on cmatrix.

Version v0.3.0
Language Python
Frame rate 60–120
Scroll to explore

Make it rain

$ kmatrix Classic Green · 1.0x ↓
[ click to focus ]
Ccolour
+speed
Spacepause
Rreverse

Only redrawing what changed

A small model of the frame comparison happening in the Python renderer.

Changed (redrawn) Unchanged (skipped)
delta rendering

Most cells do no work at all.

Kmatrix compares the current frame with the last one, redraws the cells that actually changed, and skips the rest. Slow drops also keep a sub-cell accumulator, so they move steadily instead of jumping between rows.

~78% writes skipped here
60–120fps terminal-aware cap
why i made it

I wanted my own version.

I liked cmatrix and wanted to see what my version would feel like in Python. Then I kept finding little things to improve: smoother slow drops, live themes, animated settings panels, and a renderer that does less work. It is still just rain in a terminal, but I had a lot of fun making it feel good.

Press C to switch

Six
Themes.

  • Classic Green
  • Ice Blue
  • Blood Red
  • Purple Haze
  • Sleek Gray
  • Ocean

The stuff it's made of

Python 3.13+
curses
delta drawing
pipx
setuptools
GitHub ↗