A Rust library providing 60+ elegant terminal spinners for command-line applications.
Spinners is a Rust crate that provides a collection of over 60 visually appealing terminal spinners to indicate ongoing processes in command-line interfaces. It simplifies adding loading indicators to CLI tools, making them more interactive and user-friendly by offering a simple API for integration.
Rust developers building command-line interface (CLI) tools or applications that require visual feedback for long-running operations, such as data processing, network requests, or file operations.
Developers choose Spinners for its extensive selection of over 60 spinner styles, easy integration with a minimal API, and terminal-aware behavior that avoids output in non-interactive environments. It also offers optional native progress bar support via the OSC protocol for compatible terminals, enhancing user experience without complexity.
🛎 60+ Elegant terminal spinners for Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers over 60 spinner styles like Dots9 and Moon, allowing developers to choose visually appealing indicators for diverse CLI aesthetics, as listed in the source code.
Easy to use with Spinner::new() to start and stop spinners with custom messages, making it straightforward to add loading indicators, as shown in the basic usage example.
Automatically detects terminal environments to avoid emitting spinner sequences in piped or non-interactive outputs, preventing clutter without extra configuration.
Optional osc-progress feature enables GUI progress bars in compatible terminals like iTerm2 and Windows Terminal via the OSC protocol, enhancing user experience for supported setups.
The README notes that abrupt process termination (e.g., via SIGINT) may not clear the osc-progress bar, as the Drop implementation might not run, requiring manual signal handlers for immediate cleanup.
The progress bar feature only works with specific terminals like Ghostty or Kitty; unsupported terminals silently ignore it, limiting cross-terminal consistency and requiring fallback plans.
While there are many pre-defined spinners, creating entirely new animations isn't supported out-of-the-box, potentially forcing developers to fork the crate or seek alternatives.