Skip to content
saeedetPublic

About

Quiet character rain for terminals and native macOS/Windows screensavers, built in Rust. Monochrome and Matrix themes, with experimental Hyprland integration.

Topics

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

Stillterm

Quiet character animation for terminals and native screensavers, powered by Rust.

Choose Monochrome, Matrix, or Dense Matrix rain, and add your own words in a repeating sequence. Stillterm runs in your terminal or as a native macOS/Windows screensaver, with deterministic seeds and a 30 FPS default. It has no background service or browser runtime.

A reproducible snapshot of Stillterm's rain effect

Engine snapshot: seed 42, four seconds, 96×28 cells. Font and brightness vary by terminal. An animation recording is planned for the first release.

Status: In development; source installation is available now. The Mac build is Developer ID signed, with Apple notarization pending. Public binary releases are not available yet; Windows builds remain unsigned. The Hyprland adapter is experimental. Stillterm provides animation; your operating system controls locking.

Install

Requires Rust 1.88 or newer and a system linker. With rustup, this checkout selects the tested Rust 1.88.0 toolchain.

git clone https://github.com/saeedet/Stillterm.git
cd Stillterm
cargo install --path crates/terminal --locked

This installs stillterm into Cargo's binary directory. Ensure that directory is on your PATH. Uninstall with cargo uninstall stillterm.

Signed prebuilt downloads are not available yet. There is no published crates.io package at this stage; use the source installation above.

macOS screensaver

On macOS, build a universal native screensaver and try it in a window:

rustup target add aarch64-apple-darwin x86_64-apple-darwin
scripts/build-macos.sh
scripts/check-macos.sh --preview

Open target/macos/Stillterm.saver to install. The native options panel includes all three themes, custom characters, ordered words/phrases, and animation controls. Build 15 passed local settings, rendering, lifecycle, and memory regression checks on Apple M3 / macOS 27.0.1. Earlier installed-screensaver checks passed on macOS 14.6.1, including multiple displays and sleep/wake. Longer sessions and a clean-Mac installation of the final notarized download still need testing. See macOS setup and distribution.

Windows screensaver

On Windows, run ./scripts/build-windows.ps1 from PowerShell to build target/windows/Stillterm.scr. It supports full screen, native settings, and the embedded Windows preview. The baseline manual checklist passed on Windows 10 and Windows 11. The latest word-sequence and dense-theme updates have automated checks; manual Windows testing of those additions is pending. Builds remain unsigned. See setup and the test checklist.

Linux / Hyprland

An experimental adapter runs Stillterm in one Foot terminal per monitor, with input dismissal and cleanup on locking or display changes. Install and try it using the Linux guide. Standalone Hypridle integration is optional; Omarchy 4.0.4 supports manual preview only because its current idle service has no suitable replacement interface. Physical Linux desktop validation remains pending.

Run

stillterm
stillterm run --fps 30 --seed 42
stillterm --speed 0.6 --density 0.12
stillterm --config examples/config.toml
stillterm list

Press q, Escape, or Ctrl+C to quit. Resize the terminal while it runs. For development without installation, use cargo run --release -- --seed 42. Use an ANSI-capable terminal; Windows Terminal is the intended Windows surface.

Matrix theme

stillterm --theme matrix
stillterm --config examples/matrix.toml

Green trails, pale heads, and half-width Katakana mixed with digits and symbols. The preset uses speed 1.6, density 0.35, and intensity 1.0; explicit file or CLI settings override those defaults. The original look remains the default and is available as --theme monochrome.

Matrix theme at seed 42 and four seconds

Engine snapshot using the theme's ideal colors; terminal palettes and fonts vary.

Use a font with half-width Katakana support. For an ASCII fallback, add --characters '0123456789:<>*+-'. Standard terminal glyphs cannot reproduce the movie's mirrored characters. True-color terminals show the smoothest green ramp; 256-color and basic-color terminals use reduced palettes. NO_COLOR disables color.

For a fuller screen, choose Dense Matrix in native options or run:

stillterm --theme dense-matrix
stillterm --config examples/dense-matrix.toml

This preset uses long trails scaled to the grid height and scattered pale heads (speed 1.2, density 0.95, intensity 1.0). On macOS, three overlapping layers vary character size, speed, and brightness, with soft distant rain, glowing near heads, and a fade toward the bottom. Terminal and Windows rendering use one grid. Native theme selection sets the base character size to 10; adjust it after selecting the preset. In a terminal, use the terminal's font settings to fit more columns and rows. Dense rendering costs more than the sparse presets; see local measurements.

Words in the rain

Open the native screensaver's Options/Settings and enter words in Words / phrases (Windows: Words), separated by commas or line breaks. For example, FREE, YOUR, MIND shows FREE → YOUR → MIND, then repeats. Each phrase appears one at a time at a randomly chosen rain position. Choose Rare, Occasional, or Frequent; leave the field empty to disable it. All themes support phrases.

In a terminal, including the Linux adapter:

stillterm --theme matrix --words 'FREE,YOUR,MIND' --word-frequency frequent
stillterm --config examples/words.toml

TOML files also accept an array: words = ["FREE", "YOUR", "MIND"]. Blank entries are ignored; phrases keep their input order, including repeats.

Words stay fixed vertically in a column. As the falling head passes each letter, it lights up and stays bright: F, FR, FRE, then FREE. After the final letter lights up, the letters fade in the same order from top to bottom. The surrounding rain continues normally.

The first attempt is after roughly 3–5 seconds, then waits for a suitable stream; speed and density affect the reveal. After the last letter fades, pauses are 4–7 seconds (Frequent), 12–20 seconds (Occasional), or 30–50 seconds (Rare). Phrases taller than the current grid are skipped. Up to 16 phrases of 64 printable, single-column characters are supported; spaces create gaps. Zero density disables both rain and words. The text stays in local settings and is not sent to a service.

Configure

Settings apply in this order: built-in defaults, an explicitly supplied TOML file, then command-line overrides. The selected theme supplies defaults for omitted visual settings. Files must be UTF-8 TOML, no larger than 64 KiB. No configuration file is written automatically.

These settings configure the terminal and Linux adapter. The macOS and Windows screensavers use their own Options/Settings panels and per-user preferences; changing a CLI file does not change either native screensaver.

Setting Default Accepted values
effect "rain" rain
theme "monochrome" monochrome, matrix, dense-matrix
fps 30 Integer, 10–60
speed 1.0 0.1–4.0
density 0.18 0.0–1.0; stream activation probability
intensity 0.7 0.0–1.0
characters "0123456789.:+*" 1–256 printable, single-column characters
seed 42 Unsigned 64-bit integer
words "" Ordered text separated by commas/line breaks, or a string array; up to 16 × 64 characters
word_frequency "occasional" rare, occasional, frequent

See the example configuration or stillterm --help. The numeric and character defaults in the table describe the monochrome theme. ASCII is the most portable character set. Wide, combining, control, and ambiguous-width characters are rejected. Nonempty NO_COLOR disables color; the monochrome theme otherwise uses a detected grayscale or basic-color palette.

Platforms

Surface Status
macOS terminal Tested locally on Apple Silicon, including PTY lifecycle checks
Windows terminal Cross-checked for compilation; native CI configured; interactive testing pending
Linux terminal Cross-checked for compilation; native CI and PTY checks configured
macOS .saver Build 15 checked locally on Apple M3; earlier installed checks on macOS 14.6.1; notarized download pending
Windows .scr Baseline tested on Windows 10/11; latest phrase/dense additions await manual testing; unsigned
Hyprland / Hypridle Experimental adapter; automated lifecycle tests; desktop acceptance pending
Omarchy 4.0.4 Manual preview path; automatic idle replacement unsupported

CI checks the workspace and macOS bundle, plus Linux launcher and terminal lifecycle tests. The optional Linux adapter provides desktop integration around the terminal executable. See platform research and acceptance checks.

How it works

stillterm-engine owns a character grid, seeded rain state, and fixed simulation steps. stillterm owns the terminal, configuration loading, timing, and input. The renderer compares presented cells and writes changed runs. The engine has no OS or graphical-framework dependencies. Engine and CLI crates forbid unsafe Rust; the macOS bridge isolates the documented C interface.

On the initial Apple M3 benchmark, the CLI used less than 1% of one CPU core at 30 FPS in a drained pseudo-terminal. This excludes terminal-emulator rendering; see measurements and reproduction steps.

For the boundaries and determinism contract, read architecture. To extend the engine, read adding an effect.

Contribute

cargo test --workspace --all-targets --locked
cargo fmt --all --check
cargo clippy --workspace --all-targets --locked -- -D warnings

Contributing covers platform checks, visual changes, and bug reports. See the development changelog for implemented changes and remaining limits. Licensed under MIT.

About

Quiet character rain for terminals and native macOS/Windows screensavers, built in Rust. Monochrome and Matrix themes, with experimental Hyprland integration.

Topics

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages