A lightweight, high-performance animated wallpaper engine for macOS. Built with a strict focus on system efficiency, run stunning video wallpapers without draining your battery or hogging resources.
Ember uses exclusively hardware-accelerated video playback and smart power-saving features to keep your Mac fast and responsive while displaying animated wallpapers.
- Hardware-Accelerated Playback,
AVPlayerandAVPlayerLayerfor seamless.mp4video looping - True Desktop Integration, renders behind Finder icons, spans the full screen, supports multi-monitor setups
- Smart Power Management, automatically pauses playback when:
- Mac switches to battery power
- A fullscreen app is detected
- The screen is locked or the display sleeps
- Wallpaper Manager, scans
~/Movies/AnimatedWallpapers, generates thumbnails, and caches metadata - Minimal UI, clean SwiftUI interface for browsing, preveiwing, and applying wallpapers
- Low Resource Footprint, under ~100MB RAM, shared AVPlayer instances, limited redraws. No WebViews or manual frame rendering.
PID USER PRI NI VIRT RES S CPU% MEM% TIME+ COMMAND
56398 imranwafa 17 0 415G 68416 S 0.1 0.2 0:00.24 /Users/imranwafa/Documents/Projects/Ember/build/Ember.app/Contents/MacOS/Ember^^^ Tested on an Apple M3 with 32 GB RAM. During normal use, average memory usage was ~22.3 MB with roughly 15 active threads.
- Swift
- SwiftUI, UI rendering
- AppKit, window and screen management
- AVFoundation, hardware-accelerated video playback
Ember
├── Engine/
│ ├── WallpaperEngine.swift
│ ├── ScreenManager.swift
│ └── WallpaperWindow.swift
├── Models/
│ ├── Wallpaper.swift
│ └── AppSettings.swift
├── Services/
│ ├── WallpaperLoader.swift
│ ├── ThumbnailGenerator.swift
│ ├── ActivityMonitor.swift
│ └── PowerMonitor.swift
├── Views/
│ ├── WallpaperGrid.swift
│ ├── PreviewPlayer.swift
│ ├── SettingsView.swift
│ └── MenuBarView.swift
└── EmberApp.swift
- macOS 13.0 or later
- Xcode 15.0 or later (for building)
- Open
Ember.xcodeprojorPackage.swiftin Xcode. - Select your Mac as the run destination.
- Press
Cmd + Rto build and run.
xcodebuild -project Ember.xcodeproj -scheme Ember -configuration Release buildOr use the provided build script:
./build.sh- Launch Ember.
- The app creates a folder at
~/Movies/AnimatedWallpaperson first run. - Drop
.mp4looping videos into that folder. - Use the Ember UI to select and apply a wallpaper.
Contributions are welcome. Feel free to open an issue or submit a pull request.
MIT License, see LICENSE for details.