haven

@june

A lightweight macOS menu bar app for finding, setting, and managing desktop wallpapers from Wallhaven.

SwiftIcnsEntitlementsPlist

0.0.0 · 8 saves · 1,789 lines · updated 17 minutes ago · trusted

8 saves
29 files ⇓ bundle
8 saves
15af22478aa0point kepr.build at bundle_app.sh and Haven.app.zip; add zip to kohignoredev17 minutes ago
21cf39065e7frewrite bundle_app.sh to build release, bundle, sign, and zip into Haven.app.zip via dittodev18 minutes ago
2ff9b8e9fbe2set CFBundleShortVersionString to 0.5 and CFBundleVersion to 5dev26 minutes ago
88e7f50fc29cset kepr.build platforms to macos-aarch64, macos-x86_64dev29 minutes ago
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