Skip to content

Yardanico/spinny

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

41 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Spinny

Spinny is a tiny terminal spinner package for Nim Programming Language.

Getting Started

You can use Nimble to install the package by running:

nimble install spinny

This library uses threads for running in the background, so you must compile your application with or add to your nim.cfg or config.nims:

--threads:on

Usage

Spinny is quite easy to use. You can set the color, text or symbol of an already running spinner. Spinny also optinally supports showing passed time (in seconds and hours).

Be aware that you can only have one active spinner at any given moment!

import spinny, os

var spinner1 = newSpinny("Loading file..".fgWhite, skDots)
spinner1.setSymbolColor(fgBlue)
spinner1.start()

# do some work here
for x in countup(5, 10):
  sleep(500)

spinner1.success("File was loaded successfully.")

# Also show time
var spinner2 = newSpinny("Downloading files..".fgBlue, skDots5, time = true)
spinner2.setSymbolColor(fgLightBlue)
spinner2.start()

# do some work here
for x in countup(5, 10):
  sleep(500)

spinner2.error("Sorry, something went wrong during downloading!")

You can even use custom spinners if predefined ones aren't suitable for your needs.

import spinny, os

# makeSpinner accepts two arguments - the interval between different frames,
# and frames themselves as an array or a sequence of strings
var spinner3 = newSpinny("I'm custom.", makeSpinner(100, ["x", "y"]))
spinner3.setSymbolColor(fgGreen)
spinner3.start()

# do some magnificent work here
for x in countup(1, 5):
  sleep(500)

spinner3.success("Looks like it's working!")

Spinny embeds the colorize library for terminal colors. For spinners to use, take a look at the src/spinners.nim file. (Credit goes to sindresorhus)

API Reference

The following procs are available on a Spinny object:

  • setSymbolColor*(spinny: Spinny, color: proc(x: string): string)
  • setSymbol*(spinny: Spinny, symbol: string)
  • setText*(spinny: Spinny, text: string)
  • start*(spinny: Spinny)
  • stop*(spinny: Spinny)
  • success*(spinny: Spinny, msg: string)
  • error*(spinny: Spinny, msg: string)

About

πŸŒ€ Spinny is a tiny terminal spinner package for the Nim Programming Language.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages