From 0652d1682e7a67f221d93ac168a8fedfaa2eb530 Mon Sep 17 00:00:00 2001 From: Ian Foster Date: Sun, 22 Dec 2013 02:14:18 -0800 Subject: [PATCH] matrix script --- scripts/matrixish.sh | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 scripts/matrixish.sh diff --git a/scripts/matrixish.sh b/scripts/matrixish.sh new file mode 100755 index 0000000..30a618c --- /dev/null +++ b/scripts/matrixish.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# +# matrix: matrix-ish display for Bash terminal +# Author: Brett Terpstra 2012 +# Contributors: Lauri Ranta and Carl +# +# A morning project. Could have been better, but I'm learning when to stop. + +### Customization: +blue="\033[0;34m" +brightblue="\033[1;34m" +cyan="\033[0;36m" +brightcyan="\033[1;36m" +green="\033[0;32m" +brightgreen="\033[1;32m" +red="\033[0;31m" +brightred="\033[1;31m" +white="\033[1;37m" +black="\033[0;30m" +grey="\033[0;37m" +darkgrey="\033[1;30m" +# Choose the colors that will be used from the above list +# space-separated list +# e.g. `colors=($green $brightgreen $darkgrey $white)` +colors=($green $brightgreen) +### End customization + +### Do not edit below this line +spacing=${1:-100} # the likelihood of a character being left in place +scroll=${2:-0} # 0 for static, positive integer determines scroll speed +screenlines=$(expr `tput lines` - 1 + $scroll) +screencols=$(expr `tput cols` / 2 - 1) + +# chars=(a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ^) +# charset via Carl: +chars=(ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン) + +count=${#chars[@]} +colorcount=${#colors[@]} + +trap "tput sgr0; clear; exit" SIGTERM SIGINT + +if [[ $1 =~ '-h' ]]; then + echo "Display a Matrix(ish) screen in the terminal" + echo "Usage: matrix [SPACING [SCROLL]]" + echo "Example: matrix 100 0" + exit 0 +fi + + +clear +tput cup 0 0 +while : + do for i in $(eval echo {1..$screenlines}) + do for i in $(eval echo {1..$screencols}) + do rand=$(($RANDOM%$spacing)) + case $rand in + 0) + printf "${colors[$RANDOM%$colorcount]}${chars[$RANDOM%$count]} " + ;; + 1) + printf " " + ;; + *) + printf "\033[2C" + ;; + esac + done + printf "\n" + + # sleep .005 + done + tput cup 0 0 + done -- 1.9.1