mirror of
https://github.com/Lissy93/dotfiles.git
synced 2024-11-22 07:23:10 +01:00
48 lines
1.2 KiB
Bash
48 lines
1.2 KiB
Bash
|
# Matrix-style screensaver for your terminal
|
||
|
# Either run execute the script directly,
|
||
|
# Or source it in .zshrc, and start with $ matrix
|
||
|
|
||
|
matrix () {
|
||
|
local lines=$(tput lines)
|
||
|
cols=$(tput cols)
|
||
|
|
||
|
awkscript='
|
||
|
{
|
||
|
letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"
|
||
|
lines=$1
|
||
|
random_col=$3
|
||
|
c=$4
|
||
|
letter=substr(letters,c,1)
|
||
|
cols[random_col]=0;
|
||
|
for (col in cols) {
|
||
|
line=cols[col];
|
||
|
cols[col]=cols[col]+1;
|
||
|
printf "\033[%s;%sH\033[2;32m%s", line, col, letter;
|
||
|
printf "\033[%s;%sH\033[1;37m%s\033[0;0H", cols[col], col, letter;
|
||
|
if (cols[col] >= lines) {
|
||
|
cols[col]=0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
'
|
||
|
|
||
|
echo -e "\e[1;40m"
|
||
|
clear
|
||
|
|
||
|
while :; do
|
||
|
echo $lines $cols $(( $RANDOM % $cols)) $(( $RANDOM % 72 ))
|
||
|
sleep 0.05
|
||
|
done | awk "$awkscript"
|
||
|
}
|
||
|
|
||
|
# Determine if file is being run directly or sourced
|
||
|
([[ -n $ZSH_EVAL_CONTEXT && $ZSH_EVAL_CONTEXT =~ :file$ ]] ||
|
||
|
[[ -n $KSH_VERSION && $(cd "$(dirname -- "$0")" &&
|
||
|
printf '%s' "${PWD%/}/")$(basename -- "$0") != "${.sh.file}" ]] ||
|
||
|
[[ -n $BASH_VERSION ]] && (return 0 2>/dev/null)) && sourced=1 || sourced=0
|
||
|
|
||
|
# If script being called directly, start matrix
|
||
|
if [ $sourced -eq 0 ]; then
|
||
|
matrix
|
||
|
fi
|