Dotfiles, utilities, and other apparatus.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

33 lines
903 B

#!/usr/bin/env bash
if ! command -v bc > /dev/null 2>&1; then
printf "%s\n" "You must have the 'bc' package installed to run this program"
fi
snowflakes=(❄ ❅ ❆)
width=$(tput cols)
platform=$(uname -s)
if [ $platform = 'Linux' ]; then
cpu_count=$(grep -ic ^processor /proc/cpuinfo);
elif [ $platform = 'Darwin' ]; then
cpu_count=$(sysctl -n hw.ncpu)
fi
while true; do
if [ $platform = 'Linux' ]; then
load=$(cut -d ' ' -f 1 /proc/loadavg)
elif [ $platform = 'Darwin' ]; then
load=$(sysctl -n vm.loadavg | cut -d ' ' -f 2)
fi
heaviness=$(echo "scale=10;$load/$cpu_count" | bc)
rand_col=$(( (RANDOM % width) + 1 ))
printf "%${rand_col}s\n" "${snowflakes[$(( (RANDOM % ${#snowflakes[*]}) ))]}"
if [ "$(echo "$heaviness > 1" | bc -l)" -eq 1 ]; then
sleep "$(echo "scale=10;1/$heaviness" | bc)"
else
sleep .75
fi
done