@@ -38,7 +38,7 @@ NOCOLOR=0
38
38
NOEDGECHANGE=0
39
39
40
40
OPTIND=1
41
- while getopts " p:t:f:s:r:RBCEhv" arg; do
41
+ while getopts " p:t:c: f:s:r:RBCEhv" arg; do
42
42
case $arg in
43
43
p) (( p= (OPTARG> 0 )? OPTARG: p)) ;;
44
44
t)
@@ -49,6 +49,7 @@ case $arg in
49
49
(( OPTARG>= 0 && OPTARG< ${# sets[@]} )) && V+=($OPTARG )
50
50
fi
51
51
;;
52
+ c) (( OPTARG>= 0 && OPTARG< 8 )) && C+=($OPTARG );;
52
53
f) (( f= (OPTARG> 19 && OPTARG< 101 )? OPTARG: f)) ;;
53
54
s) (( s= (OPTARG> 4 && OPTARG< 16 )? OPTARG: s)) ;;
54
55
r) (( r= (OPTARG>= 0 )? OPTARG: r)) ;;
@@ -60,6 +61,7 @@ case $arg in
60
61
echo -e " Animated pipes terminal screensaver.\n"
61
62
echo -e " -p [1-]\tnumber of pipes (D=1)."
62
63
echo -e " -t [0-$(( ${# sets[@]} - 1 )) ]\ttype of pipes, can be used more than once (D=0)."
64
+ echo -e " -c [0-7]\tcolor of pipes, can be used more than once (D=1 2 3 4 5 6 7)."
63
65
echo -e " -t c[16 chars]\tcustom type of pipes."
64
66
echo -e " -f [20-100]\tframerate (D=75)."
65
67
echo -e " -s [5-15]\tprobability of a straight fitting (D=13)."
78
80
79
81
# set default values if not by options
80
82
(( ${# V[@]} )) || V=(0)
83
+ (( ${# C[@]} )) || C=(1 2 3 4 5 6 7)
81
84
82
85
cleanup () {
83
86
# clear up standard input
@@ -99,7 +102,9 @@ trap 'break 2' INT
99
102
resize
100
103
101
104
for (( i= 1 ; i<= p; i++ )) ; do
102
- c[i]=$(( i% 8 )) n[i]=0 l[i]=0
105
+ c[i]=${C[$((i%${#C[@]} ))]}
106
+ n[i]=0
107
+ l[i]=0
103
108
(( x[i]= RNDSTART== 1 ? RANDOM* w/ 32768 : w/ 2 ))
104
109
(( y[i]= RNDSTART== 1 ? RANDOM* h/ 32768 : h/ 2 ))
105
110
v[i]=${V[$((i%${#V[@]} ))]}
@@ -116,7 +121,7 @@ while REPLY=; read -t 0.0$((1000/f)) -n 1 2>/dev/null; [[ -z $REPLY ]] ; do
116
121
(( ${l[i]} % 2 )) && (( x[i]+=- ${l[i]} + 2 , 1 )) || (( y[i]+= ${l[i]} - 1 ))
117
122
118
123
# Loop on edges (change color on loop):
119
- (( ! NOEDGECHANGE&& (${x[i]} >= w|| ${x[i]} < 0 || ${y[i]} >= h|| ${y[i]} < 0 )) ) && (( c[i]= RANDOM% 8 , v[i]= V[${# V[@]} * RANDOM/ M]))
124
+ (( ! NOEDGECHANGE&& (${x[i]} >= w|| ${x[i]} < 0 || ${y[i]} >= h|| ${y[i]} < 0 )) ) && (( c[i]= ${C[$(( RANDOM%${#C[@]} )) ]} , v[i]=V[${# V[@]} * RANDOM/M]))
120
125
(( x[i]= (x[i]+ w)% w))
121
126
(( y[i]= (y[i]+ h)% h))
122
127
0 commit comments