Open-source project
AerialScreensaver/Aerial avatar
AerialScreensaver/Aerial

Aerial 4: a macOS screensaver that also registers as a dynamic wallpaper

Aerial app and screensaver for macOS

602 stars27 forksSwiftMIT

At a glance

What is it?
Aerial is a Swift screensaver for macOS that ships as an app extension, and since version 4.1 it registers on the com.apple.wallpaper extension point so the same videos can act as a dynamic wallpaper. It needs macOS 26 or later, and the weather overlay depends on an OpenWeather key that is blank in the public source.
Who is it for?
Aerial fits a Mac user who wants the Apple TV style video screensaver on the Mac, and who wants the same clips to continue as a dynamic wallpaper, and who does not mind that a personal project still carries rough edges. It does not fit a user on an earlier macOS release, since the current version needs macOS 26 and the site lists the last supported build for earlier systems.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Aerial is, and the two things it now is at once

Aerial is an app and screensaver for macOS, and the README describes it as the Apple TV screensaver for your Mac, now with optional wallpaper continuity. The feature list is what makes it more than a video player in a screen corner: optional overlays, multi-monitor support, time-of-day adaptation and live camera feeds support, plus the screensaver itself. The project is written in Swift, licensed under MIT, and the current version is 4.1.8, released on 2026-10-16 with the last push on the same day. The audience is a Mac user who liked the aerial screensaver from Apple TV and wants it on the Mac, together with the newer idea of having those clips continue as your wallpaper rather than stopping at the moment the screen locks.

From a .saver plugin to a sandboxed app extension

The distribution model changed at version 4.0 and the README explains why in some detail, because it explains several behaviours a user will otherwise find puzzling. The screensaver is now distributed as an App Extension bundled inside Aerial.app, and launching the app registers the screensaver so it can be found in System Settings. Apple introduced screensaver App Extensions in macOS 10.15, and they bring a much improved security model compared with the old plugins that shared their host's memory, since the extension runs in its own sandboxed process. They also fix issues that had crept into the old .saver plugin format and its legacyScreenSaver.appex compatibility layer. For anyone porting an existing .saver project, the README points at AppexSaverMinimal, a minimal working sample documenting what works and what changed.

Version 4.1 moves to Apple's private wallpaper framework

The step from 4.0 to 4.1 is where the wallpaper half of the app comes from, and it is the part of the project built on undocumented API. Version 4.1 moved to the com.apple.wallpaper extension point, backed by Apple's private WallpaperExtensionKit framework, and those extensions register as both a dynamic wallpaper and a screensaver. That is what enables the seamless continuity Aerial 4 provides. The trade-off is stated plainly: it is a more complex and undocumented API, with a very different instance-based lifecycle and remote CAContext rendering. A developer who wants to build their own can find the recommended libraries in the thanks section, where PaperSaver by Guillaume Louel is the one used to enable the app extensions, and mediaremote-adapter by Jonas van den Berg, which restored access to the mediaremote framework.

PaperSaver replaced the defaults plist, and the old API mostly survives

To enable wallpapers and screensavers, Aerial relies on PaperSaver, and the README notes that you can use that library to set your own screensaver because the old defaults plist configuration no longer works. That single line explains a class of problems for anyone who followed older instructions to configure a screensaver through the command line. The porting story is otherwise encouraging, since porting an existing .saver project is fairly easy as much of the old API is retained, with a few caveats. The project also leans on a small set of well known open source dependencies, listed in the thanks section, and Swift Argument Parser is on that list although Aerial does not use it directly, while PaperSaver does.

Building from source needs Xcode 16 and an OpenWeather key

The build instructions are three commands and one Xcode step:

bash
git clone https://github.com/AerialScreensaver/Aerial.git
cd Aerial
open Aerial.xcodeproj

In Xcode you pick the Aerial scheme and run it. The interesting detail comes right after, in a note about the file ScreenSaver/Source/Models/API/APISecrets.swift, which ships with a blank OpenWeather key in the public source. The weather overlay will not display data unless you supply your own key, and everything else in the app works without it. The requirement list is short: macOS 26, known as Tahoe, or later, and Xcode 16 or later to build from source. For earlier macOS versions, the README points at the download page, which lists the last supported release for those systems.

What the FAQ covers, and the one-person project caveat

The README is unusually direct about support. Bugs happen and some features may not work as intended, and the first instruction is to check the FAQ, which the README says contains a lot of information about limitations and how to use some of the more niche features. If the answer is not there, the issues tracker is next, and after that a Discord server with a support channel. The last line of that section is the one worth repeating to anyone considering a contribution or a dependency: Aerial is very much a one-person passion project, be kind. For a screensaver that is fine, since nothing depends on it. For anything that needs a maintenance commitment, the version numbers and the release cadence tell the real story, with 4.1.6 on 2026-10-02, 4.1.7 on 2026-10-05 and 4.1.8 on 2026-10-16, which is quick work on a mature codebase rather than a sign of instability.

The repository layout and the parts that are reusable

The tree reflects how the app is put together, and it is more useful than the README for anyone who wants to reuse a piece. There is the Aerial directory for the main application, a WallpaperExtension directory for the 4.1 wallpaper side, Shared for code both use, a Config directory, AerialTests for the test target, and the Aerial.xcodeproj project. Two files at the top level describe the release process rather than the code, a manifest.json and a checks.json, and a BuildNumber.xcconfig suggests the build number is managed outside the project settings. The SwiftLint and Periphery configuration files show the code quality tooling in use, and the project asks contributors to open an issue first for substantial changes so the approach can be discussed before the work is done.

Editorial conclusion

Aerial fits a Mac user who wants the Apple TV style video screensaver on the Mac, and who wants the same clips to continue as a dynamic wallpaper, and who does not mind that a personal project still carries rough edges. It does not fit a user on an earlier macOS release, since the current version needs macOS 26 and the site lists the last supported build for earlier systems. Before installing, read the FAQ for the limitations of the features you care about, decide whether you want the weather overlay and therefore need an OpenWeather key, and check the source build instructions, which need Xcode 16 or later.

Frequently asked questions

What macOS version does Aerial 4 need?

macOS 26, known as Tahoe, or later, and Xcode 16 or later to build from source. For earlier macOS versions the download page lists the last supported release.

Why does the Aerial weather overlay show no data?

The file ScreenSaver/Source/Models/API/APISecrets.swift ships with a blank OpenWeather key in the public source, so the overlay only displays data once you put in your own key. The README states that everything else in the app works without it.

How does Aerial work as both a screensaver and a dynamic wallpaper?

Since version 4.1 the app moves to the com.apple.wallpaper extension point backed by Apple's private WallpaperExtensionKit framework, and those extensions register as both a dynamic wallpaper and a screensaver. The README notes this is a more complex and undocumented API than the earlier extension model, and that the app relies on PaperSaver because the old defaults plist configuration no longer works.

Can I port my existing .saver screensaver to the app extension model?

The README says porting an existing .saver project is fairly easy since much of the old API is retained, with a few caveats, and it recommends looking at AppexSaverMinimal, a minimal working sample that documents what works and what changed, including what to adapt if you already have a .saver project.

Official sources

  1. AerialScreensaver/Aerial on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/aerialscreensaver-aerial.svg)](https://hysenlabs.com/projects/aerialscreensaver-aerial)

Was this useful?