breadpaper/README.md
Breadway 1efc721990
All checks were successful
check / check (push) Successful in 2m28s
dev release / build (push) Successful in 49s
Add GTK wallpaper library
Scan ~/Pictures/Wallpapers and /usr/share/backgrounds/bos (configurable)
and open a bread-theme GTK picker via `breadpaper library` (alias browse).
Clicking a thumbnail runs the existing set path. listen honors
bread.command.paper.library by spawning that picker.
2026-08-16 00:26:50 +08:00

80 lines
2.2 KiB
Markdown

# breadpaper
Wallpaper setter for the bread desktop. One command sets the wallpaper
via [awww](https://github.com/heywoodlh/awww), generates a palette with
[pywal](https://github.com/dylanaraps/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`:
```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](EVENTS.md).
## License
MIT — see [LICENSE](LICENSE).