0.1.0 README.md

wawa

A distinctively simple yet feature-packed, hackable Wayland wallpaper setter utilizing stb_image that targets wlr-layer-shell supported compositors, featuring tiling, spreading across monitors, along with fill, fit and stretching the wallpaper, with less SLOC than your average wallpaper setter.

In wawa, the image is loaded only for monitors that need it, and is immediately freed when all monitors have been configured; this keeps the memory usage of wawa extremely low (7x less than wbg, almost 24x less than swaybg), which may be a performance hit if youre constantly resizing the monitor. Please open an issue if this concerns you, in which case a specific flag can be added to keep the image in memory, unless it is a design flaw.

Self-resolving wallpaper image modes

By default, the image mode is set to fill.

When randomly picking a wallpaper to pick if the argument is a directory and no image mode is provided (eg. wawa ~/wallpapers), wawa is able to derive which image mode to use per the directory name:

wallpapers
├── fill
│   ├── dalem_pole.jpg
│   └── dalem_summer.jpg
└── spread
    ├── dalem_bliss.jpg
    ├── dalem_cherry.jpg
    ├── dalem_cos.jpg
    └── dalem_tree.jpg

Contributing

Please use Forgejo AGit.

Comparison

swaybg shares the same features as wawa, adding per-output wallpaper setting and using cairo under the hood with a 220% larger codebase, while wbg only supports either the stretch and fill image mode and relies on using minimal third-party libraries (while being 150% larger than swaybg) for loading images.

At this time, no other wallpaper setter supports tiling or spreading out of the box without using a Rust wrapper or some other alternative that isn't built in.