You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clean output - Proper cursor management and cleanup
Web gallery - Interactive browser interface to preview all spinners
Requirements
bash 4.0+
jq for JSON parsing
bc for precise timing calculations
Install requirements:
# macOS
brew install jq bc
# Ubuntu/Debian
sudo apt install jq bc
Quick Start
# List all available spinners
./spinner.sh list
# Show a spinner for 5 seconds
./spinner.sh show dots 5 "Loading data" blue
# Run a command with a spinner
./spinner.sh run pong "Installing packages" bright_green sleep 10
Usage
Basic Usage
./spinner.sh show <spinner_name><duration> [message] [color]
./spinner.sh run <spinner_name> [message] [color] <command>
Examples
# Simple 3-second dots spinner
./spinner.sh show dots 3
# Pong game with custom message and color
./spinner.sh show pong 5 "Playing pong!" bright_green
# Weather spinner while downloading
./spinner.sh run weather "Downloading files" cyan curl -O https://example.com/file.zip
# Material design spinner while compiling
./spinner.sh run material "Compiling project" bright_blue make build
Available Colors
Basic Colors
Bright Colors
Installation
For Use in Your Own Scripts
To integrate this spinner library into your own bash/zsh scripts, you need both
core files:
#!/usr/bin/env bashset -euo pipefail
# Bring spinner functions into *this* shellsource ./spinner.sh
my_function() {
# your real logic here
sleep 10
}
# Run a finite task with a spinner
run_with_spinner "pong""Installing""cyan" my_function
# Or pass a normal command directly (no function needed)
run_with_spinner "dots""Building assets""blue" npm run build
Architecture
JSON Structure
Each spinner in spinners.json follows this format: