Color
🎨 Terminal color rendering library, support 8/16 colors, 256 colors, RGB color rendering output, support Print/Sprintf methods, compatible with Windows. GO CLI 控制台颜色渲染工具库,支持16色,256色,RGB色彩渲染输出,使用类似于 Print/Sprintf,兼容并支持 Windows 环境的色彩渲染
Install / Use
/learn @gookit/ColorREADME
CLI Color
A command-line color library with 16/256/True color support, universal API methods and Windows support.
Basic color preview:

Now, 256 colors and RGB colors have also been supported to work in Windows CMD and PowerShell:

Features
- Simple to use, zero dependencies
- Supports rich color output: 16-color (4-bit), 256-color (8-bit), true color (24-bit, RGB)
- 16-color output is the most commonly used and most widely supported, working on any Windows version
- Since
v1.2.4the 256-color (8-bit), true color (24-bit) support windows CMD and PowerShell - See this gist for information on true color support
- Support converts
HEXHSLvalue to RGB color - Generic API methods:
Print,Printf,Println,Sprint,Sprintf - Supports HTML tag-style color rendering, such as
<green>message</> <fg=red;bg=blue>text</>.- In addition to using built-in tags, it also supports custom color attributes
- Custom color attributes support the use of 16 color names, 256 color values, rgb color values and hex color values
- Support working on Windows
cmdandpowerShellterminal
- Basic colors:
Bold,Black,White,Gray,Red,Green,Yellow,Blue,Magenta,Cyan - Additional styles:
Info,Note,Light,Error,Danger,Notice,Success,Comment,Primary,Warning,Question,Secondary - Support by set
NO_COLORfor disable color or useFORCE_COLORfor force open color render. - Support Rgb, 256, 16 color conversion
GoDoc
See godoc for github
Install
go get github.com/gookit/color
Quick start
package main
import (
"fmt"
"github.com/gookit/color"
)
func main() {
// quick use package func
color.Redp("Simple to use color")
color.Redln("Simple to use color")
color.Greenp("Simple to use color\n")
color.Cyanln("Simple to use color")
color.Yellowln("Simple to use color")
// quick use like fmt.Print*
color.Red.Println("Simple to use color")
color.Green.Print("Simple to use color\n")
color.Cyan.Printf("Simple to use %s\n", "color")
color.Yellow.Printf("Simple to use %s\n", "color")
// use like func
red := color.FgRed.Render
green := color.FgGreen.Render
fmt.Printf("%s line %s library\n", red("Command"), green("color"))
// custom color
color.New(color.FgWhite, color.BgBlack).Println("custom color style")
// can also:
color.Style{color.FgCyan, color.OpBold}.Println("custom color style")
// internal theme/style:
color.Info.Tips("message")
color.Info.Prompt("message")
color.Info.Println("message")
color.Warn.Println("message")
color.Error.Println("message")
// use style tag
color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n")
// Custom label attr: Supports the use of 16 color names, 256 color values, rgb color values and hex color values
color.Println("<fg=11aa23>he</><bg=120,35,156>llo</>, <fg=167;bg=232>wel</><fg=red>come</>")
// apply a style tag
color.Tag("info").Println("info style text")
// prompt message
color.Info.Prompt("prompt style message")
color.Warn.Prompt("prompt style message")
// tips message
color.Info.Tips("tips style message")
color.Warn.Tips("tips style message")
}
Run demo: go run ./_examples/demo.go

Basic/16 color
Supported on any Windows version. Provide generic API methods: Print, Printf, Println, Sprint, Sprintf
color.Bold.Println("bold message")
color.Cyan.Println("yellow message")
color.Yellow.Println("yellow message")
color.Magenta.Println("yellow message")
// Only use foreground color
color.FgCyan.Printf("Simple to use %s\n", "color")
// Only use background color
color.BgRed.Printf("Simple to use %s\n", "color")
Run demo: go run ./_examples/color_16.go

Custom build color
// Full custom: foreground, background, option
myStyle := color.New(color.FgWhite, color.BgBlack, color.OpBold)
myStyle.Println("custom color style")
// can also:
color.Style{color.FgCyan, color.OpBold}.Println("custom color style")
custom set console settings:
// set console color
color.Set(color.FgCyan)
// print message
fmt.Print("message")
// reset console settings
color.Reset()
Additional styles
provide generic API methods: Print, Printf, Println, Sprint, Sprintf
print message use defined style:
color.Info.Println("Info message")
color.Notice.Println("Notice message")
color.Error.Println("Error message")
// ...
Run demo: go run ./_examples/theme_basic.go

Tips style
color.Info.Tips("Info tips message")
color.Notice.Tips("Notice tips message")
color.Error.Tips("Error tips message")
color.Secondary.Tips("Secondary tips message")
Run demo: go run ./_examples/theme_tips.go

Prompt Style
color.Info.Prompt("Info prompt message")
color.Notice.Prompt("Notice prompt message")
color.Error.Prompt("Error prompt message")
// ...
Run demo: go run ./_examples/theme_prompt.go

Block Style
color.Danger.Block("Danger block message")
color.Warn.Block("Warn block message")
// ...
Run demo: go run ./_examples/theme_block.go

256-color usage
256 colors support Windows CMD, PowerShell environment after
v1.2.4
Set the foreground or background color
color.C256(val uint8, isBg ...bool) Color256
c := color.C256(132) // fg color
c.Println("message")
c.Printf("format %s", "message")
c := color.C256(132, true) // bg color
c.Println("message")
c.Printf("format %s", "message")
256-color style
Can be used to set foreground and background colors at the same time.
S256(fgAndBg ...uint8) *Style256
s := color.S256(32, 203)
s.Println("message")
s.Printf("format %s", "message")
with options:
s := color.S256(32, 203)
s.SetOpts(color.Opts{color.OpBold})
s.Println("style with options")
s.Printf("style with %s\n", "options")
Run demo: go run ./_examples/color_256.go

RGB/True color
RGB colors support Windows
CMD,PowerShellenvironment afterv1.2.4
Preview:
Run demo:
Run demo: go run ./_examples/color_rgb.go

example:
color.RGB(30, 144, 255).Println("message. use RGB number")
color.HEX("#1976D2").Println("blue-darken")
color.HEX("#D50000", true).Println("red-accent. use HEX style")
color.RGBStyleFromString("213,0,0").Println("red-accent. use RGB number")
color.HEXStyle("eee", "D50000").Println("deep-purple color")
Set the foreground or background color
color.RGB(r, g, b uint8, isBg ...bool) RGBColor
c := color.RGB(30,144,255) // fg color
c.Println("message")
c.Printf("format %s", "message")
c := color.RGB(30,144,255, true) // bg color
c.Println("message")
c.Printf("format %s", "message")
Create a style from an hexadecimal color string:
color.HEX(hex string, isBg ...bool) RGBColor
c := color.HEX("ccc") // can also: "cccccc" "#cccccc"
c.Println("message")
c.Printf("format %s", "message")
c = color.HEX("aabbcc", true) // as bg color
c.Println("message")
c.Printf("format %s", "message")
RGB color style
Can be used to set the foreground and background colors at the same time.
color.NewRGBStyle(fg RGBColor, bg ...RGBColor) *RGBStyle
s := color.NewRGBStyle(RGB(20, 144, 234), RGB(234, 78, 23))
s.Println("message")
s.Printf("format %s", "message")
Create a style from an hexadecimal color string:
color.HEXStyle(fg string, bg ...string) *RGBStyle
s := color.HEXStyle("11aa23", "eee")
s.Println("message")
s.Printf("format %s", "message")
with options:
s := color.HEXStyle("11aa23", "eee")
s.SetOpts(color.Opts{color.OpBold})
s.Println("style with options")
s.Printf("style with %s\n", "options")
HTML-like tag usage
Print,Printf,Println functions support auto parse and render color tags.
text := `
<mga1>gookit/color:</>
A <green>command-line</>
<cyan>color library</> with <fg=167;bg=232>256-color</>
and <fg=11aa23;op=bold>True-color</> support,
<fg=mga;op=i>universal API</> methods
and <cyan>Windows</> support.
`
color.Print(text)
Preview, code please see _examples/demo_tag.go:

Tag formats:
- Use built in tags:
<TAG_NAME>CONTENT</>e.g:<info>message</> - Custom tag attributes:
<fg=VALUE;bg=VALUE;op=VALUES>CONTENT</>e.g: `<fg=167;
