forked from wick3dr0se/matrix
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmatrix.sh
68 lines (51 loc) · 2.27 KB
/
matrix.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
@@ -1,46 +1,51 @@
#!/usr/bin/env bash
init_term() {
shopt -s checkwinsize; (:;:)
printf '\e[?1049h\e[2J\e[?25l'
shopt -s checkwinsize|| return 1; (:;:)
}
deinit_term(){ printf '\e[?1049l\e[?25h'; stty echo; }
print_to() {
printf '\e[%d;%dH\e[%d;38;2;%sm%s\e[m' "$2" "$3" "${5:-2}" "$4" "$1"
}
deinit_term(){ printf '\e[?1049l\e[?25h'; }
rain() {
((dropStart=SRANDOM%LINES/9))
((dropCol=SRANDOM%COLUMNS+1))
((dropLen=SRANDOM%(LINES/2)+2))
((dropSpeed=SRANDOM%9+1))
((dropSpeed=SRANDOM%9+100)) #changed 9+1 to 9+100
((dropColDim=SRANDOM%4))
color="${COLORS[SRANDOM%${#COLORS}]}"
color="${COLORS[SRANDOM%3]}"
for ((i = dropStart; i <= LINES+dropLen; i++)); do
symbol="${1:SRANDOM%${#1}:1}"
(( dropColDim ))|| print_to "$symbol" "$i" "$dropCol" "$color" 1
(( i > dropStart ))&& print_to "$symbol" "$((i-1))" "$dropCol" "$color"
(( dropColDim ))|| printf '\e[%d;%dH\e[1;38;2;%sm%s\e[m' \
"$i" "$dropCol" "$color" "$symbol"
(( i > dropStart ))&& printf '\e[%d;%dH\e[2;38;2;%sm%s\e[m' \
"$((i-1))" "$dropCol" "$color" "$symbol"
(( i > dropLen ))&& printf '\e[%d;%dH\e[m ' "$((i-dropLen))" "$dropCol"
sleep "0.$dropSpeed"
done
}
trap deinit_term EXIT
trap 'wait; exit' INT
trap 'wait; stty echo; exit' INT
trap 'init_term' WINCH
SYMBOLS='0123456789!@#$%^&*()-_=+[]{}|;:,.<>?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#SYMBOLS='0123456789!@#$%^&*()-_=+[]{}|;:,.<>?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
SYMBOLS='☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶⌂æÆ╛┐└┴┬├ ┼ ─ ╞ ╚╟╔╩╦╠═╬╧╨╤²■€ƒ…†‡‰ŒŽÅÆÐ☺☻♥♦♣♠§▬↨↑↓→←▲▼^¢£¥₧ª▄▌▐▀αßπΣ󩨦¤™•ØÞçµ*¿º½¼«»░▒▓≈⌡⌠≤≥≡∩εφ∞δΩΘª±²³¶¾øðⁿ√~☺☻♥♦♣♠'
#Originally added "█" to SYMBOLS but it stood out too much from the other charcters I removed it
# ☺☻♥♦♣♠ are purposly duplicated in the SYMBOLS charcter list because I like them ;-)
COLORS=('102;255;102' '255;176;0' '169;169;169')
matrix() {
init_term|| { printf 'Failed initializing terminal\n'; return 1; }
stty -echo
init_term; stty -echo
for((;;)) { rain "$SYMBOLS" & sleep 0.1; }
}
matrix
matrix