Want to use the fire from DOOM as a dynamic wallpaper in Arch linux?
Demo.mp4
This project generates an animated fire effect in real-time and displays it in a GTK4 window.
Setting this as your wallpaper depends on your compositor, currently there is only a guide for Hyprland using Hyprwinwrap
if you want it for another please raise an issue! XWinWrap could potentially work for a X11 setup
- Real-time animated fire: Classic DOOM-style fire simulation.
- Auto-pause: The animation pauses when all screens (outputs) have a window (client) on them or your system is asleep to save CPU.
- Multiple colour palettes: Original, blue, rainbow, toxic, purple, white-hot... add your own!
- Parallel rendering: Uses all CPU cores for fast frame generation.
- Configurable via TOML file: Resolution, speed, palette, background colour, and more.
- FPS Counter: Displays the current frames per second in the top-right corner.
- Linux (Wayland, with Hyprland and Hyprwinwrap)
- Rust/cargo (edition 2021)
- Hyprwinwrap - running and configured (as described below)
- Install with Yay:
Install a prebuilt binary for X86 (faster):
yay -Sy doomfire-wallpaper-binOr build on your PC:
yay -Sy doomfire-wallpaper-binOr Make package manually
git clone --recurse-submodules https://github.com/larry-oates/doomfire-wallpaper.git
cd doomfire-wallpaper
makepkg -Cfsri- Set up hyprwinwrap
Make sure Hyprwinwrap is enabled and running in your Hyprland session.
Add this to your hyprland.conf:
plugin {
hyprwinwrap {
class = com.leafman.doomfirewallpaper
}
}
- Run the wallpaper on startup!
Create or edit the config file at ~/.config/doom-fire-wallpaper/config.toml:
screen_width = 1920
screen_height = 1080
scale = 4
fps = 23
fire_type = "Original" # See fire type section below for options
background = [0, 0, 0] # Optional: RGB array, e.g. [20, 20, 20] for dark grey
restart_on_pause = true # Optional: true (default) or false, controls if animation restarts after pause.
pause_on_cover = true # Optional: true (default) pauses animation when all screens contain a window; set to false to keep animating even when covered
screen_burn = false # Optional: false (default), true, or "image". If true, closing windows leaves a burning trail. If "image", the image_path is used for the burn effect.
image_path = "/path/to/image.png" # Optional: Path to an image. Used for "image" screen_burn mode, or as a static background if screen_burn is false.
show_fps = false # Optional: false (default). If true, displays FPS counter in top right
All fields are optional; defaults will be used if not set.
After you change the configuration you must restart the wallpaper service for changes to take effect:
- Original: Classic DOOM fire
- WhiteHot: Classic DOOM palette, but blends to white at the top (hotter white flames)
- White: White-hot fire (all shades of white)
- Blue: Blue flame
- Rainbow: Animated rainbow
- Green: Toxic green
- Purple: Purple flame
- Ice: Cold blue/white
- Toxic: Neon green/yellow
- FireAndIce: Cold blue ice blending into hot fire
- ChemicalFire: Fire at the chemical plant
- Cyberpunk: Neon magenta/cyan
- Aurora: Animated Northern lights effect
- Plasma: Electric blue/purple/white bolts, fading to black
- Void: Deep blue/black cosmic
- Candy: Pastel rainbow stripes
- Random: Randomly selects a fire type on startup
- Wallpaper not updating?
Make sure you have no other programs managing your wallpaper (e.g. waypaper). - Performance issues?
Increase thescalevalue or lower the resolution/FPS. - Flickering animation?
Disable any system animations (see Hyprland animation docs).
- Fire algorithm inspired by Fabien Sanglard's DOOM fire article.
- Hyprpaper for dynamic wallpaper support.
- rayon for parallel rendering.
- Larry's DOOM fire wallpaper
0BSD
Enjoy your everliving flame!