GPU-accelerated ASCII art screensaver for macOS — procedural animations, live camera feed, and full Metal rendering.
Screenshots · Features · Quick Install · Animation Modes · Building · Architecture · Requirements
Screenshots coming soon.
| Instanced quad rendering with triple-buffered pipeline and Core Text glyph rasterization to texture atlas. | Perlin noise, plasma, diagonal sweep, matrix rain, rainbow cycle, fire effect, auto-cycle, and live camera. | Renders your webcam feed as colored ASCII art in real time via an out-of-process camera helper. |
| ASCII, Blocks, Binary, Symbols, Extended, Katakana, Dingbats, Geometric, and Arrows. | Matrix Green, Amber, Cyan, Ocean, Fire, Rainbow, and Nebula — all computed on the GPU. | Hand-picked monospace, display, and symbol fonts including 3 bundled Nerd Fonts. |
| Full SwiftUI settings app with menu bar integration and instant screensaver activation. | Live Metal preview that mirrors the screensaver output with a pixel-level inspection loupe. | Fine-grained controls for font size, text color, background color, contrast, and brightness. |
| JSON configuration synced across all targets via DistributedNotificationCenter with file-polling fallback. | Memory-mapped frame sharing between screensaver and helper process — no serialization, no copying. | LaunchAgent integration for persistent camera support and companion app auto-launch. |
- Download
Idlescreen.saverfrom Releases - Double-click to install
- Open System Settings > Screen Saver and select Idlescreen
Optionally install IdlescreenSettings.app to /Applications/ for the companion settings app with live preview and menu bar controls.
| Mode | Description |
|---|---|
| Perlin Noise | Organic, flowing noise patterns with smooth interpolation |
| Plasma | Classic demoscene plasma effect with sinusoidal color mixing |
| Diagonal Sweep | Sweeping gradient animation across the character grid |
| Matrix Rain | Falling character streams inspired by The Matrix |
| Rainbow Cycle | Continuous hue rotation across the entire display |
| Fire Effect | Bottom-up heat propagation with ember simulation |
| Auto Cycle | Automatically rotates through all patterns on a configurable interval |
| Camera | Live webcam feed rendered as colored ASCII art via IPC helper |
Requires Xcode 16.0+ and XcodeGen.
brew install xcodegen
git clone https://github.com/user/idlescreen.git
cd idlescreen
xcodegen generate
open Idlescreen.xcodeprojBuild the Idlescreen scheme for the screensaver (includes IdlescreenHelper) and the IdlescreenSettings scheme for the companion app.
| Target | Type | Purpose |
|---|---|---|
| Idlescreen.saver | Screen saver bundle | Main screensaver plugin loaded by macOS |
| IdlescreenHelper.app | LaunchAgent helper | Camera capture outside the screensaver sandbox |
| IdlescreenSettings.app | macOS app | Companion settings app with live Metal preview |
The screensaver embeds IdlescreenHelper inside its bundle. Camera frames are shared between processes via memory-mapped files in ~/Library/Caches/com.idlescreen/ — no serialization, no copying. Configuration is stored as JSON at ~/Library/Application Support/Idlescreen/config.json and synchronized across processes using DistributedNotificationCenter with a file-polling fallback.
- macOS 15.0+ (Sequoia)
- Metal-capable GPU (any Mac from 2012 or later)
- Camera (optional, for camera mode)
- Multi-monitor — macOS does not support third-party
.saverbundles on multiple monitors simultaneously (Apple bug FB19206021). The screensaver will run on the primary display only. - Instance accumulation — The
legacyScreenSaverhost may create multipleScreenSaverViewinstances (Apple bug FB19204084). Idlescreen mitigates this with a lame-duck pattern that neuters stale instances. - Options panel — The screensaver options panel in System Settings may occasionally fail to open. Restarting System Settings resolves this.