Skip to content

prasanthrangan/wallbash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

// design by t2

wallbash

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 dynamically theme your desktop.

Features

  • Vulkan-powered GPU acceleration for smooth performance
  • Color palette generation for dynamic theming
  • Fluid transitions and animations*
  • Multi-monitor support*
  • Scale and anchor the image to your liking
  • Dynamic blur fill for mismatched aspect ratios to eliminate black bars
*work in progress

Build

git clone https://github.com/prasanthrangan/wallbash
cd wallbash
cargo build --release
sudo cp target/release/wallbash /usr/local/bin/

Usage

wallbash start                  #  Start the wallpaper daemon
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>
    -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)
    -w, --wall <file>           # Wallpaper file /path/to/file.img

The Rust binary compiles to a single executable, wallbash. It acts as both a client and a daemon:

  • wallbash start Launches the daemon (background process). The daemon initializes the Wayland and Vulkan subsystems and listens for commands on a Unix socket.
  • wallbash set Sends a command to load and display the image. If the daemon is not running, it automatically starts it and waits for it to be ready before sending the command.
  • wallbash stop Terminate the daemon.
  • wallbash status Query the daemon status.

Architecture

src/
├── main.rs
├── wallbash.rs
├── wayland.rs
├── vulkan.rs
├── filters.rs
└── colors.rs

The core project is structured in simple modules:

  • main.rs Entry point of the binary. Works as a CLI tool to parse arguments and handle the daemon.
  • wallbash.rs The core daemon module. It manages the IPC listener, handles incoming commands, and orchestrates the wallpaper loading and rendering process.
  • wayland.rs Handles the Wayland integration. It creates a Wayland surface, binds to the layer shell protocol, and sets up the layer surface for the wallpaper.
  • vulkan.rs Manages the Vulkan rendering pipeline. Initializes Vulkan instance, selects physical device (preferring discrete GPU), creates swapchain, and renders the wallpaper.
  • filters.rs – Implements image filters and post‑processing effects, including dynamic background blur, scaling algorithms, and other visual transformations.
  • colors.rs – Auto detects and generates light and dark color palettes from the wallpaper’s dominant color using k‑means clustering.
// HyDE

About

// A fast and minimal wallpaper engine for HyDE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages