haven
A lightweight macOS menu bar app for finding, setting, and managing desktop wallpapers from Wallhaven.
TIMELINE 8 saves
ATLAS 29 files ⇓ bundle
HISTORY 8 saves
details
Haven
A lightweight macOS menu bar app for finding, setting, and managing desktop wallpapers. Browse Wallhaven without leaving the menu bar, set any image as your wallpaper with a click, and keep a local library of the ones you download.
Features
- Explore — search Wallhaven with live filtering by category
(General / Anime / People), purity (SFW / Sketchy), resolution, and aspect ratio. Infinite scroll loads more as you go.
- Set instantly — click a wallpaper to set it on your active display.
- Local library — wallpapers you download are saved to a folder of your
choice and browsable offline. Unreadable or broken image files are skipped automatically so they never clutter the view.
- Favorites & History — keep the ones you love and revisit anything you've
set recently.
- Launch at login — optionally start Haven automatically.
Requirements
- macOS 13 (Ventura) or later
- Swift 5.9+ toolchain (Xcode or the Swift command-line tools)
No Wallhaven API key is required — Haven uses the public search API and browses SFW and Sketchy content only.
Build & Run
Build a signed .app bundle and launch it:
./bundle_app.sh
open Haven.app
Or run directly during development:
swift build
swift run
Haven lives in the menu bar (it has no Dock icon). Click the menu bar icon to open the popover.
Usage
| Tab | What it does | | --- | --- | | Explore | Search and browse Wallhaven. Use the slider icon to filter. | | Local | Browse wallpapers saved to your local folder. | | Favorites | Wallpapers you've hearted. | | History | Recently set wallpapers. | | Settings | Launch at login, local-save toggle, and save-folder location. |
By default, downloaded wallpapers are saved to ~/Pictures/Haven. Change this in Settings → Storage → Location.
Project Layout
Sources/Haven/
API/ Wallhaven client and response models
Managers/ Wallpaper, local library, favorites, history, autostart, cache
UI/ AppState, menu bar controller, and SwiftUI views
main.swift Entry point
License
GPLv3