Skip to content

Instantly share code, notes, and snippets.

@dhaiducek dhaiducek/gomatrix Secret
Created Apr 20, 2018

Embed
What would you like to do?
Modified Matrix Effect (original from @khakimov)
#!/bin/bash
lines=$(tput lines)
cols=$(tput cols)
awkscript='
{
lines=$1
random_col=$3
letter=$4
cols[random_col]=0;
for (col in cols) {
rnum = int(20*rand());
if (cols[col] < 0) {
line=-cols[col];
cols[col]=cols[col]-1;
subline = -cols[col] + 1
printf "\033[%s;%sH%s", line, col, " ";
printf "\033[%s;%sH%s\033[0;0H", newline, col, " ";
if (actcol >= lines) {
cols[col]=0;
} else if (rnum < 1) {
cols[col]=0
}
} else {
line=cols[col];
cols[col]=cols[col]+1;
if (rnum < 3) {
printf "\033[%s;%sH\033[1;32m%s\033[0m", line, col, letter;
} else {
printf "\033[%s;%sH\033[2;32m%s\033[0m", line, col, letter;
}
printf "\033[%s;%sH\033[37m%s\033[0;0H\033[0m", cols[col], col, letter;
if (cols[col] >= lines) {
if (rnum < 2) {
cols[col]=0
} else {
cols[col]=-1;
}
}
}
}
}
'
echo -e "\e[1;40m"
clear
if [[ -t 0 ]]; then
stty -echo -icanon -icrnl time 0 min 0;
fi
keypress=''
while [ "x$keypress" = "x" ]; do
echo $lines $cols $(( $RANDOM % $cols)) $(( $RANDOM % 2 ))
sleep 0.04
keypress="`cat -v`"
done | awk "$awkscript"
if [[ -t 0 ]]; then
stty sane;
fi
clear
exit 0
@dhaiducek

This comment has been minimized.

Copy link
Owner Author

commented Apr 20, 2018

Changes:

  • Runs as a bash command from the command line on my system (by removing extension, placing it in $HOME/bin folder and adding that folder to the .bash_profile)
  • Changed it to display only zeros and ones
  • Exits and clears the screen when any key is pressed
  • Clears out lines from above so that empty spots are always visible
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.