Home

Awesome

enterthematrix

controllable matrix rain animation and benchmarking tool

<img src="https://enterthematrix.space/img/demo-1.gif" alt="demo gif">

Documentation

Dependencies

Installation

sudo curl https://raw.githubusercontent.com/stefrush/enterthematrix/master/enterthematrix -o /usr/local/bin/enterthematrix
sudo chmod a+rx /usr/local/bin/enterthematrix
enterthematrix --version

Running Animation

enterthematrix

Running Benchmark

enterthematrix -B

The standard benchmark as requested by Neo is 4096 rendered frames with the following config:

This means a standard benchmark requires a terminal display with 80x40 text cells in view to achieve maximum stress.

The amount of time elapsed during the benchmark will print once every frame has been rendered.

Key Commands

d => toggle_debug

p => toggle_paused

s => trigger_step

c => clear_screen

b => increase_bandwidth

B => decrease_bandwidth

t => increase_throughput

T => decrease_throughput

n => increase_neos_influence

N => decrease_neos_influence

a => increase_animation_interval

A => decrease_animation_interval

l => increase_limiter

L => decrease_limiter

m => increase_stream_size_mult

M => decrease_stream_size_mult

Commands are disabled during benchmarks.

Usage

enterthematrix [-h] [-v] [-c] [-B] [-d] [-b INT] [-t INT] [-n FLOAT] [-a FLOAT] [-l FLOAT] [-m FLOAT] [-C INT] [-R INT] [-F INT] [-e KEY [KEY ...]] [--use-async] [--no-use-async]

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -c, --commands        show the list of key commands and exit
  -B, --benchmark       run the standard enterthematrix benchmark
  -d, --debug           show program runtime information during the animation
  -b INT, --bandwidth INT
                        set the maximum number of character animation streams per text column; default: 2; range: (0, inf)
  -t INT, --throughput INT
                        set the number of character animation streams to create per animation frame; default: 4; range: (0, inf)
  -n FLOAT, --neos-influence FLOAT
                        follow the white rabbit; default: 0.004; range: (0, 1)
  -a FLOAT, --animation-interval FLOAT
                        set the amount of time in seconds between animation frames; default: 0.042; range: (0, inf)
  -l FLOAT, --limiter FLOAT
                        limit the maximum number of streams by a factor of the limiter value; default: 0; range: (0, 1)
  -m FLOAT, --stream-size-mult FLOAT
                        set the average stream size to the number of rows times the multiplier value; default: 0.8; range: (0, inf)
  -C INT, --max-cols INT
                        set the maximum number of text columns to animate; default: 1280; range: (1, inf)
  -R INT, --max-rows INT
                        set the maximum number of text rows to animate; default: inf; range: (1, inf)
  -F INT, --max-frames INT
                        set the maximum number of frames to animate; default: inf; range: (1, inf)
  -e KEY [KEY ...], --exit-keys KEY [KEY ...]
                        set the list of keys to initiate exit; default: ('q', 'Q', '\x1b')
  --use-async           turn on async frame rendering in supported environments; default: True
  --no-use-async        turn off async frame rendering in supported environments; default: False

License

MIT