Skip to content

Custom Animations ​

Custom animations are rich, software-rendered effects that run on the uchroma daemon. They offer far more visual complexity than hardware effects, support layering with blend modes, and can react to your keyboard input.

Overview ​

Each animation is implemented as a Renderer - a Python class that draws frames to a Layer. Renderers run in their own async tasks at configurable frame rates (typically 15-30 FPS). Multiple renderers can be stacked as layers and composited together.

Key Features:

  • Full RGB control over every LED
  • Configurable via traitlets (exposed to CLI and D-Bus)
  • Layering with blend modes (screen, soft_light, dodge, etc.)
  • Reactive effects that respond to keypresses
  • Color schemes and gradients

Ambient Effects ​

Plasma ​

Classic demoscene plasma effect

The iconic plasma effect from 90s demoscene - colorful, organic blobs that flow and merge across your keyboard.

ParameterTypeDefaultRangeDescription
color_schemecolorsQap palette2+ colorsGradient colors
presetchoiceQapColorScheme presetsPredefined color schemes
gradient_lengthint3600+Gradient resolution
bash
# Default plasma
uchroma anim add plasma

# With sunset colors
uchroma anim add plasma --preset sunset

# Custom gradient
uchroma anim add plasma --color-scheme '#ff006e' '#8338ec' '#00f5d4'

Visual: Smooth, flowing blobs of color that merge and separate like oil in water. The effect uses sine wave interference patterns to create organic, ever-changing shapes.


Rainbow ​

Flowing HSV gradient

A simple but satisfying rainbow that flows across your keyboard. Also known as "Rainflow".

ParameterTypeDefaultRangeDescription
speedint80-20Flow speed
staggerint40-100Row offset for diagonal effect
bash
# Default rainbow
uchroma anim add rainbow

# Fast, steep diagonal
uchroma anim add rainbow --speed 15 --stagger 8

# Slow, horizontal bands
uchroma anim add rainbow --speed 3 --stagger 0

Visual: A full-spectrum rainbow gradient scrolling horizontally. The stagger parameter offsets each row, creating a diagonal wave effect.


Aurora ​

Northern lights curtains

Shimmering vertical curtains of light that undulate horizontally, mimicking the aurora borealis.

ParameterTypeDefaultRangeDescription
speedfloat1.00.2-3.0Animation speed
driftfloat0.30.1-1.0Horizontal drift amount
curtain_heightfloat0.70.3-1.0How far curtains extend down
shimmerfloat0.30.0-1.0High-frequency brightness variation
color_driftfloat0.50.1-2.0Color shift speed
color_schemecolorsgreen/teal/purple2+ colorsAurora colors
bash
# Classic northern lights
uchroma anim add aurora

# Fast, vibrant aurora
uchroma anim add aurora --speed 2.0 --shimmer 0.5

# Subtle, slow drift
uchroma anim add aurora --speed 0.5 --drift 0.2 --shimmer 0.1

Visual: Glowing vertical curtains that wave horizontally, fading from bright at the top to dimmer at the bottom. The default green-teal-purple palette captures the classic aurora look.


Nebula ​

Cosmic cloud formations

Soft, flowing cosmic clouds using procedural noise - like gazing into a nebula.

ParameterTypeDefaultRangeDescription
drift_speedfloat0.30.1-1.0Cloud movement speed
scalefloat0.150.05-0.4Cloud size (smaller = larger clouds)
detailint21-3Noise octaves (more = finer detail)
contrastfloat0.60.3-1.0Color contrast
base_brightnessfloat0.50.3-0.7Minimum brightness
color_shiftfloat0.30.0-1.0Color variation amount
color_schemecolorspurple/pink/cyan/green2+ colorsNebula colors
bash
# Cosmic nebula
uchroma anim add nebula

# Large, slow-drifting clouds
uchroma anim add nebula --scale 0.08 --drift-speed 0.15

# High contrast, detailed
uchroma anim add nebula --detail 3 --contrast 0.9

Visual: Soft, billowing clouds of color that slowly drift and morph. Uses fractal Brownian motion for organic, natural-looking formations.


Ocean ​

Rolling waves with caustics

Horizontal waves with bright highlights on wave crests, simulating light playing on water.

ParameterTypeDefaultRangeDescription
wave_speedfloat1.00.3-2.5Wave animation speed
wave_heightfloat0.50.2-1.0Wave amplitude
foam_thresholdfloat0.50.2-0.8When waves produce foam
caustic_intensityfloat0.30.0-0.6Brightness of caustic highlights
saturationfloat0.80.4-1.0Color saturation
color_schemecolorsdeep blue gradient2+ colorsWater colors
bash
# Calm ocean
uchroma anim add ocean

# Stormy seas
uchroma anim add ocean --wave-speed 2.0 --wave-height 0.9 --foam-threshold 0.3

# Tropical lagoon
uchroma anim add ocean --wave-speed 0.5 --color-scheme '#006994' '#40E0D0' '#ffffff'

Visual: Horizontal wave patterns moving across the keyboard, with brighter "caustic" highlights where waves crest. Foam appears on steep wave slopes.


Vortex ​

Swirling spiral tunnel

A hypnotic vortex centered on your keyboard with spiral arms flowing inward or outward.

ParameterTypeDefaultRangeDescription
arm_countint31-6Number of spiral arms
twistfloat0.30.1-1.0Spiral tightness
flow_speedfloat1.00.3-3.0Radial flow speed
flow_directionint1-1 to 1Inward (-1) or outward (1) flow
rotation_speedfloat0.50.1-2.0Spiral rotation speed
center_glowfloat3.01.0-5.0Bright center radius
ring_densityfloat0.50.2-1.5Radial ring frequency
color_schemecolorspink/purple/blue/teal2+ colorsVortex colors
bash
# Classic vortex
uchroma anim add vortex

# Fast inward spiral
uchroma anim add vortex --flow-direction -1 --flow-speed 2.0

# Tight 6-arm spiral
uchroma anim add vortex --arm-count 6 --twist 0.8

Visual: A swirling tunnel effect with spiral arms radiating from the center. The center glows brighter, and depth rings create a 3D tunnel illusion.


Retro Effects ​

Copper Bars ​

Classic Amiga demoscene raster bars

Horizontal color bands flow and warp with sine-wave displacement - the iconic "copper bar" look from 80s/90s demos.

ParameterTypeDefaultRangeDescription
speedfloat1.00.2-3.0Animation speed
wave_amplitudefloat0.50.0-2.0Vertical wave intensity
wave_frequencyfloat0.80.2-2.0Wave frequency
band_widthint4010-100Color band width
horizontal_waveboolfalse-Add per-column variation
color_schemecolorsRainbow2+ colorsBar colors
presetchoiceRainbowColorScheme presetsPredefined palettes
gradient_lengthint36060-720Gradient resolution
bash
# Classic rainbow bars
uchroma anim add copper_bars

# With horizontal wave
uchroma anim add copper_bars --horizontal-wave

# Neon palette, fast
uchroma anim add copper_bars --preset neon --speed 2.0 --wave-amplitude 1.0

Visual: Horizontal bands of color flowing vertically, with sine-wave displacement creating a wavy, organic motion. A tribute to the Amiga demo scene.


Geometric Effects ​

Kaleidoscope ​

Rotating symmetric patterns

Hypnotic geometric patterns using polar coordinate transforms and n-fold symmetry.

ParameterTypeDefaultRangeDescription
symmetryint63-12Number of symmetric segments
rotation_speedfloat0.50.1-2.0Pattern rotation speed
pattern_modechoicespiralspiral/rings/wavesPattern type
ring_frequencyfloat0.50.2-1.5Radial pattern frequency
spiral_twistfloat2.00.5-5.0Spiral tightness (spiral mode)
hue_rotationfloat30.00.0-120.0Color rotation speed
saturationfloat0.90.5-1.0Color saturation
color_schemecolorspink/yellow/teal/purple2+ colorsPattern colors
bash
# Classic kaleidoscope
uchroma anim add kaleidoscope

# 8-fold symmetry with rings
uchroma anim add kaleidoscope --symmetry 8 --pattern-mode rings

# Slow, tight spiral
uchroma anim add kaleidoscope --rotation-speed 0.2 --spiral-twist 4.0

Visual: Symmetric patterns that rotate and morph, creating mandala-like effects. The symmetry parameter controls how many times the pattern repeats around the center.


Organic Effects ​

Metaballs ​

Organic lava lamp blobs

Soft, blobby shapes that slowly drift, merge when close, and split apart - like a lava lamp.

ParameterTypeDefaultRangeDescription
blob_countint42-8Number of blobs
speedfloat0.50.1-2.0Blob movement speed
thresholdfloat1.00.5-2.0Merge threshold
glow_fallofffloat2.01.0-4.0Glow intensity falloff
base_brightnessfloat0.20.0-0.4Background brightness
blob_radiusfloat3.01.5-5.0Blob size
color_schemecolorspink/purple/blue/teal2+ colorsBlob colors
bash
# Classic metaballs
uchroma anim add metaballs

# Many small blobs
uchroma anim add metaballs --blob-count 8 --blob-radius 2.0

# Large, slow, glowy
uchroma anim add metaballs --blob-count 3 --blob-radius 4.5 --speed 0.2

Visual: Soft, glowing blobs that drift around, merging seamlessly when they get close and splitting apart as they separate. Classic demoscene algorithm.


Motion Effects ​

Comets ​

Streaking light trails

Bright points zoom horizontally across the keyboard, leaving glowing trails.

ParameterTypeDefaultRangeDescription
comet_countint31-6Number of comets
speedfloat1.50.5-4.0Movement speed
trail_lengthint83-15Trail length in pixels
trail_decayfloat0.30.1-0.6Trail fade rate
head_brightnessfloat1.00.7-1.0Comet head brightness
color_schemecolorscyan/magenta/yellow/green2+ colorsComet colors
bash
# Shooting stars
uchroma anim add comets

# Single fast comet with long trail
uchroma anim add comets --comet-count 1 --speed 3.0 --trail-length 12

# Many slow comets
uchroma anim add comets --comet-count 5 --speed 0.8

Visual: Bright white comet heads streak across the keyboard, leaving colorful fading trails behind them. Multiple comets at different speeds create depth.


Particle Effects ​

Embers ​

Warm glowing particles

A field of warm glowing particles that drift slowly upward, pulse in brightness, and occasionally flare brighter.

ParameterTypeDefaultRangeDescription
particle_countint83-15Number of embers
drift_speedfloat0.30.1-1.0Upward drift speed
pulse_speedfloat1.50.5-4.0Brightness pulse rate
glow_radiusfloat2.01.0-4.0Ember glow size
colorcolor#ff6b35-Ember color (warm orange)
base_brightnessfloat0.60.3-0.8Base glow intensity
flare_chancefloat0.020.0-0.1Random flare probability
bash
# Campfire embers
uchroma anim add embers

# Many small, fast-rising embers
uchroma anim add embers --particle-count 12 --drift-speed 0.6 --glow-radius 1.5

# Slow, pulsing with frequent flares
uchroma anim add embers --pulse-speed 0.8 --flare-chance 0.05

Visual: Warm orange-red particles float upward like embers from a dying fire. They pulse gently and occasionally flare to full brightness.


Reactive Effects ​

Reactive effects respond to your keyboard input, creating visual feedback as you type.

Ripple (Custom) ​

Ripples emanate from keypresses

When you press a key, colorful circular ripples expand outward from that position.

ParameterTypeDefaultRangeDescription
ripple_widthint31-5Ring thickness
speedint51-9Ripple expansion speed
presetchoice-ColorScheme presetsColor preset
randombooltrue-Random rainbow colors
colorcolor--Fixed color (disables random)
bash
# Rainbow ripples
uchroma anim add ripple

# Single color ripples
uchroma anim add ripple --color '#00ffff' --no-random

# Fast, thin ripples with preset
uchroma anim add ripple --preset sunset --speed 8 --ripple-width 1

Visual: Each keypress spawns an expanding circular wave. Multiple keypresses create beautiful overlapping ripple patterns. Colors can be random, from a preset, or fixed.

Note: Requires a device with key input support (keyboards).


Reaction ​

Keys change color when pressed

A simple reactive effect where keys flash a color when pressed and fade back to a background color.

ParameterTypeDefaultRangeDescription
speedint61-9Fade speed (9 = fastest)
background_colorcolorblack-Resting color
colorcolorwhite-Flash color
bash
# White flash on black
uchroma anim add reaction

# Cyan flash on dark blue
uchroma anim add reaction --color cyan --background-color '#001133'

# Fast green flash
uchroma anim add reaction --color '#00ff00' --speed 9

Visual: Keys rest at the background color. When pressed, they instantly flash to the accent color, then smoothly fade back. Creates a gradient trail as you type.

Note: Requires a device with key input support (keyboards).


Typewriter ​

Warm incandescent glow fade

Keys illuminate with a warm, incandescent glow when pressed and slowly fade like old typewriter keys. Creates a "heat map" of your typing.

ParameterTypeDefaultRangeDescription
glow_colorcolor#ffaa44-Glow color (warm amber)
decay_timefloat1.50.5-5.0Seconds to fade to ~10%
spreadfloat0.30.0-0.6Spread to neighboring keys
base_brightnessfloat0.150.0-0.3Ambient glow level
peak_brightnessfloat1.00.7-1.0Maximum brightness
warmthfloat0.30.0-0.6Shift toward white at peak
bash
# Classic typewriter
uchroma anim add typewriter

# Slow decay, high spread (heat map)
uchroma anim add typewriter --decay-time 3.0 --spread 0.5

# Cool blue glow, no spread
uchroma anim add typewriter --glow-color '#4488ff' --spread 0.0

Visual: Keys glow warmly when pressed, with the brightness shifting toward white at peak intensity (like heated metal). The glow spreads slightly to neighbors and slowly fades, leaving a visual trail of your recent typing.

Note: Requires a device with key input support (keyboards).


CLI Quick Reference ​

bash
# List all available renderers with parameters
uchroma anim --list

# Add a renderer (auto-assigns z-index)
uchroma anim add <renderer> [--param value ...]

# Add at specific z-index
uchroma anim add -z 0 plasma

# Show active layers
uchroma anim show

# Modify a layer's parameters
uchroma anim set <zindex> --param value

# Remove a layer
uchroma anim rm <zindex>

# Stop all animations
uchroma anim stop

# Pause/unpause
uchroma anim pause

Layering Examples ​

Stack multiple effects for complex visuals:

bash
# Aurora with reactive ripples
uchroma anim add aurora --speed 0.5
uchroma anim add ripple

# Nebula with typing heat map
uchroma anim add nebula --drift-speed 0.2
uchroma anim add typewriter --spread 0.4

# Ocean with shooting comets
uchroma anim add ocean --wave-speed 0.7
uchroma anim add comets --comet-count 2 --speed 2.0

Higher z-index layers render on top. Blend modes determine how layers combine (see Animation System for details).

Released under the LGPL-3.0 License.