A macOS screensaver that plays Omarchy’s ASCII text-effects loop.
Your logo, or any art, animated by the 37 Terminal Text Effects.
Download
·
Install
·
Status
·
Build
·
Contributing
animation.mp4
- A real screensaver. Host app plus a
com.apple.screensaverappex, listed in System Settings. Not a preview window pretending to be idle. - The Omarchy loop. All 37 Terminal Text Effects, running on a Metal cell grid. Same motion as the Linux screensaver, including the default wordmark.
- Your art. Paste ASCII, convert a PNG or SVG to block or Braille, or let an agent write the public text file directly.
- Install from the host. Drop
Omacy.appin/Applications, register the extension, enable it. The full configuration editor lives in the app because the converter needsNSOpenPanel.
See architecture, FFI, and parity for the engine contract.
Download the latest .dmg from the releases page, open it, and drag Omacy to your Applications folder.
Then open Omacy, register the screensaver, and enable it from the app or in System Settings → Screen Saver.
The host will not register the extension from a random folder. Mixing Xcode DerivedData and /Applications makes PlugInKit sticky — pick one.
Builds are signed and notarized by Zenjoy BV. Requires macOS 15 (Sequoia) or later.
Once installed, Omacy offers user-approved, signed updates from GitHub Releases via Sparkle.
Omacy is in active development. The Rust engine is tested in CI. The host app and screensaver extension compile on macOS 26.
Idle activation and listing next to Apple’s own savers still need a signed install on a real Mac. That gate is tracked in docs/macos-gates.md.
The appex uses ScreenSaver.framework classes Apple has not documented. Aerial does the same. An OS update can break it.
- macOS 15 (Sequoia) or later
- Apple silicon (
arm64); Intel and universal builds are not supported - Xcode 26 (PaperSaver 0.2.0 needs Swift 6.2)
- Rust 1.88 (
rust-toolchain.toml)
Omacy's public configuration is deliberately made of ordinary files:
~/.config/omacy/screensaver.txt
~/.config/omacy/settings.json
The host app and your own scripts or agents can write them. The screensaver extension only reads them. Each file is validated independently, with a process-private last-known-good cache in each sandbox and bundled defaults as fallbacks. Changes take effect at the next effect boundary; Omacy does not run a filesystem watcher.
An agent can drive the art by atomically replacing screensaver.txt with complete UTF-8 ASCII art. It may also select an effect pool or adjust presentation settings in settings.json. See the agent workflow and the exact loading, migration, and transition contracts in architecture.
Engine tests:
cargo test --workspace --all-targets
cargo xtask header check
scripts/verify-ttfx-vendor.shMac host and screensaver:
xcodebuild -project apps/Omacy/Omacy.xcodeproj -scheme Omacy \
-destination 'generic/platform=macOS' buildThe Xcode build phase runs apps/Omacy/scripts/build-engine.sh, which builds libomacy_engine.a for aarch64-apple-darwin and links it into the app and the appex.
The C header is generated with pinned cbindgen 0.29.4 and committed at crates/omacy-engine/include/omacy.h. Vendored engine provenance is recorded in vendor/ttfx/PIN; ttfx is a checked-in patched snapshot, not a submodule. Default art is assets/branding/screensaver.txt.
Host-specific notes live in apps/Omacy/README.md. Screensaver appex background is in apps/Omacy/BACKGROUND.md.
Contributions are welcome. Start with CONTRIBUTING.md.
The motion is Terminal Text Effects by ChrisBuilds, running on ttfx, the Rust port Omarchy ships. Both are MIT. The Linux wrapper this copies is Omarchy, also MIT. The host/appex path follows Aerial and AppexSaverMinimal. The bundled font is Fairfax HD by Kreative Software, SIL OFL.
Omacy is available under the MIT License. See LICENSE and NOTICE. Font: assets/fonts/OFL.txt.
The MIT license covers the code. It does not grant rights to use the Omacy name, logos, icons, or other branding for your own distribution.
See TRADEMARKS.md for branding rules.
