A GTK4 desktop wallpaper manager for Linux with D-Bus integration and slideshow support.
This has been built/tested on Fedora 43 with Niri Window Manager.
The wallpaper daemon runs as a GTK4 application using gtk4-layer-shell to display wallpapers on the background layer. It provides a D-Bus interface for runtime configuration.
Features:
- Slideshow mode with configurable directory
- Configurable refresh interval (default: 30 seconds)
- Two ordering modes:
randomorsequential - 19 transition effects between wallpaper changes
- Configurable layer shell layer
- Support for animated/video wallpapers (mp4, webm, mov, avi, mkv)
Configuration:
The daemon reads default settings from ~/.config/org.drewrm.wallpaperd/wallpaperd.toml:
[defaults]
wallpaper_path = ""
refresh_interval = 30
ordering = "sequential"
transition_type = "crossfade"
layer = "background"
allow_animated = falseLayer options:
background- Background layer (behind normal windows)bottom- Bottom layertop- Top layer (above normal windows)overlay- Overlay layer (always on top)
Transition types available:
none- Instant switchcrossfade- Fade between imagesslide_right,slide_left,slide_up,slide_down- Slide animationsslide_left_right,slide_up_down- Bidirectional slidesover_up,over_down,over_left,over_right- Overlay animationsunder_up,under_down,under_left,under_right- Underlay animationsrotate_left,rotate_right,rotate_left_right- Rotation animations
A command-line tool to control the wallpaper daemon via D-Bus.
Usage:
wallpaper-cli <command> [options]Commands:
| Command | Description |
|---|---|
path <path> |
Set wallpaper path (image file or directory for slideshow) |
refresh-interval <seconds> |
Set interval between wallpaper changes (minimum 1 second) |
ordering <mode> |
Set slideshow ordering: random or sequential |
transition-type <effect> |
Set transition effect (see list below) |
layer <layer> |
Set layer shell layer: background, bottom, top, or overlay |
allow-animated <bool> |
Enable or disable animated/video wallpapers: true or false |
Examples:
# Set a static wallpaper
wallpaper-cli path /path/to/image.jpg
# Set a slideshow directory with 30-second interval
wallpaper-cli path /path/to/wallpapers
wallpaper-cli refresh-interval 30
wallpaper-cli ordering random
wallpaper-cli transition-type slide_left
wallpaper-cli layer overlay
# Enable animated/video wallpapers
wallpaper-cli allow-animated truecargo build --releaseInstall the binaries to ~/cargo/bin:
cargo install --path .To run as a systemd service add the following unit file to ~/.config/systemd/user/wallpaperd.service
[Unit]
Description=Wallpaper Daemon for Wayland
PartOf=graphical-session.target
Requires=graphical-session.target
After=graphical-session.target
ConditionEnvironment=WAYLAND_DISPLAY
[Service]
Type=simple
ExecStart=%h/.cargo/bin/wallpaperd
Slice=session.slice
Restart=on-failure
[Install]
WantedBy=greaphical-session.target
Enable the service to start on login:
systemctl --user enable wallpaperd.service
systemctl --user start wallpaperd.serviceNote - Only a single instance of the daemon can run at any one time.