Commit 0652d1682e7a67f221d93ac168a8fedfaa2eb530
1 parent
83e4d81b44
Exists in
master
matrix script
Showing 1 changed file with 74 additions and 0 deletions Inline Diff
scripts/matrixish.sh
View file @
0652d16
File was created | 1 | #!/bin/bash | ||
2 | # | |||
3 | # matrix: matrix-ish display for Bash terminal | |||
4 | # Author: Brett Terpstra 2012 <http://brettterpstra.com> | |||
5 | # Contributors: Lauri Ranta and Carl <http://blog.carlsensei.com/> | |||
6 | # | |||
7 | # A morning project. Could have been better, but I'm learning when to stop. | |||
8 | ||||
9 | ### Customization: | |||
10 | blue="\033[0;34m" | |||
11 | brightblue="\033[1;34m" | |||
12 | cyan="\033[0;36m" | |||
13 | brightcyan="\033[1;36m" | |||
14 | green="\033[0;32m" | |||
15 | brightgreen="\033[1;32m" | |||
16 | red="\033[0;31m" | |||
17 | brightred="\033[1;31m" | |||
18 | white="\033[1;37m" | |||
19 | black="\033[0;30m" | |||
20 | grey="\033[0;37m" | |||
21 | darkgrey="\033[1;30m" | |||
22 | # Choose the colors that will be used from the above list | |||
23 | # space-separated list | |||
24 | # e.g. `colors=($green $brightgreen $darkgrey $white)` | |||
25 | colors=($green $brightgreen) | |||
26 | ### End customization | |||
27 | ||||
28 | ### Do not edit below this line | |||
29 | spacing=${1:-100} # the likelihood of a character being left in place | |||
30 | scroll=${2:-0} # 0 for static, positive integer determines scroll speed | |||
31 | screenlines=$(expr `tput lines` - 1 + $scroll) | |||
32 | screencols=$(expr `tput cols` / 2 - 1) | |||
33 | ||||
34 | # 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 ^) | |||
35 | # charset via Carl: | |||
36 | chars=(ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン) | |||
37 | ||||
38 | count=${#chars[@]} | |||
39 | colorcount=${#colors[@]} | |||
40 | ||||
41 | trap "tput sgr0; clear; exit" SIGTERM SIGINT | |||
42 | ||||
43 | if [[ $1 =~ '-h' ]]; then | |||
44 | echo "Display a Matrix(ish) screen in the terminal" | |||
45 | echo "Usage: matrix [SPACING [SCROLL]]" | |||
46 | echo "Example: matrix 100 0" | |||
47 | exit 0 | |||
48 | fi | |||
49 | ||||
50 | ||||
51 | clear | |||
52 | tput cup 0 0 | |||
53 | while : | |||
54 | do for i in $(eval echo {1..$screenlines}) | |||
55 | do for i in $(eval echo {1..$screencols}) | |||
56 | do rand=$(($RANDOM%$spacing)) | |||
57 | case $rand in | |||
58 | 0) | |||
59 | printf "${colors[$RANDOM%$colorcount]}${chars[$RANDOM%$count]} " | |||
60 | ;; | |||
61 | 1) | |||
62 | printf " " | |||
63 | ;; | |||
64 | *) | |||
65 | printf "\033[2C" |