A fast and minimal wallpaper engine for HyDE
Use wallbash as a core component of your Wayland desktop environment — set wallpapers, generate color palettes, and apply dynamic themes to your desktop.
- GPU acceleration powered by Vulkan for smooth, high‑performance rendering
- Built for seamless integration with your Wayland compositor
- Dynamic color palette generation based on Material Design with auto, dark, and light modes
- Scale the image to your liking using cover, fit, or original modes
- Precise anchor point positioning from 1 to 9 for fine‑tuned wallpaper placement
- Automatic background blur fill for mismatched aspect ratios, eliminating black bars
- Persistent settings cache to save your setup between sessions
- Fluid transitions and animations*
- Wayland compositor that supports layer-shell protocol
- GPU with vulkan drivers installed
- Rust & Cargo required to build from source
git clone https://github.com/prasanthrangan/wallbash
cd wallbash
cargo build --release
sudo cp target/release/wallbash /usr/local/bin/wallbash set /path/to/file.img # Set wallpaper (auto start daemon)
wallbash stop # Stop the daemon
wallbash status # Show daemon status
# options for "set"
wallbash set [option] <value>
-w, --wall <file> # Wallpaper file /path/to/file.img
-c, --cycle <signed int> # Cycle in current folder (+1, -2, etc.)
-p, --palette <color> # Generate color palette (auto, dark, light)
-m, --mode <scale> # Scaling mode (cover, fit, original)
-a, --anchor <1-9> # Anchor point (1=top-left ... 9=bottom-right)Wallbash is a single binary that runs a background daemon and processes client requests via a Unix socket /tmp/wallbash.sock.
The core modules are structured as:
- main.rs The CLI entry point. Parses command-line arguments and routes them to the appropriate handler (start, stop, set, status). It also manages the daemon lifecycle and socket communication.
- wallbash.rs The core daemon logic. Manages IPC server, incoming commands, and coordinates wayland and rendering pipeline. It acts as the central controller for other modules.
- wayland.rs Handles the Wayland connection. Creates and manages the surface, sets up the output, and window events. This is the interface between wallbash and your Wayland compositor.
- vulkan.rs Handles the GPU initialization, texture creation, shader compilation, and draws the wallpaper surface using Vulkan. This provides the image rendering pipeline.
- filters.rs Applies Vulkan compute shaders which currently implements a blur effect for the background. The module is designed to be extensible for additional filters in future.
- colors.rs Extracts the dominant color from the wallpaper using k-means clustering, converts colors and generates a color palette. It's then deployed to your config files based on templates.
Wallbash generates a color palette from your wallpaper. You can use these colors to dynamically theme your entire desktop environment. For detailed guides, usage, and application specific examples, check out the wiki.
