Skip to content

CodesWhat/idlescreen

Repository files navigation

Idlescreen



GPU-accelerated ASCII art screensaver for macOS — procedural animations, live camera feed, and full Metal rendering.


macOS 15.0+ Metal GPU Swift 6 License


Screenshots · Features · Quick Install · Animation Modes · Building · Architecture · Requirements


Screenshots

Screenshots coming soon.


Features

GPU Metal Rendering

Instanced quad rendering with triple-buffered pipeline and Core Text glyph rasterization to texture atlas.

8 Animation Modes

Perlin noise, plasma, diagonal sweep, matrix rain, rainbow cycle, fire effect, auto-cycle, and live camera.

Live Camera Mode

Renders your webcam feed as colored ASCII art in real time via an out-of-process camera helper.

9 Character Sets

ASCII, Blocks, Binary, Symbols, Extended, Katakana, Dingbats, Geometric, and Arrows.

7 Gradient Presets

Matrix Green, Amber, Cyan, Ocean, Fire, Rainbow, and Nebula — all computed on the GPU.

11 Curated Fonts

Hand-picked monospace, display, and symbol fonts including 3 bundled Nerd Fonts.

Companion Settings App

Full SwiftUI settings app with menu bar integration and instant screensaver activation.

Real-time Preview with Loupe

Live Metal preview that mirrors the screensaver output with a pixel-level inspection loupe.

Pattern Tuning Controls

Fine-grained controls for font size, text color, background color, contrast, and brightness.

Cross-process Config Sync

JSON configuration synced across all targets via DistributedNotificationCenter with file-polling fallback.

Sandbox-safe Camera IPC

Memory-mapped frame sharing between screensaver and helper process — no serialization, no copying.

Auto-start at Login

LaunchAgent integration for persistent camera support and companion app auto-launch.

Quick Install

  1. Download Idlescreen.saver from Releases
  2. Double-click to install
  3. 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.


Animation Modes

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

Building from Source

Requires Xcode 16.0+ and XcodeGen.

brew install xcodegen
git clone https://github.com/user/idlescreen.git
cd idlescreen
xcodegen generate
open Idlescreen.xcodeproj

Build the Idlescreen scheme for the screensaver (includes IdlescreenHelper) and the IdlescreenSettings scheme for the companion app.


Architecture

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.


System Requirements

  • macOS 15.0+ (Sequoia)
  • Metal-capable GPU (any Mac from 2012 or later)
  • Camera (optional, for camera mode)

Known Issues

  • Multi-monitor — macOS does not support third-party .saver bundles on multiple monitors simultaneously (Apple bug FB19206021). The screensaver will run on the primary display only.
  • Instance accumulation — The legacyScreenSaver host may create multiple ScreenSaverView instances (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.

Built With

Swift Metal SwiftUI XcodeGen


License

About

ASCII art screensaver for macOS — Metal-powered character grid with 18 procedural patterns, live camera mode, and adaptive render quality

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors