Provided by: neo-cli_0.6.1-1_amd64 bug

NAME

       neo - simulate the digital rain from "The Matrix"

SYNOPSIS

       neo [OPTIONS]...

DESCRIPTION

       neo recreates the digital rain effect from "The Matrix". Streams of random characters will
       endlessly scroll down your terminal screen. There are many differing  depictions  of  this
       effect throughout the Matrix franchise.  neo attempts to closely mimic the scene from "The
       Matrix" where Cypher explains the code to Neo. It imitates some of the finer details  such
       as the characters used (half-width katakana), uneven colors, color palette, glitching, and
       flickering.

       The digital rain is made of many  "droplets".  Each  droplet  scrolls  vertically  down  a
       column.  There  can be multiple droplets in each column. Some characters on the screen are
       "glitched" - their values will change randomly until they are erased. The bottom  of  each
       droplet is a bit brighter than the rest.

       You  can  run  neo  without any arguments, but it has many options to customize it to your
       liking. It can also respond to key presses (try pressing a  number!),  and  it  accepts  a
       color  file (see the "COLOR FILE" section below), which allows neo to display user-defined
       colors. neo will use Unicode characters by default if it detects a  locale  that  supports
       UTF.

OPTIONS

       neo takes options in two forms: short and long. Short options cannot include an equal sign
       but long options can. Example for -S/--speed:

              These will work:

                     -S 16
                     --speed 16
                     --speed=16

              These will not:

                     -S=16
                     --S 16

       -a, --async
              Makes each column of characters scroll at an independent speed. Each column's speed
              is still limited by the -S/--speed arg. All droplets in a column will always scroll
              at the speed.

       -b, --bold=NUM
              Controls if and how neo  displays  bold  characters.   0=off,  1=random  (default),
              2=all.

       -C, --colorfile=FILE
              Read  the colors from a file. This option is mutually exclusive with the -c/--color
              and --colormode=0 options. See the "COLOR FILE" section below for more info.

       -c, --color=COLOR
              Sets the foreground  text  color.  This  option  is  mutually  exclusive  with  the
              -C/--colorfile  and --colormode=0 options. The available colors are: green, green2,
              green3, yellow, orange, red,  blue,  cyan,  gold,  rainbow,  purple,  pink,  pink2,
              vaporwave, and gray.

       -D, --defaultbg
              Use  the  default terminal background color. This option is mutually exclusive with
              the -C/--colorfile and --colormode=0 options.

       -d, --density=NUM
              Controls how many droplets will appear onscreen. NUM  is  a  decimal  number.   Its
              default  value  is  1.0.  Values  greater than 0.0 but less than 100.0 are allowed.
              However, values in the range [0.25, 4.0] will probably look best.

       -F, --fullwidth
              Use two columns per character. This option is  useful  when  displaying  characters
              that take two columns to display such as Greek and full-width katakana.

       -f, --fps=NUM
              Sets a frame rate target. By default, neo will run at 60Hz. neo does not attempt to
              query the OS for any display info. So it can't match your monitor's refresh rate by
              default  unless  it happens to be 60Hz. Lower frame rates will reduce CPU usage and
              improve battery life on portable devices.

       -G, --glitchpct=NUM
              Sets the percentage of characters onscreen that glitch. NUM  is  a  decimal  number
              between 0.0 and 100.0 inclusive. The default value is 10.0 (i.e. 10%).

       -g, --glitchms=NUM1,NUM2
              Controls  how  often  the  characters on screen glitch. A "glitch" refers to when a
              character changes into another. Each glitch is accompanied by a flickering  of  the
              character's  color if colors are enabled. After each glitch, neo will wait for some
              time before doing the next glitch. The time it  waits  is  chosen  randomly  to  be
              between  the  two  values provided (inclusive). NUM1 and NUM2 are positive integers
              that represent milliseconds. Their default values are 300 and 400.

       -h, --help
              Shows the help message.

       -l, --lingerms=NUM1,NUM2
              Controls how long characters stay onscreen after they finish  scrolling.  For  each
              column,  neo  will  pick  a random value between NUM1 and NUM2 inclusive.  NUM1 and
              NUM2 are positive integers that represent milliseconds. The default  values  are  1
              and 3000.

       -M, --shadingmode=NUM
              Controls  how  neo  assigns  color  values  to  characters on the screen.  0=random
              (default), 1=gradient.

       -m, --message=STR
              Displays a message in the center of the screen. The message is gradually  uncovered
              as  characters  stream  past  it. This effect is similar to the title reveal in the
              movies. The message should be surrounded with double quotes.  neo parses  arguments
              using  getopt_long(), which does not have Unicode support.  So, unfortunately, this
              argument only accepts simple ASCII text. The message will not display well  if  you
              also  use  the  -F/--fullwidth option.  To unveil the message faster, the following
              options may help:

                     neo -m "the message" --speed=12 --density=3 --lingerms=1,1 --rippct=0

       -p, --profile
              Turns on the profiling mode. This mode functions as normal except it times how long
              each  frame  takes and writes the values to a file called "time_profile.txt" in the
              current working directory.

       -r, --rippct=NUM
              Sets the percentage of droplets that stop scrolling before reaching the  bottom  of
              the  screen.  NUM  is a decimal number between 0.0 and 100.0 inclusive. The default
              value is 33.0 (i.e. about a third).

       -S, --speed=NUM
              Controls how fast characters scroll down the screen. NUM is a decimal  number  that
              sets  the  number  of  characters  drawn  per second. The default value is 8.0.  If
              -a/--async is used, this option sets an upper bound on the value  chosen  for  each
              droplet's speed.

       -s, --screensaver
              If this option is set, neo will exit on the first key press.

       -V, --version
              Displays the version, build date, copyright, and license.

       --chars=NUM1,NUM2
              Tells  neo to display Unicode characters between NUM1 and NUM2 inclusive.  NUM1 and
              NUM2 are Unicode code points in hexadecimal (e.g. 0x1F030). This  argument  can  be
              used  multiple  times.  If  --charset  is  not  used,  neo will only use the values
              provided by this option. If a charset is also specified,  neo  will  use  both  the
              charset and the characters provided by this option.

       --charset=LANG
              Sets  the  charset  that  is  used  to  draw  characters onto the screen. It can be
              combined with the --chars option. The  supported  charsets  are:  ascii,  extended,
              english,  dec,  decimal,  digits,  punc,  bin,  binary, hex, hexadecimal, katakana,
              greek, cyrillic, arabic, hebrew, devanagari, braille, and runic.

       --colormode=NUM
              Sets the color mode. The accepted values are 0, 16, 32, and 256. 0  disables  color
              (i.e. mono). 16 selects 16 colors. 32 selects 32-bit color. 256 selects 256 colors.

       --maxdpc=NUM
              Sets the maximum number of droplets per column. The default value is 3.

       --noglitch
              Disables character glitching.

       --shortpct=NUM
              Sets  the  percentage of shortened droplets. If a droplet is not shortened, it will
              extend from the top of the screen to final line, which is often the bottom  of  the
              screen but not always (see also: -r/--rippct).  NUM is a decimal number between 0.0
              and 100.0 inclusive. The default value is 50.0 (i.e. 50%).

KEYS

       You can press keys while neo is running to control its behavior. The key  bindings  cannot
       be  changed  without  modifying  the program code. Some keys can be held to increase their
       effect (e.g. holding UP increases speed further).

       Here are the available key controls:

              ´SPACE' - clears the screen
              ´UP' - increases the scrolling speed
              ´DOWN' - decreases the scrolling speed
              ´RIGHT' - increases the number of characters that are glitchy
              ´LEFT' - decreases the number of characters that are glitchy
              ´TAB' - toggles the shading mode between random and gradient
              ´ESC' - exits neo
              ´+' - increases the number of droplets onscreen
              ´-' - decreases the number of droplets onscreen
              ´a' - toggles asynchronous droplet speed
              ´p' - pauses neo
              ´q' - exits neo
              ´1' - sets the color to green
              ´2' - sets the color to green2
              ´3' - sets the color to green3
              ´4' - sets the color to gold
              ´5' - sets the color to pink2
              ´6' - sets the color to red
              ´7' - sets the color to blue
              ´8' - sets the color to cyan
              ´9' - sets the color to purple
              ´0' - sets the color to gray
              ´!' - sets the color to rainbow
              ´@' - sets the color to yellow
              ´#' - sets the color to orange
              ´$' - sets the color to pink
              ´%' - sets the color to vaporwave

COLOR FILE

       neo can read a file that specifies the background color and all the foreground colors. The
       file is given via the -C/--colorfile option.

       You  can  write  comments  using  "//", "#", ";", "*", or "@". Comments can go on separate
       lines or after the data on any line. The first line that is not blank or a comment  should
       be the version string. The version string line should look like:

              neo_color_version N

       where  "N"  is the color file version number, which is currently 1.  The version string is
       optional, and if it is omitted, then neo will assume that the file adheres to  the  latest
       version's  format.  This could potentially break old color files. Ye have been warned! neo
       will try to maintain backwards compatability with older color file  versions  so  long  as
       their version is actually given.

       Each data line in the file describes a color. The first line is the background color. Each
       subsequent line describes a foreground color. Each file must contain at least  two  lines:
       one  for  the  background  and one for the foreground. Typically, you will want to put the
       foreground colors in order of ascending brightness. neo will not sort the colors. The last
       color should usually be very bright (e.g. white).

       Each data line in the file specifies one value or four values. If only one value is given,
       it is treated as a 16 or 256 terminal color code (e.g. 16 is black).  If four  values  are
       given,  the  first  is  treated  as  a  16/256  color code and the other three are the RGB
       components of the 32-bit color. Each component is a value from 0 to  1000,  which  closely
       mimics  how  ncurses  handles color. Each value is separated by a comma, and whitespace is
       allowed.

       If more than one value is given on a line, then all four values must be given.   Lines  do
       not  all  have  to have the same number of components i.e. some lines can just specify the
       16/256 color code while others can specify all four values.

       On most systems, if a value of "-1" is provided for the 16/256 color code, this  will  set
       the  color  to  the  system  default.  This  can be useful if you want to keep the default
       background.

       All ncurses implementations should allow you to override at least the  first  256  colors,
       assuming  your  terminal  supports  it.  Some  will  let you override even more than that.
       ncurses should restore all colors back to their  previous  state  as  long  as  neo  exits
       cleanly.

       If  either  of  the  16 or 256 colormode options is used, all 32-bit RGB components in the
       color file will be parsed if they are given, but they will be unused.

       Example 1: Blue text on a red background using only 256 color codes

              196
              21

       Example 2: Different shades of purple text on a yellow background with some  32-bit  color
       components

              228,917,888,59
              54
              92
              129,750,963,128

       Example 3: Default background and various shades of green using only 256 color codes

              -1
              34
              40
              46
              82
              231

PERFORMANCE

       neo can have two main performance issues: high CPU utilization and stuttering.  A terminal
       emulator with GPU acceleration (e.g. Alacritty) may significantly  improve  these  issues.
       The  CPU  utilization  by  neo  itself  is  fairly  low, even at high frame rates on large
       screens. However, your terminal  emulator  may  use  substantial  CPU  resources  to  draw
       everything.   Without  a  fast  terminal emulator, this application may use up a whole CPU
       core or three.

       Sometimes the text will not scroll smoothly. Again, a fast terminal emulator will probably
       help.  You  will also typically want the frame rate (i.e. --fps) to be evenly divisible by
       the character speed (i.e. -S/--speed).  Sometimes,  the  glitching  effect  will  lead  to
       stuttering  because  a  substantial number of characters onscreen will have to be redrawn.
       Reducing the glitchiness (i.e. --glitchpct) or disabling glitching (i.e.  --noglitch)  may
       help.

       If you experience performance issues, here are some things to try:

              1. Use a GPU-accelerated terminal emulator
              2. Run neo on a smaller screen/window
              3. Reduce the frame rate (e.g. --fps=30)
              4. Reduce the number of droplets onscreen (e.g. -d 0.5)
              5. Reduce the character speed (e.g. --speed=6)
              6. Disabling glitching (i.e. --noglitch)
              7. Disable colors (i.e. --colormode=0)
              8. Disable bold characters (i.e. --bold=0)
              9. Disable Unicode characters (i.e. --charset=ascii)

       Here is a "potato mode" config that should perform well on most systems:

              neo --fps=20 -d 0.5 --speed=5 --noglitch --colormode=0 --bold=0 --charset=ascii

EXAMPLES

       Example 0: Just run it

              neo

       Example 1: Sets a faster, asynchronous scrolling speed with 256 colors

              neo -S 12 -a --color=green3 --colormode=256

       Example 2: Red text with a custom message and Cyrillic characters

              neo --color=red --charset=cyrillic -m "IN SOVIET RUSSIA, COMPUTER PROGRAMS YOU!"

       Example 3: Displays golden Greek characters that are full-width

              neo --color=gold --charset=greek -F

       Example 4: Uses --chars to draw Unicode dominoes

              neo --chars=0x1F030,0x1F093 --fullwidth

AUTHORS

       Written by Stewart Reive

REPORTING BUGS

       Create an issue on GitHub: https://github.com/st3w/neo

COPYRIGHT

       Copyright © 2021 Stewart Reive

       License  GPLv3+:  GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.  This is
       free software: you are free to change and redistribute it.  There is NO WARRANTY,  to  the
       extent permitted by law.

DISCLAIMER

       This program is not affiliated with "The Matrix", Warner Bros. Entertainment Inc., Village
       Roadshow Pictures, Silver Pictures, nor  any  of  their  parent  companies,  subsidiaries,
       partners, or affiliates.

SEE ALSO

       locale(1), localectl(1)

AFTERWORD

       You  get  used  to  it.  I...  I  don't even see the code.  All I see is blonde, brunette,
       redhead.  Hey! You uh... want a drink? :)