Terminal-based Matrix digital rain effect built in Rust. Cross-platform with Windows as the primary target.
Features true-color gradient trails, film-authentic katakana characters, gold highlights, character mutation, and a flexible effect system.
- True-color gradients: Smooth 24-bit RGB fading from bright white head through vivid green to dark tail
- Film-authentic characters: Half-width katakana mixed with digits and symbols
- Gold highlights: Occasional gold characters like in the original Matrix films
- Character mutation: Characters flicker and change over time
- 150+ color palettes: 9 hand-tuned featured palettes + all 148 CSS Level 4 named colors
- Multiple character sets: Matrix, ASCII, binary, digits, katakana, latin
- 8 visual effects: Classic rain, binary, cascade, pulse, glitch, fire, ocean, parallax
- Smooth transitions: Crossfade blending when switching between effects
- Configurable: Speed, density, FPS, palette, and charset via CLI flags
- TOML config file: Named presets, persistent defaults, platform-native config path
- CRT simulation: Scanlines, phosphor glow, screen flicker, and noise post-processing
- Interactive controls: Adjust speed, density, and effects in real-time with keyboard
- Cross-platform: Windows Terminal, PowerShell, cmd.exe, Linux, macOS
| Classic green | Fire effect | Purple palette |
|---|---|---|
![]() |
![]() |
![]() |
| Red palette | Gold dense | Gold classic |
|---|---|---|
![]() |
![]() |
![]() |
Download the latest release for your platform from the Releases page:
- Windows:
digital_rain-windows-x86_64.zip - Linux:
digital_rain-linux-x86_64.tar.gz
Extract and run. No dependencies required.
Requires Rust 1.85+.
git clone https://github.com/HerbHall/DigitalRain.git
cd DigitalRain
cargo build --releaseThe binary will be at target/release/digital_rain.exe (Windows) or target/release/digital_rain (Linux/macOS).
cargo run --releasedigital_rain [OPTIONS]
Press q, Esc, or Ctrl+C to quit. Press ? while running to show the keybindings help overlay.
| Flag | Short | Description | Default |
|---|---|---|---|
--effect <name> |
-e |
Effect to display | classic |
--speed <value> |
-s |
Speed multiplier (0.1-10.0) | 1.0 |
--density <value> |
-d |
Rain density (0.1-10.0) | 1.0 |
--color <palette> |
-c |
Color palette | classic |
--charset <name> |
Character set | matrix |
|
--fps <value> |
Target frame rate | 30 |
|
--list-effects |
List available effects | ||
--list-colors |
List available palettes | ||
--list-charsets |
List available character sets | ||
--random |
Random effect and parameters | ||
--timer <seconds> |
Auto-cycle to random effect every N seconds | ||
--crt |
Enable CRT monitor simulation | ||
--crt-intensity <value> |
CRT effect intensity (0.0-1.0) | 0.7 |
|
--config <path> |
Path to TOML config file | platform default | |
--preset <name> |
Load a named preset | ||
--save-preset <name> |
Save CLI args as preset and exit | ||
--list-presets |
List available presets | ||
--help |
-h |
Show help | |
--version |
-V |
Show version |
| Name | Description |
|---|---|
classic |
Classic Matrix digital rain |
binary |
Dense binary 0/1 data stream |
cascade |
Wave-front column spawning (curtain effect) |
pulse |
Rain with brightness wave overlay |
glitch |
Rain with digital corruption events |
fire |
Classic cellular automata fire simulation |
ocean |
Sine-wave water surface simulation |
parallax |
Multi-layer rain with depth (foreground/background) |
| Name | Description |
|---|---|
classic |
Green phosphor (the Matrix default) |
gold |
Warm amber/gold CRT feel |
cyan |
Cold ice-blue digital |
red |
Crimson danger/alert |
silver |
White/grey on black |
purple |
Violet synthwave |
fire |
Red/orange/yellow heat gradient |
ocean |
Deep blue/teal aquatic |
synthwave |
Pink/purple/cyan retro neon |
All 148 CSS Level 4 named colors are also available as palettes. Gradients are auto-generated from the base color using HSL math. Examples: coral, tomato, dodgerblue, hotpink, indigo, springgreen, crimson, orchid.
Use --list-colors to see the full list. Aliases: monochrome -> silver.
| Name | Description |
|---|---|
matrix |
Half-width katakana + digits + symbols (film-authentic) |
ascii |
Full printable ASCII characters |
binary |
0 and 1 only |
digits |
0-9 only |
katakana |
Half-width katakana only |
latin |
A-Z, a-z letters |
# Classic green Matrix rain
digital_rain
# Red rain, double speed, sparse density
digital_rain --color red --speed 2.0 --density 0.5
# Binary rain in cyan (hacker aesthetic)
digital_rain --charset binary --color cyan
# Slow gold rain, heavy density
digital_rain --color gold --speed 0.5 --density 2.0
# Purple synthwave at 60fps
digital_rain --color purple --fps 60
# CSS named colors work directly
digital_rain --color coral
digital_rain --color dodgerblue --speed 1.5
digital_rain --color hotpink --charset binary
# Multi-hue featured palettes
digital_rain --color fire
digital_rain --color ocean --density 2.0
digital_rain --color synthwave --fps 60
# Fully randomized effect and parameters
digital_rain --random
# Auto-cycle: randomize every 30 seconds
digital_rain --random --timer 30
# CRT monitor simulation (scanlines, glow, flicker, noise)
digital_rain --crt
# Subtle CRT effect
digital_rain --crt --crt-intensity 0.3
# Heavy CRT with gold palette
digital_rain --crt --crt-intensity 1.0 --color gold
# Fire effect
digital_rain -e fire
# Ocean waves
digital_rain -e ocean
# Glitch rain with purple synthwave and CRT
digital_rain -e glitch -c purple --crt
# Multi-layer parallax depth rain
digital_rain -e parallax
# Save a preset
digital_rain --save-preset cyberpunk -e glitch -c purple --crt -s 1.5
# Load a preset
digital_rain --preset cyberpunk
# Load a preset but override speed
digital_rain --preset cyberpunk -s 3.0While running, use these keys to adjust the rain in real-time:
| Key | Action |
|---|---|
Space |
Pause / Resume |
+ / = |
Speed up (0.2x per press) |
- |
Speed down (0.2x per press) |
] |
Density up (0.2x per press) |
[ |
Density down (0.2x per press) |
n |
Next effect (with crossfade) |
r |
Randomize (with crossfade) |
t |
Toggle auto-cycle timer (requires --timer) |
c |
Toggle CRT simulation on/off |
? |
Toggle keybindings help overlay |
q / Esc |
Quit |
Speed and density are clamped to the range 0.1x - 10.0x. Status messages appear briefly at the bottom of the screen when parameters change.
DigitalRain supports a TOML configuration file with default settings and named presets. The config file is auto-located at the platform-standard config directory:
- Windows:
%APPDATA%\digitalrain\config.toml - Linux:
~/.config/digitalrain/config.toml - macOS:
~/Library/Application Support/digitalrain/config.toml
Priority: CLI flags > preset values > config defaults > hardcoded defaults.
[defaults]
effect = "classic"
speed = 1.0
color = "classic"
charset = "matrix"
fps = 30
crt = false
crt_intensity = 0.7
[presets.cyberpunk]
effect = "glitch"
color = "purple"
charset = "ascii"
speed = 1.5
crt = true
[presets.retro]
effect = "classic"
color = "gold"
crt = true
crt_intensity = 1.0
[presets.inferno]
effect = "fire"
speed = 1.2- All 148 CSS Level 4 named colors available as palettes (e.g.
--color coral) - Auto-generated gradients from base color via HSL color space math
- 3 new hand-tuned multi-hue palettes: fire, ocean, synthwave
- GitHub Actions CI (Windows + Linux) and automated release workflow
- Pre-built binaries for Windows and Linux on every release
- MIT license, CHANGELOG, CONTRIBUTING guide, and issue templates
- 7 new visual effects: binary, cascade, pulse, glitch, fire, ocean, parallax
- Crossfade transitions between effects (~0.75s)
- TOML configuration file with named presets
See CHANGELOG.md for the full version history.
- Language: Rust (edition 2024)
- Terminal: crossterm (cross-platform terminal manipulation)
- CLI: clap (argument parsing)
- RNG: rand (character selection, timing)
- Config: toml + serde (TOML configuration file)
- Platform: dirs (platform-native config directory)
MIT





