Fresh wallpapers from Reddit, automatically, on every screen.
A small macOS menu bar app. No account, no API key, no dependencies.
Redpaper picks the newest (or most upvoted) image from your favourite subreddits that actually fits your screen, and sets it as your wallpaper on a schedule you choose. Images that are too small or the wrong shape are skipped, so you won't get a blurry or awkwardly cropped desktop.
- Fits your screens. Each image gets a fit score based on its shape and resolution. Only images that look good on your displays are used, including MacBook 16:10 screens and ultrawides.
- Multiple monitors. Use the same wallpaper everywhere, or let each screen get its own best match.
- Your subreddits. Comes with r/wallpapers, r/wallpaper, r/EarthPorn, r/WidescreenWallpaper and r/SpacePorn. You can add any other subreddit, and Redpaper takes turns between the ones you select.
- Newest or top. Pick from the newest posts, or the most upvoted of the day, week, month, year or all time.
- Schedule. Every hour, every 6 hours, daily or weekly at a set time, or only when you ask. If your Mac was asleep at that time, Redpaper catches up when it wakes.
- Next and Keep. Don't like it? Press Next. Love it? Press Keep to save it and pause the schedule.
- History. Go back to any of your last 7 wallpapers, or to the ones you kept, with one click.
Right-click one to show it in Finder or save a copy to
~/Pictures/Redpaper. - Never repeats. Images you've already seen or skipped don't come back.
- Skips NSFW posts (on by default).
- Update notices. When a new version is released, the popup tells you, with a link to what's new. Or check any time with Settings → Check Now.
- Light. Redpaper uses Reddit's public feed and caches it, so it only sends a request now and then. Old images are deleted automatically.
-
macOS 14 Sonoma or later
-
Apple's Command Line Tools (free). If you don't have them yet, install them with:
xcode-select --install
Full Xcode works too, but you don't need it.
git clone https://github.com/WsMonty/Redpaper.git
cd Redpaper
./deploy.shdeploy.sh builds the app, copies it to /Applications, and starts it. Run it again whenever you
pull updates. It replaces the installed copy and restarts it.
Redpaper has no Dock icon. Look for the framed mountain icon in the menu bar. It sets your first wallpaper right away.
Can't see the icon? On a MacBook with a notch, menu bar icons can hide behind the camera when the menu bar is full. Quit a few other menu bar apps, or check System Settings → Menu Bar to make sure Redpaper is allowed to appear there.
To start Redpaper automatically, open the popup and turn on Settings → Launch at login.
Only want to build it? Run ./build.sh and you'll find the app in build/Redpaper.app.
Click the menu bar icon:
| Tab | What it's for |
|---|---|
| Now | The current wallpaper with a link to the Reddit post, Next, Keep, and the time of the next update. |
| History | Your last 7 wallpapers and the ones you kept. Click one to use it again. Right-click to show in Finder, save to Pictures, or remove from Kept. |
| Settings | Subreddits, newest or top, minimum fit, NSFW filter, multiple screens, schedule, launch at login and update checks. |
Keyboard shortcuts while the popup is open: ⌘N for the next wallpaper, ⌘Q to quit.
For every screen, Redpaper compares the image to the screen in two ways:
- Shape: how close the image's aspect ratio is to the screen's.
- Resolution: whether the image has at least as many pixels as the screen.
The fit is the lower of the two. The default minimum, 80 %, accepts every good 16:9, 16:10 or 3:2 image on common screens. If you raise it, fewer images will qualify. On a MacBook, most 16:9 wallpapers top out at about 87 %.
Without an account, Reddit allows about one request per minute. Redpaper caches what it fetched, so Next usually doesn't need a new request. If it does have to wait, the popup shows a countdown.
- Spaces. macOS only lets apps set the wallpaper of the Space you're currently on. Redpaper applies the wallpaper again whenever you switch to another Space, so every Space ends up with it.
- Where files go. Images are saved in
~/Library/Application Support/Redpaper/. Only the ones on screen, in your history, or kept are stored there. Everything else is deleted. Copies you save to Pictures are yours and never touched. - Privacy. Redpaper only talks to
reddit.comandi.redd.it, plusapi.github.comonce a day to check for a new version (turn this off in Settings → Check for updates). No analytics, no tracking.
-
Click the menu bar icon and choose Quit Redpaper. If you turned on Launch at login, turn it off first.
-
Delete
/Applications/Redpaper.app. -
Optionally delete the downloaded images and settings:
rm -rf ~/Library/Application\ Support/Redpaper defaults delete local.Redpaper
Sources/Redpaper/
App.swift App entry, scheduler, and the update logic
PopupView.swift The menu bar popup (Now and History tabs)
SettingsView.swift The Settings tab
Reddit.swift Fetching and parsing posts (RSS and JSON), fit score
Wallpaper.swift Download, size probing, setting the wallpaper, thumbnails
Auth.swift Optional Reddit sign-in (OAuth), with tokens in the Keychain
icon/ App icon (regenerate with: swift icon/make_icon.swift)
build.sh Builds build/Redpaper.app
deploy.sh Builds, installs to /Applications, and restarts the app
release.sh Tags, builds, and publishes a GitHub release (see below)
RELEASE_NOTES.md Notes per version, shown in the appRun the built-in checks (fit math, feed parsing, schedule):
./build.sh && build/Redpaper.app/Contents/MacOS/Redpaper --selftestReleasing a version. The app's version is the latest git tag, and installed copies compare it with
the newest GitHub release. To ship one, add a ## 1.3 section to RELEASE_NOTES.md (build.sh fails
without one; the app shows these notes in Settings and after an update), commit and push it, then run:
./release.sh 1.3It checks that main is clean and pushed, tags, builds and self-tests, then pushes the tag and publishes a
GitHub release with the notes from RELEASE_NOTES.md.
Reddit sign-in (optional). By default Redpaper uses Reddit's public feed, which needs no account.
If you have an approved Reddit API app (type installed app, redirect URI redpaper://auth), paste its
client ID into Auth.swift and rebuild. You'll then see a sign-in button in Settings. Signing in removes
the one-request-per-minute wait and gives exact image sizes and NSFW flags.



