Skip to content

f17mkx/matrix-saver

Repository files navigation

MatrixScreenSaver

A native macOS digital-rain screen saver — the iconic Matrix code, rendered in pure Swift. No WebView, no JavaScript, no network.

License: MIT Platform: macOS Made with Swift

Matrix digital rain demo

Why This Exists

This screen saver brings two Matrix savers together under one popup.

The Cinematic look is patrickschaper/matrixScreenSaver, a native Swift/AppKit saver with depth layers, glow, glyph morphing and the "Wake up, Neo" intro. On top of it I added a calm Classic look (now the default), modeled on an older web-based Matrix saver I liked, with uniform slow streams, long fade trails and none of the frantic shimmer. Then I wired up the options to switch between the two and to dial the rest in (style, speed, color, no-white-heads, no-block) and did some refinement under the hood. It runs in-process, never touches the network, and is easy on the CPU.

Quick Start

  1. Download MatrixScreenSaver.zip from the latest release and double-click to extract MatrixScreenSaver.saver.
  2. From the folder containing the extracted file, run:
xattr -dr com.apple.quarantine MatrixScreenSaver.saver
mkdir -p "$HOME/Library/Screen Savers"
rm -rf "$HOME/Library/Screen Savers/MatrixScreenSaver.saver"
ditto MatrixScreenSaver.saver "$HOME/Library/Screen Savers/MatrixScreenSaver.saver"
open "x-apple.systempreferences:com.apple.Wallpaper-Settings.extension"
  1. In Wallpaper settings, switch to Screen Saver and pick MatrixScreenSaver.

That's it. Click Options… to tweak the look.

Why the xattr step? The saver is not yet notarized or signed with a paid Apple Developer ID, so macOS quarantines it on download. The command above strips that quarantine flag so Gatekeeper will load the bundle. If you'd like to help fund notarization, see Support below.

Features

  • Two looks, one popup. Choose between a calm Classic rain and a layered Cinematic rain (details below).
  • Six colors. Green (default), red, blue, amber, cyan, white, each hue-rotated from a tuned xterm-256 green so they stay true to the terminal palette.
  • Speed slider. Control how fast the text falls, independent of frame rate.
  • CRT scan lines. Optional vertical or horizontal scan-line overlay for that cathode-ray feel.
  • Custom glyph set. Swap in your own characters, e.g. ATGC for a DNA-helix look.
  • Multi-display aware. Every screen animates independently, while scripted intros stay in sync across displays.
  • Fully offline. No telemetry, no network, no analytics. Ever.
  • Native Options sheet. AppKit UI grouped into Look / Cinematic effects / Cinematic intro. Cinematic-only controls auto-disable when Classic is selected, and settings persist via ScreenSaverDefaults.

Two Looks

Classic (default)

My addition: calm and uniform, with slow evenly-paced streams and long fade trails. No per-glyph morphing, no twinkle, no glow, no intro scenes. Modeled on an older web-based Matrix saver, pleasant to leave running for hours.

Classic green

The color picker applies to both styles (here, cyan):

Cyan color option

Cinematic

patrickschaper's original look: depth layers for parallax, twinkling glyphs, soft glow halos, per-glyph morphing, and optional intro scenes, a typed "Neo message" and a cascading number scene, before the rain takes over.

Cinematic rain

The optional "Wake up, Neo" intro message:

Cinematic Neo message intro

Options

All options live in the native Options… sheet, grouped exactly as they appear in the UI. Cinematic-only controls are greyed out while Classic is selected.

Look (applies to both styles)

Option Type Default Description
Style Classic / Cinematic Classic The overall look. Classic = calm uniform streams; Cinematic = depth, glow, morphing, intros.
Color green / red / blue / amber / cyan / white green Rain color, hue-rotated from a tuned xterm-256 green.
White leading characters toggle Off When on, the leading "head" glyphs fade to white. Off keeps them in the rain color (no white accents).
Filled block character (█) toggle Off When on, the solid block █ can fall with the rain. Off keeps it out of the pool.
Speed slider (0.2×–3.0×) 1.0× How fast the text falls, independent of frame rate.
Density number 1.0 Rain density multiplier.
Character size slider 16×30 Character cell size in pixels.
Scan lines slider + direction 25%, Vertical CRT scan-line intensity (0–100%) and orientation.
Frame rate number (fps) 25 Target frame rate, 1–1000. Honored in both styles.
Characters text (empty = default) Custom glyph set, e.g. ATGC. Honored in both styles.

Cinematic effects (ignored in Classic)

Option Type Default Description
Twinkling effect toggle On Per-glyph twinkle shimmer.
Glow effect toggle On Soft glow halos around glyphs.
Error rate number 1.0 Character-change (morph) rate factor.

Cinematic intro (ignored in Classic)

Option Type Default Description
Neo message · Activate toggle Off Show the typed "Neo message" intro before the rain.
Neo message · Lines editable list (built-in default) The lines typed during the intro (1–10 lines, max 256 chars each).
Neo message · Typing speed number 1.0 Speed multiplier for intro typing.
Number scene · Activate toggle Off Show the cascading startup number scene.

Requirements

  • macOS Tahoe (26.x) on Apple Silicon (arm64).
  • No Xcode required to build (see below).

Build From Source

git clone https://github.com/f17mkx/matrix-saver
cd matrix-saver
bash build.sh && bash install.sh   # builds the .saver and installs it
bash preview.sh                    # fast iteration in a preview window
bash tests.sh                      # TAP test suite, no Xcode needed

Source lives in Sources/MatrixScreenSaver/. The bundle is built directly with swiftc; there is no Xcode project to open.

Credits

The native Swift/AppKit screen saver this is built on, and the Cinematic style, are patrickschaper/matrixScreenSaver (MIT). Thanks to Patrick Schaper for the original and its enduring digital-rain feel.

The calm Classic look (modeled on an older web-based Matrix saver), the style switch that brings the two together, the added options (speed, no-white-heads, no-block, reconsolidated settings), and the performance work are by f17mkx.

Support

If this screen saver brightens your idle screen, you can help fund a paid Apple Developer ID (so future releases ship notarized, no xattr step needed) and continued maintenance:

Buy Me a Coffee   GitHub Sponsors

License

MIT. Forked from patrickschaper/matrixScreenSaver, © Patrick Schaper; modifications © f17mkx. See LICENSE.

About

A native macOS (Apple Silicon) Matrix digital-rain screen saver. Fork of patrickschaper/matrixScreenSaver (its look is the Cinematic style) with an added calm Classic look, a style switch, color picker, speed and more.

Topics

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors