Quiet character animation for terminals and native screensavers, powered by Rust.
Sparse streams, fading trails, and a small reusable animation engine. Stillterm runs directly in your terminal, with deterministic seeds and a 30 FPS default. It has no background service or browser runtime.
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: Terminal application plus macOS and Windows screensaver development builds, plus an experimental Hyprland adapter. macOS Developer ID signing is configured and the first package has been submitted for notarization. Public binary releases are pending; Windows builds remain unsigned. Stillterm does not lock your session.
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 --lockedThis 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.
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 --previewOpen target/macos/Stillterm.saver to install. It includes both themes and a native
options panel. Local installed-screensaver testing passed on Apple M3 with macOS
14.6.1, including theme switching, multiple displays, sleep/wake, and cleanup after
dismissal. Build 5 passes a retained-view memory regression check; after three
installed previews, the idle helper measured 117 MiB and 0% CPU. Longer-session
memory and active-rendering performance validation are still pending. Signed,
notarized downloads and broader compatibility testing are also pending. See macOS setup and distribution.
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 manual checklist passed on Windows 10 and Windows 11.
Milestone 3 implementation and manual testing are complete. This remains an unsigned
development build. See setup and the test checklist.
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.
stillterm
stillterm run --fps 30 --seed 42
stillterm --speed 0.6 --density 0.12
stillterm --config examples/config.toml
stillterm listPress 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.
stillterm --theme matrix
stillterm --config examples/matrix.tomlGreen 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.
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.
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 |
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 |
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.
| 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 |
Installed screensaver tested on Apple M3 / macOS 14.6.1; Intel slice checked under Rosetta; signed downloads pending |
Windows .scr |
Manual checklist passed on Windows 10 and Windows 11; unsigned x64 build |
| 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.
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.
cargo test --workspace --all-targets --locked
cargo fmt --all --check
cargo clippy --workspace --all-targets --locked -- -D warningsContributing covers platform checks, visual changes, and bug reports. See the development changelog for implemented changes and remaining limits. Licensed under MIT.