UnfoldMyMac for macOS

# A little more life
on your Mac.

Live wallpapers that react to your work. Cover effects that follow your lid. A native Mac app, with room for your own ideas.

[Get UnfoldMyMac](https://unfoldmymac.com/download/)[Explore the collection](https://unfoldmymac.com/showcase/)

macOS 26+ · Open source · Made by [Matterward Labs](https://matterwardlabs.com/)

Follows your MacBook lid13 effects. 10 little worlds.Make it your ownSwiftUI, AppKit & Metal

From the hinge to the screen

## Your lid sets the pace.

Close a little and the effect moves a little. Open back up and it reverses. On a MacBook with a readable lid-angle sensor, the position of the lid controls how far the effect has progressed.

[How lid control works](https://unfoldmymac.com/blog/lid-effects/)

- ### Find your closing scene

Choose an effect and scrub through its preview. Try the curtains halfway closed, or see where a character first peeks into view.

- ### Set the angles

Choose where the effect starts and where it finishes. Adjust the range until the movement feels right for the way you close your Mac.

- ### Turn it on when you’re ready

Effects start disabled. Enable your choice from the app; the overlay lets clicks through, and the menu-bar controls stay within reach.

UnfoldMyMac, in the wild

## A real MacBook.
A little desktop theatre.

Filmed at a café. Close the lid, change the scene.
 See the effects and wallpapers out in the world.

[Watch all five clips](https://unfoldmymac.com/showcase/#in-real-life)

![Watch the lid: an illustrated MacBook opening and closing](https://unfoldmymac.com/media/real-life/reel.webp)

02:30 · Sound on

The full story  Real footage · 4K on YouTube

### Watch the lid.

A Mac app with animations that follow your lid and live wallpapers for your desktop. See where it started, choose a look, then watch it on a real MacBook.

[Watch on YouTube ↗](https://www.youtube.com/watch?v=3wAaLwu-msc)

Jump to[Read transcript](https://unfoldmymac.com/media/real-life/reel-transcript.txt)

The full film plays the complete recordings at 1.5×. Individual clips play at their original speed. Press play for sound; HDR is available on compatible screens.

The whole collection

## Every mood. Every preview.

All 13 lid effects and 10 live wallpapers. Find your desktop personality.

01 / 23

![Curtains effect over a demo Mac desktop](https://unfoldmymac.com/media/curtains.webp)

Motion & 3D

### Curtains

Velvet folds and stage lighting. A curtain call for your tabs.

App render · Demo desktop

Choose a scene, then press Preview to play. Wallpaper recordings show sample data.

## Closing time has character.

Curtains, curious faces, and a little moonlit escape.
Choose what happens when your lid comes down.

[See every effect](https://unfoldmymac.com/showcase/)

![Curtains effect over a demo Mac desktop](https://unfoldmymac.com/media/curtains.webp)

Motion & 3D

### Curtains

Velvet folds and stage lighting. A curtain call for your tabs.

App render · Demo desktop

![Peekaboo effect over a demo Mac desktop](https://unfoldmymac.com/media/peekaboo.webp)

Motion & 3D

### Peekaboo

Blinking, curious characters. Your desktop has acquired witnesses.

App render · Demo desktop

![Reverie effect over a demo Mac desktop](https://unfoldmymac.com/media/reverie.webp)

Image Art

### Reverie

Celestial paper art opens along a curved, moonlit seam.

App render · Demo desktop

Live wallpapers

## Leave it open. 
There’s a whole 
world in there.

A sculpture moves with your Mac’s workload. A robot follows your coding sessions. Your GitHub profile becomes a city.

Ten scenes, from a GTA VI countdown to auroras around Earth. Optional personal data connections leave room for your own ideas.

[Meet your next wallpaper](https://unfoldmymac.com/features/#wallpapers)

![Codex Mission Control wallpaper with sample data](https://unfoldmymac.com/media/codex-mission-control.webp)

Live wallpaper

### Codex Mission Control

A little robot responds to working, waiting, and completed hook states.

App render · Sample data

Hooks & live data

## Give the scene something
to react to.

A coding session can change a character’s mood. A public forecast can change the sky. The engine feeds those inputs to the wallpaper’s motion, colours, and text.

Local events

### See what Codex is waiting for.

Codex Mission Control follows lifecycle hooks: starting work, using tools, asking for approval, finishing a turn, or being interrupted. The robot’s expression and status follow along.

Codex events and wallpaper states

| Codex event | Wallpaper state |
| --- | --- |
| Submit a prompt or run a tool | Working |
| Request permission | Needs you |
| Complete a turn | Finished |
| Interrupt the turn | Interrupted |

[Set up Codex hooks](https://unfoldmymac.com/blog/connecting-your-data/#codex-hooks-drive-live-work-states)

Public APIs

### Put a few live numbers to work.

#### Aurora Observatory · NOAA

Planetary Kp readings and the aurora forecast shape the curtains around Earth. The data comes from [NOAA’s public space-weather feeds](https://www.swpc.noaa.gov/products/aurora-30-minute-forecast).

#### GitHub After Hours · GitHub

Public repository and follower counts, plus recent public push events, give your profile a place in the city. Connect a username in the app.

Both sources refresh every five minutes. GitHub can delay public events, so these are periodically updated stats. See [GitHub’s timing notes](https://docs.github.com/en/rest/activity/events).

[Connect another data source](https://unfoldmymac.com/blog/connecting-your-data/#public-api-data-needs-a-snapshot-adapter)

### Your API can be next.

A small adapter can turn a public API response into the engine’s JSON snapshot format. Supply an updating local file or an HTTPS snapshot endpoint, then bind its values to your template. A raw API URL needs that translation unless it already returns the snapshot format.

Local snapshot files are read once a second; the standard HTTPS connector polls every five seconds. Your adapter controls upstream refreshes and API rate limits.

Under the hood

## Swift for the app.
Metal for the motion.

UnfoldMyMac is written in Swift 6 for macOS 26 and later. SwiftUI handles the interface, AppKit places the desktop windows, and Metal renders the live wallpapers and shader effects on the GPU.

### Work shared across the renderer

Metal scenes use one GPU device and command queue. Shader libraries and render pipelines are cached across the app, so changing a scene can reuse work already done. The renderer prefers precompiled shaders when they’re available.

### Frames timed to the display

The wallpaper renderer uses Apple’s `CAMetalDisplayLink` to schedule frames for presentation. Choose a 30 or 60 fps limit; macOS power and accessibility settings can lower it automatically.

### A limit on the pixels, too

Wallpaper rendering is capped at 1,920 pixels on the longest edge before scaling to the display. Each Metal surface allows at most three frames in flight, keeping queued GPU work bounded.

Wallpaper frame limits

| Mac state | Frame limit |
| --- | --- |
| Normal playback Your choice in settings | 30 or 60 fps |
| Low Power Mode Also during serious or critical thermal pressure | 30 fps maximum |
| Reduce Motion Continuous animation is still | 1 update / second |
| Mac or display asleep Rendering and data sampling stop | Paused |

The Frost effect

### Your desktop becomes the texture.

Frost uses ScreenCaptureKit to receive desktop frames in memory. Core Video exposes those frames as Metal textures without copying the pixels. Screen Recording permission is needed for Frost; the other lid effects work without it.

Read the [rendering code](https://github.com/satyajiit/UnfoldMyMac/tree/main/MacDuo/Sources/UnfoldMyMacKit/Rendering), the [wallpaper playback policy](https://github.com/satyajiit/UnfoldMyMac/blob/main/MacDuo/Sources/UnfoldMyMacCore/Wallpaper/WallpaperPlayback.swift), or [Apple’s Metal overview](https://developer.apple.com/metal/).

The story behind the app

## It was supposed to be
one effect.

Then came curtains. Then characters. Then a small robot had opinions about a coding session. This is what happens when a side project finds the lid sensor.

[Read how it started](https://unfoldmymac.com/story/)

![A comic showing one lid effect growing into a collection of effects and live wallpapers](https://unfoldmymac.com/media/origin-comic.webp)

An open invitation

## We built the engine.
You bring the next scene.

The renderer, data connections, and template format are in place. Now I want to see the scenes other people would put on their desktops.

Try a harbour that follows the tide, a greenhouse driven by weather data, or a character with its own reaction when Codex finishes a turn. These are ideas to build on.

Pitch something stranger, too. Share a sketch, the data it would use, and what should move. A rough drawing is enough to start a conversation.

[Share a wallpaper idea](https://github.com/satyajiit/UnfoldMyMac/issues/new?template=feature-request.yml&title=Wallpaper%20idea%3A%20)[Build a wallpaper](https://github.com/satyajiit/UnfoldMyMac/blob/main/MacDuo/WALLPAPER_ENGINE.md)

![A wallpaper workshop with a laptop, a small robot, an aurora model, and a hand sketching the next landscape](https://unfoldmymac.com/media/wallpaper-workshop.webp)
A few directions to explore · Concept illustration

### Remix a template

Use an installed scene and change its colours, text layers, or data bindings in JSON. Import the template to try it on your Mac.

### Draw a new scene

Contribute a template folder with its own Metal shader to the repo. The engine supplies timing, data, and display handling.

### Bring a useful feed

Write an adapter or a native provider for another data source. Include sample data so people can try the scene before connecting it.

Implementation and setup details are in the [wallpaper engine guide](https://github.com/satyajiit/UnfoldMyMac/blob/main/MacDuo/WALLPAPER_ENGINE.md). Start with an idea in the [issue tracker](https://github.com/satyajiit/UnfoldMyMac/issues), or send a pull request with a working scene.

Before you try it

## A few practical details.

[Read all the answers](https://unfoldmymac.com/faq/)

### Will my Mac’s lid work?

Lid control needs a readable angle sensor, and support varies by MacBook model. The app requires macOS 26 or later. Check the [requirements](https://unfoldmymac.com/download/) before installing.

### What about an external display?

Lid effects stay on the MacBook’s built-in display. Live wallpapers can run across your displays, including external monitors.

### Can I add my own artwork?

Import an image and try the Sculpted, Diagonal, Slide, or Burst reveal. The app keeps a local copy. You can also build a wallpaper template using the [extension guide](https://github.com/satyajiit/UnfoldMyMac/blob/main/MacDuo/DEVELOPING.md).

Canonical: https://unfoldmymac.com/
