cmatrix: One of the command to have fun in a Linux terminal. It will turn your terminal into the Hollywood movie “MATRIX” like a cool desktop.

About cmatrix program:
It’s written by Chris Allegretta. The Cmatrix page can be found here. This program is distributed via the GNU GPL and its Sourceforge page is here. To download the latest release visit Sourceforge page.
Have you seen the Hollywood movie “Matrix”? You must have liked those monitors with falling green code. It looks like a cool hacker/coder desktop! After the movie went to the box office, many matrix screensavers were out for windows. Do you want one for Linux? Like the one below?

Yes, that’s possible. You can have such a matrix-like desktop in Linux terminal too. In very simple two steps.
Step 1
Install cmatrix package using YUM or APT depending on your Linux distro.
If you don’t have a YUM repository configured then you can download a standalone file (check Sourceforge page if this link is broken). Then follow below commands to set it up from source code.
- Install packages:
gcc
,make
,autoconf
,automake
ncurses-devel
- Download above mentioned file, un-zip, un-tar it and goto unpacked directory cmatrix-1.2a
- Within
cmatrix
directory execute below commands.
# aclocal aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in' # autoconf # automake -a automake: warning: autoconf input should be named 'configure.ac', not 'configure.in' configure.in:3: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated. For more info, see: configure.in:3: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation Makefile.am: installing './depcomp' automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
Then configure and make ready to install.
# ./configure checking for a BSD-compatible install... /bin/install -c checking whether build environment is sane... yes /root/cmatrix-1.2a/missing: Unknown `--is-lightweight' option Try `/root/cmatrix-1.2a/missing --help' for more information configure: WARNING: 'missing' script is too old or missing checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking whether make sets $(MAKE)... (cached) yes checking for main in -lncurses... yes checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking termios.h usability... yes checking termios.h presence... yes checking for termios.h... yes checking termio.h usability... yes checking termio.h presence... yes checking for termio.h... yes checking return type of signal handlers... void checking for putenv... yes checking curses.h usability... yes checking curses.h presence... yes checking for curses.h... yes checking ncurses.h usability... yes checking ncurses.h presence... yes checking for ncurses.h... yes checking for tgetent in -lncurses... yes "Using ncurses as the termcap library" checking for use_default_colors in -lncurses... yes checking for resizeterm in -lncurses... yes checking for wresize in -lncurses... yes checking for consolechars... no checking for setfont... /bin/setfont checking for /usr/lib/kbd/consolefonts... yes checking for /usr/share/consolefonts... no checking for mkfontdir... no checking for /usr/lib/X11/fonts/misc... no checking for /usr/X11R6/lib/X11/fonts/misc... no configure: WARNING: *** You do not appear to have an X window fonts directory in the standard *** locations (/usr/lib/X11/fonts/misc or /usr/X11R6/lib/X11/fonts/misc). The *** mtx.pcf font will not be installed. This means you will probably not *** be able to use the mtx fonts in your x terminals, and hence be unable *** to use the -x command line switch. Sorry about that... checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating cmatrix.spec config.status: creating config.h config.status: executing depfiles commands
# make (CDPATH="${ZSH_VERSION+.}:" && cd . && autoheader) autoheader: WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot' autoheader: WARNING: and `config.h.top', to define templates for `config.h.in' autoheader: WARNING: is deprecated and discouraged. autoheader: autoheader: WARNING: Using the third argument of `AC_DEFINE' and autoheader: WARNING: `AC_DEFINE_UNQUOTED' allows one to define a template without autoheader: WARNING: `acconfig.h': autoheader: autoheader: WARNING: AC_DEFINE([NEED_FUNC_MAIN], 1, autoheader: [Define if a function `main' is needed.]) autoheader: autoheader: WARNING: More sophisticated templates can also be produced, see the autoheader: WARNING: documentation. rm -f stamp-h1 touch config.h.in cd . && /bin/sh ./config.status config.h config.status: creating config.h make all-am make[1]: Entering directory `/root/cmatrix-1.2a' gcc -g -O2 -o cmatrix cmatrix.o -lncurses -lncurses make[1]: Leaving directory `/root/cmatrix-1.2a'
Finally install it. and thats it.
# make install make[1]: Entering directory `/root/cmatrix-1.2a' /bin/mkdir -p '/usr/local/bin' /bin/install -c cmatrix '/usr/local/bin' Installing matrix fonts in /usr/lib/kbd/consolefonts... /bin/mkdir -p '/usr/local/share/man/man1' /bin/install -c -m 644 cmatrix.1 '/usr/local/share/man/man1' make[1]: Leaving directory `/root/cmatrix-1.2a'
Step 2
Type cmatrix
command and experience matrix! You can exit out the matrix screen anytime by hitting ctlr+c on the terminal. Check cmatrix command in action in the GIF above!
Reader’s tip :
One of our readers, @Pranit Raje sent us this one-liner which did the trick. Its not as exact matrix code as we saw above but yeah it’s promising. Try and have fun in the terminal.
LC_ALL=C tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"
Share Your Comments & Feedback: