A terminal ASCII animation app that adds visual flow to your IDE workspace.
Transform your terminal into a mesmerizing visual experience with 17 interactive patterns, 102 presets, 5 color themes, and a powerful command system. Perfect as an ambient background for your coding sessions!
- 🎨 17 Interactive Patterns - Waves, Starfield, Matrix, Rain, Quicksilver, Particles, Spiral, Plasma, Tunnel, Lightning, Fireworks, Life, Maze, DNA, Lava Lamp, Smoke, Snow
 - 🎯 102 Total Presets - 6 carefully crafted variations for each pattern
 - 🌈 5 Color Themes - Ocean, Matrix, Starlight, Fire, Monochrome (all patterns adapt)
 - ⌨️ Advanced Command System - Multi-key commands for quick pattern/preset/theme switching
 - 💾 Favorites System - Save and recall your favorite combinations
 - 🔀 Shuffle Mode - Auto-cycle presets or entire configurations
 - 🖱️ Full Mouse Support - Interactive effects with mouse movement and clicks
 - ⚡ High Performance - <5% CPU usage with double-buffered rendering
 - 🎛️ Quality Presets - LOW (15 FPS), MEDIUM (30 FPS), HIGH (60 FPS)
 - 📝 Configuration File - Persistent settings with JSON config
 - 🔧 CLI Arguments - Flexible command-line options
 
# Run instantly with npx (no install required)
npx ascii-splash
# Or install globally
npm install -g ascii-splash
splashLocal Development:
git clone https://github.com/reowens/ascii-splash.git
cd ascii-splash
npm install
npm run build
npm startnpm install -g ascii-splash
splashnpx ascii-splashgit clone https://github.com/reowens/ascii-splash.git
cd ascii-splash
npm install
npm run build
npm start# Run with defaults (medium quality, waves pattern, mouse enabled)
splash
# Start with specific pattern
splash --pattern starfield
splash -p matrix
# Set performance mode
splash --quality high
splash -q low
# Custom FPS (overrides performance mode)
splash --fps 45
splash -f 15
# Set color theme
splash --theme fire
splash -t matrix
# Disable mouse interaction
splash --no-mouse
# Combine options
splash --pattern quicksilver --quality high --theme starlight --no-mouse
# Show version
splash --version
splash -V
# Show help
splash --help
splash -h| Option | Short | Description | Values | 
|---|---|---|---|
--pattern | 
-p | 
Starting pattern | waves, starfield, matrix, rain, quicksilver, particles, spiral, plasma, tunnel, lightning, fireworks, life, maze, dna, lavalamp, smoke, snow | 
--quality | 
-q | 
Performance mode | low, medium (default), high | 
--fps | 
-f | 
Custom FPS (10-60) | Number (overrides performance mode FPS) | 
--theme | 
-t | 
Color theme | ocean (default), matrix, starlight, fire, monochrome | 
--no-mouse | 
Disable mouse | Flag (no value) | |
--version | 
-V | 
Show version | |
--help | 
-h | 
Show help | 
ascii-splash supports persistent configuration via a JSON file. The config file is automatically loaded at startup.
The config file is stored at:
- Linux/macOS: 
~/.config/ascii-splash/.splashrc.json - Windows: 
%APPDATA%\ascii-splash\.splashrc.json 
Settings are merged with the following priority (highest to lowest):
- CLI arguments (e.g., 
--pattern waves --fps 60) - Config file (
~/.config/ascii-splash/.splashrc.json) - Defaults (built-in fallback values)
 
See examples/.splashrc.example for a complete example with all available options.
{
  "defaultPattern": "waves",
  "quality": "medium",
  "fps": 30,
  "mouseEnabled": true,
  
  "patterns": {
    "waves": {
      "frequency": 0.1,
      "amplitude": 3,
      "speed": 1.0,
      "layers": 3,
      "rippleDuration": 2000
    },
    "starfield": {
      "starCount": 200,
      "speed": 50,
      "forceFieldRadius": 15,
      "forceFieldStrength": 200
    }
  }
}Global Settings:
defaultPattern- Starting pattern (waves, starfield, matrix, rain, quicksilver, particles, spiral, plasma, tunnel, lightning, fireworks, life, maze, dna, lavalamp, smoke, snow)quality- Quality preset (low, medium, high)fps- Target frames per second (10-60)theme- Color theme (ocean, matrix, starlight, fire, monochrome)mouseEnabled- Enable/disable mouse interaction
Pattern-Specific Settings:
Each pattern has its own configuration options. See examples/.splashrc.example for details:
waves- frequency, amplitude, speed, layers, rippleDurationstarfield- starCount, speed, forceFieldRadius, forceFieldStrengthmatrix- columnDensity, speed, fadeTime, distortionRadiusrain- dropCount, speed, splashDurationquicksilver- blobCount, speed, viscosity, mousePullparticles- particleCount, speed, gravity, mouseForce, spawnRatespiral- spiralCount, rotationSpeed, armLength, density, expandSpeedplasma- frequency, speed, complexitytunnel- shape, ringCount, ringSpacing, speed, rotationSpeed, radiuslightning- boltDensity, branchProbability, branchAngle, fadeTime, strikeInterval, maxBranches, thicknessfireworks- burstSize, launchSpeed, gravity, fadeRate, spawnInterval, trailLengthlife- cellSize, updateFrequency, initialDensity, birthChance, survivalChancemaze- cellSize, generationSpeed, algorithm
- 
Copy the example config:
mkdir -p ~/.config/ascii-splash cp examples/.splashrc.example ~/.config/ascii-splash/.splashrc.json
 - 
Edit
~/.config/ascii-splash/.splashrc.jsonwith your preferences - 
Run splash - your settings will be loaded automatically!
 
- c: Command mode (advanced multi-key commands - presets, favorites, search, shuffle)
 - 1-9: Switch to pattern 1-9
 - n/b: Next/Previous pattern (cycles through all 17 patterns)
 - ./,: Next/Previous preset (cycles through 6 presets per pattern)
 - p: Pattern mode - Type pattern number, name, or pattern.preset combo:
p→12→ Enter: Switch to pattern 12p→3.5→ Enter: Switch to pattern 3, preset 5p→waves→ Enter: Switch to waves patternp→ Enter (empty): Previous pattern- 5-second timeout or ESC to cancel
 
 - r: Random (pattern + preset + theme)
 - s: Save current config to file
 - Space: Pause/Resume
 - +/-: Adjust FPS (10-60)
 - [/]: Cycle performance modes (LOW/MEDIUM/HIGH)
 - t: Cycle color themes
 - ?: Toggle help overlay
 - d: Toggle debug info (performance metrics)
 - q/ESC/Ctrl+C: Exit
 
- Move: Interactive effects (ripples, repulsion, distortion, spawning)
 - Click: Special effects (big splash, explosion, spawn columns/drops)
 
Press t to cycle through 5 beautiful color themes:
- Blues, cyans, and teals
 - Calm and soothing palette
 - Perfect for waves and water patterns
 
- Classic green monochrome
 - Hacker aesthetic
 - Pairs perfectly with Matrix pattern
 
- Deep blues, purples, and white
 - Cosmic space theme
 - Ideal for starfield effect
 
- Reds, oranges, and yellows
 - Warm and energetic
 - Great for high-energy patterns
 
- Grayscale gradient
 - Clean and minimal
 - Works with everything
 
Each theme uses color interpolation to provide smooth gradients. All patterns automatically adapt to the selected theme!
Smooth flowing sine waves with ripple effects
- Multiple wave layers (1-5 depending on quality)
 - Mouse creates ripples
 - Click for big splashes
 - Ocean color gradient
 - Metrics: Active ripples, wave layers
 
3D starfield with parallax depth
- Stars move toward viewer (50-200 stars)
 - Mouse repels stars (force field)
 - Click creates explosion burst
 - Size varies with depth
 - Metrics: Star count, active explosions
 
Classic digital rain effect
- Falling character columns
 - Katakana characters
 - Mouse distorts characters
 - Click spawns new columns
 - Metrics: Column count, density
 
Simple falling droplets
- Drops bounce off mouse cursor
 - Mouse spawns extra drops
 - Click creates splash effects
 - Ground splash animations
 - Metrics: Active drops, splashes
 
Flowing liquid mercury effect
- Organic metallic liquid flow using Perlin noise
 - Silver/chrome color gradients
 - Mouse creates ripples in metal surface
 - Click spawns mercury droplets with physics
 - Reflective surface simulation
 - Metrics: Active droplets, ripples, flow intensity
 
Physics-based particle system
- Particles with gravity, velocity, and collision
 - Mouse attract/repel toggle (click to switch)
 - Click creates burst of 20 particles
 - Boundary bouncing with energy loss
 - Theme-based coloring by velocity
 - Metrics: Particle count, mode (attract/repel)
 
Rotating logarithmic spirals
- Multiple spiral arms (3 default)
 - Continuous rotation animation
 - Mathematical spiral formula
 - Distance-based intensity
 - Theme-based gradient coloring
 - Metrics: Arm count, point count
 
Fluid plasma effect
- Multiple sine wave combination
 - Smooth color transitions
 - Circular and diagonal wave patterns
 - Theme-based intensity coloring
 - Continuous animation
 - Metrics: Wave count, complexity level
 - 6 Presets: Gentle Waves, Standard Plasma, Turbulent Energy, Lava Lamp, Electric Storm, Cosmic Nebula
 
3D geometric tunnel with perspective
- Multiple shape modes: circle, square, triangle, hexagon, star
 - Perspective projection with depth
 - Rotation animation for hypnotic effect
 - Mouse parallax (shifts vanishing point)
 - Click reverses direction + speed boost
 - Metrics: Ring count, shape, speed, depth
 - 6 Presets: Circle Tunnel, Hyperspeed, Square Vortex, Triangle Warp, Hexagon Grid, Stargate
 
Electric bolts with recursive branching
- Bresenham line algorithm for bolt segments
 - Recursive branching (probability-based)
 - Flash effect with fade-out
 - Auto-strikes at intervals
 - Mouse creates charge particles
 - Click spawns 3-4 area bolts
 - Metrics: Bolt count, branch count, charge particles
 - 6 Presets: Cloud Strike, Tesla Coil, Ball Lightning, Fork Lightning, Chain Lightning, Spider Lightning
 
Particle explosions with physics
- 3-phase lifecycle: launch → explode → fall
 - Particle trails with history tracking
 - Theme-based burst colors with fade
 - Gravity and velocity physics
 - Auto-spawn timer
 - Click for instant 1.5x explosion
 - Metrics: Active fireworks, particle count, explosions
 - 6 Presets: Sparklers, Grand Finale, Fountain, Roman Candle, Chrysanthemum, Strobe
 
Conway's Game of Life cellular automaton
- Classic infinite cellular automaton simulation
 - Life/death rules with configurable birth/survival thresholds
 - Generates complex living patterns (gliders, oscillators, still lifes)
 - Mouse click to toggle cells on/off (paint mode)
 - Patterns evolve with natural emergence behavior
 - Metrics: Living cells, generation count, pattern stability
 - 6 Presets: Still Life, Beehive, Gliders, Oscillators, Garden, Chaos
 
Dynamic maze generation and solving
- Multiple generation algorithms (Recursive Backtrack, Aldous-Broder, Prim, Hunt-Kill, Wilson, Braid)
 - Animated maze generation with visual pathfinding
 - Click to generate new maze with current algorithm
 - Supports different cell sizes for various visual styles
 - Perfect for hypnotic ambient animations
 - Metrics: Maze cells, generation progress, algorithm type
 - 6 Presets: Recursive Backtrack, Aldous-Broder, Prim, Hunt-Kill, Wilson, Braid
 
Double helix DNA strand animation
- Rotating double helix structure with base pairs
 - Smooth 3D perspective projection
 - Base pair connections with proper geometry
 - Mouse interaction affects rotation speed
 - Click to randomize strand colors
 - Metrics: Rotation angle, base pair count
 - 6 Presets: Classic, Fast Spin, Slow Motion, Rainbow, Unraveling, Pulse
 
Metaball-based lava lamp simulation
- Organic blob shapes using metaball algorithm
 - Physics simulation with buoyancy, drift, and turbulence
 - Perlin noise for natural flowing motion
 - Vertical wrapping for continuous lava lamp cycle
 - Mouse attracts/repels blobs with force field
 - Click to spawn new blobs (max 20)
 - Metrics: Blob count, average blob radius
 - 6 Presets: Classic, Turbulent, Gentle, Many Blobs, Giant Blob, Strobe
 
Physics-based smoke particle simulation
- Rising smoke plumes with Perlin noise turbulence
 - Realistic particle opacity and dissipation
 - Height-based color gradient for natural smoke effect
 - Multiple smoke sources with configurable density
 - Mouse creates force field to blow smoke away
 - Click spawns burst of 15 smoke particles
 - Metrics: Active particles, plume count, average opacity
 - 6 Presets: Gentle Wisp, Campfire, Industrial, Incense, Fog, Steam
 
Falling particles with seasonal effects
- Realistic downward falling motion with gravity and wind drift
 - Perlin noise turbulence for natural movement
 - Particle rotation as they fall
 - Ground accumulation feature (optional)
 - 5 particle types: snow, cherry blossoms, autumn leaves, confetti, ash
 - Mouse creates wind force field pushing particles
 - Click spawns burst of 20 particles
 - Metrics: Active particles, accumulated, average velocity
 - 6 Presets: Light Flurries, Blizzard, Cherry Blossoms, Autumn Leaves, Confetti, Ash
 
Press [ or ] to cycle through performance modes:
Optimized for low-end systems or minimal CPU usage
- 50% particle count
 - Reduced visual layers
 - Target: <3% CPU usage
 
Balanced performance and visual quality
- Standard particle count
 - Full visual effects
 - Target: <5% CPU usage
 
Maximum quality for high-end systems
- 200% particle count
 - Enhanced visual layers
 - Silky smooth animations
 
Press d to toggle the debug overlay showing:
- Current pattern and theme
 - Real-time FPS (color-coded: green/yellow/red)
 - Current performance mode
 - Frame timing breakdown
 - Pattern render time
 - Changed cells ratio (buffer efficiency)
 - Dropped frames counter
 - Min/Avg/Max FPS statistics
 - Pattern-specific metrics
 
Measured on Apple M1:
- MEDIUM mode: 30 FPS stable, 2-4% CPU
 - HIGH mode: 60 FPS stable, 4-6% CPU
 - LOW mode: 15 FPS stable, 1-2% CPU
 - Memory: ~40-50MB RSS
 
Optimizations:
- Double-buffering with dirty cell tracking
 - Pattern-specific optimizations (early rejection tests)
 - Mouse event throttling (~60 FPS)
 - Efficient terminal writes (only changed cells)
 
ascii-splash uses a clean 3-layer architecture:
- Renderer Layer: Terminal control with double-buffering for flicker-free rendering
 - Engine Layer: Animation loop running at target FPS, commands, performance monitoring
 - Pattern Layer: 17 interactive patterns with themes and presets
 
src/
├── types/          # Core interfaces and types
├── renderer/       # Terminal rendering with double-buffering
├── engine/         # Animation loop, commands, performance monitoring
├── patterns/       # Pattern implementations (17 total)
├── config/         # Configuration system
└── main.ts         # Entry point and input handling
For detailed technical architecture, see docs/ARCHITECTURE.md.
Press c to enter command mode for advanced features:
c1,c2, etc. - Apply preset to current patterncp3- Switch to pattern 3ct2- Switch to theme 2cp3+t2- Switch pattern AND theme
cF1- Save current state to favorite slot 1cf1- Load favorite slot 1cfl- List all saved favorites
c*- Random preset (current pattern)c**- Random pattern + preset + themec?- List presets for current patternc??- Show ALL presets catalogc!- Toggle shuffle mode (10s intervals)c!5- Shuffle with 5s intervalsc!!- Shuffle ALL (pattern+preset+theme)c/term- Search patterns/themescs- Save current config to file
For the complete command reference, see the section above.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
MIT License - Copyright (c) 2025 reoiv
Built with:
- terminal-kit - Terminal control and rendering
 - chalk - Color output
 - commander - CLI argument parsing
 - conf - Configuration management
 
Made with ❤️ for terminal enthusiasts