mistress
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.