diff options
Diffstat (limited to 'functions.sh')
-rw-r--r-- | functions.sh | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/functions.sh b/functions.sh index 8c5bd93..9a2e685 100644 --- a/functions.sh +++ b/functions.sh @@ -33,56 +33,68 @@ function cursorBack() { function spinner() { # make sure we use non-unicode character type locale # (that way it works for any locale as long as the font supports the characters) + local numspinners=12 + local LC_CTYPE=C local pid=$1 # Process Id of the previous running command - case $(($RANDOM % 12)) in + local spintype=$2 + + if [ -z "${spintype}" ] || [ "${spintype}" -ge "${numspinners}" ]; then + spintype=$((RANDOM % numspinners)) + fi + + case "${spintype}" in 0) - local spin='⠁⠂⠄⡀⢀⠠⠐⠈' - local charwidth=3 + local spin='.oO0Oo' + local charwidth=1 ;; 1) local spin='-\|/' local charwidth=1 ;; 2) - local spin="▁▂▃▄▅▆▇█▇▆▅▄▃▂▁" + local spin='⠁⠂⠄⡀⢀⠠⠐⠈' local charwidth=3 ;; 3) - local spin="▉▊▋▌▍▎▏▎▍▌▋▊▉" + local spin="▁▂▃▄▅▆▇█▇▆▅▄▃▂▁" local charwidth=3 ;; 4) - local spin='←↖↑↗→↘↓↙' + local spin="▉▊▋▌▍▎▏▎▍▌▋▊▉" local charwidth=3 ;; 5) - local spin='▖▘▝▗' + local spin='←↖↑↗→↘↓↙' local charwidth=3 ;; 6) - local spin='┤┘┴└├┌┬┐' + local spin='▖▘▝▗' local charwidth=3 ;; 7) - local spin='◢◣◤◥' + local spin='┤┘┴└├┌┬┐' local charwidth=3 ;; 8) - local spin='◰◳◲◱' + local spin='◢◣◤◥' local charwidth=3 ;; 9) - local spin='◴◷◶◵' + local spin='◰◳◲◱' local charwidth=3 ;; 10) - local spin='◐◓◑◒' + local spin='◴◷◶◵' local charwidth=3 ;; 11) + local spin='◐◓◑◒' + local charwidth=3 + ;; + 12) local spin='⣾⣽⣻⢿⡿⣟⣯⣷' local charwidth=3 ;; @@ -91,14 +103,14 @@ function spinner() { local i=0 tput civis # cursor invisible tput bold setaf 7 - while kill -0 $pid 2>/dev/null; do - local i=$(((i + $charwidth) % ${#spin})) + while kill -0 "$pid" 2>/dev/null; do + local i=$(((i + charwidth) % ${#spin})) printf "%b" "${spin:$i:$charwidth}" cursorBack 1 - sleep .1 + sleep .2 done tput cnorm - wait $pid # capture exit code + wait "$pid" # capture exit code return $? } |