From c6fe7bc89752c7fb302450d1bc4e7b8c1b2461a1 Mon Sep 17 00:00:00 2001 From: Aaron Martell Date: Sat, 27 Dec 2025 09:53:44 -0600 Subject: [PATCH 1/2] Added OptionSetSpinnerColorCode to support color codes for spinners. --- progressbar.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/progressbar.go b/progressbar.go index 99222a3..4831274 100644 --- a/progressbar.go +++ b/progressbar.go @@ -81,6 +81,8 @@ type config struct { colorCodes bool // custom colors to use for colorCodes customColors map[string]string + // color to apply to spinner + spinnerColorCode string // show rate of change in kB/sec or MB/sec showBytes bool @@ -290,6 +292,13 @@ func OptionSetCustomColorCodes(customColors map[string]string) Option { } } +// OptionSetSpinnerColorCode sets color code for spinner +func OptionSetSpinnerColorCode(colorCode string) Option { + return func(p *ProgressBar) { + p.config.spinnerColorCode = colorCode + } +} + // OptionSetElapsedTime will enable elapsed time. Always enabled if OptionSetPredictTime is true. func OptionSetElapsedTime(elapsedTime bool) Option { return func(p *ProgressBar) { @@ -1294,6 +1303,10 @@ func renderProgressBar(c config, s *state) (int, error) { spinner = selectedSpinner[s.spinnerIdx] s.spinnerIdx = (s.spinnerIdx + 1) % len(selectedSpinner) } + // if set add spinner color code + if c.spinnerColorCode != "" { + spinner = "[" + c.spinnerColorCode + "]" + spinner + "[reset]" + } if c.elapsedTime { if c.showDescriptionAtLineEnd { str = fmt.Sprintf("\r%s %s [%s] %s ", From bbedc958763619423504222c0df1a0612f4282a7 Mon Sep 17 00:00:00 2001 From: Aaron Martell Date: Sat, 27 Dec 2025 10:47:33 -0600 Subject: [PATCH 2/2] Don't add colorstring if EnableColorCodes is not enabled. --- progressbar.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progressbar.go b/progressbar.go index 4831274..f6c95ad 100644 --- a/progressbar.go +++ b/progressbar.go @@ -1304,7 +1304,7 @@ func renderProgressBar(c config, s *state) (int, error) { s.spinnerIdx = (s.spinnerIdx + 1) % len(selectedSpinner) } // if set add spinner color code - if c.spinnerColorCode != "" { + if c.spinnerColorCode != "" && c.colorCodes { spinner = "[" + c.spinnerColorCode + "]" + spinner + "[reset]" } if c.elapsedTime {