Master the animation system to create smooth, natural parallax effects.
Hyprlax combines one or more input sources to drive layer movement:
workspace: driven by workspace changes (original behavior)cursor: driven by smoothed cursor motionwindow: tracks the active window center (implemented for Hyprland; other compositors ignore it gracefully until native support is added)
Configure sources via CLI or TOML:
# CLI examples
hyprlax --input workspace # workspace only
hyprlax --input workspace,cursor:0.3 # workspace + cursor blend
# TOML (preferred)
[global.parallax]
input = ["workspace", "cursor:0.3"]
[global.parallax.invert.cursor]
x = true # invert X for increased depth feeling
y = false
[global.input.cursor]
sensitivity_x = 1.0
sensitivity_y = 0.25
deadzone_px = 3
ema_alpha = 0.25Use
parallax.input(or--inputon CLI) to select sources and optional weights.
Fine-tune depth with per-axis multipliers on each layer:
[[global.layers]]
path = "images/foreground.png"
shift_multiplier = { x = 1.0, y = 0.0 } # disable Y parallax for this layer
opacity = 1.0This is useful to keep a subject anchored vertically (e.g., ensuring the bottom of a foreground element never rises above the screen), while still allowing the background to subtly move in Y for a bokeh-like feel.
Hyprlax animates wallpaper movement when you switch workspaces. The animation system controls:
- How fast the transition happens (duration)
- The acceleration curve (easing)
- When the animation starts (delay)
- How smooth it appears (frame rate)
Easing functions control the acceleration and deceleration of animations, making them feel more natural.
| Type | Description | Best For |
|---|---|---|
linear |
Constant speed | Mechanical, robotic feel |
quad |
Gentle acceleration (x²) | Subtle, soft movements |
cubic |
Moderate acceleration (x³) | Balanced, natural feel |
quart |
Strong acceleration (x⁴) | Emphatic movements |
quint |
Very strong acceleration (x⁵) | Dramatic effects |
sine |
Smooth sine wave curve | Very natural, organic |
expo |
Exponential ease-out | Snappy, modern |
circ |
Circular function curve | Unique, slightly bouncy |
back |
Slight overshoot at end | Playful, energetic |
elastic |
Bouncy spring effect | Fun, attention-grabbing |
snap |
Custom snappy curve | Extra responsive feel |
Linear: ────────────────
╱
╱
╱
Expo Out: ──╱
╱
╱
╱
Elastic: ─┐ ╱─╱─
└╱
╱
Back: ───╱──┐
╱ └─
╱
Controls how long the animation takes to complete.
# Fast transition (0.3 seconds)
hyprlax -d 0.3 wallpaper.jpg
# Slow, dramatic (2 seconds)
hyprlax -d 2.0 wallpaper.jpg
# Default (1 second)
hyprlax wallpaper.jpgRecommendations:
0.2-0.4s- Snappy, responsive0.5-0.8s- Balanced, comfortable1.0-1.5s- Smooth, relaxed1.5-2.0s- Slow, dramatic
Note: A global animation delay is not currently configurable from the CLI.
Controls animation smoothness.
# High-end system (144 FPS)
hyprlax --fps 144 wallpaper.jpg
# Power saving (30 FPS)
hyprlax --fps 30 wallpaper.jpg
# Cinematic (24 FPS)
hyprlax --fps 24 wallpaper.jpgPerformance guide:
- 144+ FPS: High-end gaming monitors
- 60 FPS: Standard smooth animation
- 30 FPS: Power efficient, still smooth
- 24 FPS: Cinematic, may feel less responsive
When adding layers via CLI, use:
--layer image:shift:opacity[:blur]Examples:
--layer bg.jpg:0.3:1.0:3.0 # slow, heavily blurred background
--layer mg.png:0.6:0.8:1.5 # midground with light blur
--layer fg.png:1.0:0.7 # foreground, no blurhyprlax -d 1.5 -e sine -s 200 wallpaper.jpgPerfect for: Calm, professional environments
hyprlax -d 0.3 -e expo -s 150 wallpaper.jpgPerfect for: Gaming setups, high-energy workflows
hyprlax -d 0.8 -e elastic -s 180 wallpaper.jpgPerfect for: Creative workspaces, fun themes
hyprlax -d 2.0 -e quint -s 300 wallpaper.jpgPerfect for: Showcases, presentations
Combine easing with duration for different feels:
# Quick start, slow finish
hyprlax -e expo -d 1.2 wallpaper.jpg
# Slow start, quick finish
hyprlax -e sine -d 0.8 wallpaper.jpg
# Uniform speed
hyprlax -e linear -d 1.0 wallpaper.jpgAdjust shift amount based on workspace count:
# 10 workspaces, small shifts
hyprlax -s 100 wallpaper.jpg
# 4 workspaces, large shifts
hyprlax -s 400 wallpaper.jpgCreate complex animations with careful timing:
# Wave effect – vary speeds and blur per layer
hyprlax --layer l1.png:0.3:1.0:2.0 \
--layer l2.png:0.5:0.9:1.5 \
--layer l3.png:0.7:0.8:1.0 \
--layer l4.png:0.9:0.7:0.5 \
--layer l5.png:1.1:0.6Factors affecting smoothness:
- Frame rate - Higher is smoother but uses more GPU
- Layer count - More layers = more processing
- Blur amount - Blur effects are computationally expensive
- Image resolution - Higher resolution = more pixels to process
For smooth animations on lower-end systems:
# Reduce FPS
hyprlax --fps 30 wallpaper.jpg
# Avoid enabling vsync (default is off)
# Use simpler easing
hyprlax -e linear wallpaper.jpg
# Shorter duration
hyprlax -d 0.5 wallpaper.jpg- Lower FPS:
--fps 30 - Try toggling vsync: add or remove
--vsync(default is off) - Use fewer layers
- Reduce blur amounts
- Enable vsync: add
--vsync - Match monitor refresh rate:
--fps 60(for 60Hz display)
- Global delay configuration is not available; reduce duration instead
- Use shorter duration:
-d 0.3 - Try snappier easing:
-e expo
- Adjust duration:
-d 1.5(slower) or-d 0.5(faster) - Change easing function for different feel
- Modify shift amount:
-s 250(more dramatic)
- See multi-layer guide for complex animations
- Check examples for real-world configurations
- Review troubleshooting for common issues