function shutdown() {
tput cnorm
}
trap shutdown EXIT
function cursorBack() {
echo -en "\033[$1D"
}
function spinner() {
local LC_CTYPE=C
local pid=$1
case $(($RANDOM % 12)) in
0)
local spin='⠁⠂⠄⡀⢀⠠⠐⠈'
local charwidth=1
;;
1)
local spin='-\|/'
local charwidth=1
;;
2)
local spin="▁▂▃▄▅▆▇█▇▆▅▄▃▂▁"
local charwidth=1
;;
3)
local spin="▉▊▋▌▍▎▏▎▍▌▋▊▉"
local charwidth=1
;;
4)
local spin='←↖↑↗→↘↓↙'
local charwidth=1
;;
5)
local spin='▖▘▝▗'
local charwidth=1
;;
6)
local spin='┤┘┴└├┌┬┐'
local charwidth=1
;;
7)
local spin='◢◣◤◥'
local charwidth=1
;;
8)
local spin='◰◳◲◱'
local charwidth=1
;;
9)
local spin='◴◷◶◵'
local charwidth=1
;;
10)
local spin='◐◓◑◒'
local charwidth=1
;;
11)
local spin='⣾⣽⣻⢿⡿⣟⣯⣷'
local charwidth=1
;;
esac
local i=0
tput civis
while kill -0 $pid 2>/dev/null; do
local i=$(((i + $charwidth) % ${#spin}))
printf "%s" "${spin:$i:$charwidth}"
cursorBack 1
sleep .1
done
tput cnorm
wait $pid
return $?
}
("$@") &
tput setaf $((RANDOM % 256))
spinner $!