Stable

garbg

Wallpaper Daemon

A multi-source wallpaper daemon with intelligent caching, animated image support, and slideshow capabilities. Load backgrounds from local files, HTTP endpoints, GitHub repositories, or S3-compatible storage with automatic scaling and multi-monitor support.

Features

  • Local files and directories with recursive scanning
  • HTTP/HTTPS remote image fetching
  • GitHub repository integration with API support
  • S3-compatible cloud storage (AWS, MinIO)
  • LRU disk cache with blake3 hashing
  • Animated GIF, WebP, and APNG playback
  • Optional video wallpapers via ffmpeg
  • Five scaling modes: fill, fit, stretch, center, tile
  • Per-monitor wallpaper configuration
  • Slideshow mode with shuffle and intervals
  • Double-buffered animation rendering
  • Systemd user service integration

Supported Formats

PNG JPEG WebP GIF APNG BMP TIFF
MP4* WebM* MKV* AVI*

* Video formats require the video feature (ffmpeg-next)

Quick Start Guide

Get up and running with garbg in just a few steps. This guide covers installation, basic usage, and essential commands.

1. Installation

Install garbg using the unified installer or build from source:

terminal
$ curl -fsSL https://gar.musicsian.com/install.sh | bash -s -- --component=garbg # Install via script
$ cd ~/.local/src/gardesk/garbg && cargo build --release # Or build from source

2. Set Your First Wallpaper

Set a wallpaper directly from the command line:

terminal
$ garbg set ~/Pictures/wallpaper.png # Set a static wallpaper
$ garbg set ~/Pictures/wallpaper.png -m fit # Set with fit scaling
$ garbg set ~/Pictures/wallpaper.png -o DP-1 # Set for specific monitor
$ garbg set ~/Pictures/animated.gif --animate # Set an animated wallpaper

3. Start a Slideshow

Rotate through wallpapers from a directory:

terminal
$ garbg set ~/Pictures -r --interval 5m # Slideshow with shuffle, 5 min interval
$ garbg next # Skip to next wallpaper
$ garbg prev # Go to previous wallpaper

4. Start the Daemon

For persistent wallpapers and advanced features, run the daemon:

terminal
$ garbg daemon # Run in foreground
$ garbg daemon -d # Daemonize (run in background)
$ systemctl --user enable --now garbg # Or use systemd service

5. Essential Commands

Command Description
garbg set <source>Set wallpaper from any source
garbg nextNext wallpaper in playlist
garbg prevPrevious wallpaper
garbg pausePause animations/slideshow
garbg resumeResume playback
garbg statusShow current status
garbg reloadReload configuration
garbg list <source>List images from source
Releases