Skip to content

prasanthrangan/wallbash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 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 apply dynamic themes to your desktop.

Features

  • 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*
*work in progress

Requirements

  • Wayland compositor that supports layer-shell protocol
  • GPU with vulkan drivers installed
  • Rust & Cargo required to build from source

Build

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

Usage

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)

Architecture

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.

Theming

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.

// HyDE

About

// A fast and minimal wallpaper engine for HyDE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages