1# Haven23A lightweight macOS menu bar app for finding, setting, and managing desktop4wallpapers. Browse [Wallhaven](https://wallhaven.cc) without leaving the menu5bar, set any image as your wallpaper with a click, and keep a local library of6the ones you download.78## Features910- **Explore** — search Wallhaven with live filtering by category11 (General / Anime / People), purity (SFW / Sketchy), resolution, and aspect12 ratio. Infinite scroll loads more as you go.13- **Set instantly** — click a wallpaper to set it on your active display.14- **Local library** — wallpapers you download are saved to a folder of your15 choice and browsable offline. Unreadable or broken image files are skipped16 automatically so they never clutter the view.17- **Favorites & History** — keep the ones you love and revisit anything you've18 set recently.19- **Launch at login** — optionally start Haven automatically.2021## Requirements2223- macOS 13 (Ventura) or later24- Swift 6.1+ toolchain (Xcode or the Swift command-line tools)2526No Wallhaven API key is required — Haven uses the public search API and browses27SFW and Sketchy content only.2829## Build & Run3031Build a signed `.app` bundle and launch it:3233```sh34./bundle_app.sh35open Haven.app36```3738Or run directly during development:3940```sh41swift build42swift run43```4445Run the full test suite and the checked-in 100% physical source-line coverage gate:4647```sh48bash coverage.sh49```5051The coverage command combines `swift test --enable-code-coverage` with a52smoke run of the executable so the real entry point is measured. Its physical53source-line gate excludes blank, comment-only, and structural brace lines;54the LLVM aggregate report printed above it also includes compiler-generated55SwiftUI mappings and can therefore be lower.5657Haven lives in the menu bar (it has no Dock icon). Click the menu bar icon to58open the popover.5960## Usage6162| Tab | What it does |63| --- | --- |64| **Explore** | Search and browse Wallhaven. Use the slider icon to filter. |65| **Local** | Browse wallpapers saved to your local folder. |66| **Favorites** | Wallpapers you've hearted. |67| **History** | Recently set wallpapers. |68| **Settings** | Launch at login, local-save toggle, and save-folder location. |6970By default, downloaded wallpapers are saved to `~/Pictures/Haven`. Change this71in **Settings → Storage → Location**.7273## Project Layout7475```76Sources/Haven/77 API/ Wallhaven client and response models78 Managers/ Wallpaper, local library, favorites, history, autostart, cache79 UI/ AppState, menu bar controller, and SwiftUI views80 main.swift Entry point81```8283## License8485Haven is free software: you can redistribute it and/or modify it under the86terms of the **GNU General Public License as published by the Free Software87Foundation, either version 3 of the License, or (at your option) any later88version**. See [`LICENSE`](LICENSE) for the full text.8990```91Haven — a macOS menu bar app for browsing, setting, and managing wallpapers.92Copyright (C) 2026 Asha Software93```