Wallpaper manager for the bread desktop
Find a file
Breadway 5bc879d70e
All checks were successful
check / check (push) Successful in 1m7s
dev release / build (push) Successful in 5m10s
beta (rc) release / build (push) Has been skipped
release / build (push) Successful in 42s
CI: run stable release on hestia and refuse unsigned bakery index
2026-08-16 00:50:22 +08:00
.forgejo/workflows CI: run stable release on hestia and refuse unsigned bakery index 2026-08-16 00:50:22 +08:00
.github/workflows fix: move release workflow to Forgejo, add LICENSE 2026-06-17 14:45:56 +08:00
ci ci: build inside bread-ecosystem's shared Arch container 2026-08-05 19:14:49 +08:00
packaging Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
src Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
.gitignore Track AGENTS.md 2026-08-15 22:03:30 +08:00
AGENTS.md Track AGENTS.md 2026-08-15 22:03:30 +08:00
bakery.toml Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
Cargo.lock Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
Cargo.toml Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
config.example.toml Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
CONTRIBUTING.md CONTRIBUTING.md: document single-trunk + RC-tag release model 2026-07-31 11:08:41 +08:00
EVENTS.md Add GTK wallpaper library 2026-08-16 00:26:50 +08:00
LICENSE fix: move release workflow to Forgejo, add LICENSE 2026-06-17 14:45:56 +08:00
README.md Add GTK wallpaper library 2026-08-16 00:26:50 +08:00

breadpaper

Wallpaper setter for the bread desktop. One command sets the wallpaper via awww, generates a palette with pywal (wal), and runs bread-theme reload.

set / get stay one-shot CLI. breadpaper library (alias browse) opens a GTK picker over the wallpaper directories. It is not a slideshow daemon.

Dependencies

Must be on $PATH for set:

  • awww — Wayland wallpaper (awww img)
  • wal — palette generation (python-pywal)
  • bread-theme — theme reload (bakery package, not breadd)

library also needs GTK4 (the window loads bread-theme's shared stylesheet). get only reads the path pywal stored at ~/.cache/wal/wal.

Install

bakery install breadpaper

From source:

cargo build --release
install -Dm755 target/release/breadpaper ~/.local/bin/breadpaper

Usage

breadpaper <path>          # shorthand for `set`
breadpaper set <path>      # awww + wal + bread-theme reload
breadpaper get             # print the current wallpaper path
breadpaper library         # GTK picker (alias: browse)
breadpaper library --dir PATH   # also scan PATH (repeatable)
breadpaper listen          # honor bread.command.paper.set / .library

Supported formats: png, jpg, jpeg, webp, gif, bmp.

Library

breadpaper library scans these directories (missing ones are skipped):

  1. ~/Pictures/Wallpapers
  2. /usr/share/backgrounds/bos

Override the list in ~/.config/breadpaper/config.toml:

library_dirs = [
    "~/Pictures/Wallpapers",
    "/usr/share/backgrounds/bos",
]

BREADPAPER_LIBRARY_DIRS (colon-separated) overrides the file. --dir appends extra roots for that invocation. Clicking a thumbnail runs the same set path as the CLI.

Bread events

After a successful set, breadpaper emits bread.paper.changed if breadd is running (silent no-op if it isn't). breadpaper listen is the optional long-running subscriber for bread.command.paper.set and bread.command.paper.library; it does not start by itself. Lua modules can still bread.exec("breadpaper set …") or bread.exec("breadpaper library"). See EVENTS.md.

License

MIT — see LICENSE.