A command-line color library with true color support, universal API methods and Windows support.
Basic color preview:
Features
- Simple to use, zero dependencies
- Supports rich color output: 16-color, 256-color, true color (24-bit)
- 16-color output is the most commonly used and most widely supported, working on any Windows version
- See this gist for information on true color support
- Generic API methods:
Print
,Printf
,Println
,Sprint
,Sprintf
- Supports HTML tag-style color rendering, such as
<green>message</>
. Support working on windowscmd
powerShell
- 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
GoDoc
Quick start
import "gopkg.in/gookit/color.v1" // is recommended // or import "github.com/gookit/color"
package main import ( "fmt" "github.com/gookit/color" ) func main() { // quick use like fmt.Print* color.Red.Println("Simple to use color") color.Green.Print("Simple to use color") 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") // 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
Custom Build Color
// 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") // 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()
Basic Color
Supported on any Windows version.
color.Bold
color.Black
color.White
color.Gray
color.Red
color.Green
color.Yellow
color.Blue
color.Magenta
color.Cyan
color.Bold.Println("bold message") color.Yellow.Println("yellow message")
Run demo: go run ./_examples/basiccolor.go
Additional styles
Supported on any Windows version.
color.Info
color.Note
color.Light
color.Error
color.Danger
color.Debug
color.Notice
color.Success
color.Comment
color.Primary
color.Warning
color.Question
color.Secondary
Basic Style
// print message color.Info.Println("Info message") color.Success.Println("Success message")
Run demo: go run ./_examples/theme_basic.go
Tips Style
color.Info.Tips("tips style message") color.Warn.Tips("tips style message")
Run demo: go run ./_examples/theme_tips.go
Prompt Style
color.Info.Prompt("prompt style message") color.Warn.Prompt("prompt style message")
Run demo: go run ./_examples/theme_prompt.go
Block Style
color.Info.Block("block style message") color.Warn.Block("block style message")
Run demo: go run ./_examples/theme_block.go
HTML-like tag usage
Supported on Windows cmd.exe
PowerShell
.
// use style tag color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>") color.Println("<suc>hello</>") color.Println("<error>hello</>") color.Println("<warning>hello</>") // custom color attributes color.Print("<fg=yellow;bg=black;op=underscore;>hello, welcome</>\n")
color.Tag
// set a style tag color.Tag("info").Print("info style text") color.Tag("info").Printf("%s style text", "info") color.Tag("info").Println("info style text")
Run demo: go run ./_examples/colortag.go
256-color usage
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")
Use a 256-color style
Can be used to set foreground and background colors at the same time.
color.S256(fgAndBg ...uint8) *Style256
s := color.S256(32, 203) s.Println("message") s.Printf("format %s", "message")
Run demo: go run ./_examples/color256.go
Use RGB 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 := HEX("ccc") // can also: "cccccc" "#cccccc" c.Println("message") c.Printf("format %s", "message") c = HEX("aabbcc", true) // as bg color c.Println("message") c.Printf("format %s", "message")
Use a 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 := 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 := HEXStyle("11aa23", "eee") s.Println("message") s.Printf("format %s", "message")
Gookit packages
- gookit/ini Go config management, use INI files
- gookit/rux Simple and fast request router for golang HTTP
- gookit/gcli build CLI application, tool library, running CLI commands
- gookit/event Lightweight event manager and dispatcher implements by Go
- gookit/cache Generic cache use and cache manager for golang. support File, Memory, Redis, Memcached.
- gookit/config Go config management. support JSON, YAML, TOML, INI, HCL, ENV and Flags
- gookit/color A command-line color library with true color support, universal API methods and Windows support
- gookit/filter Provide filtering, sanitizing, and conversion of golang data
- gookit/validate Use for data validation and filtering. support Map, Struct, Form data
- gookit/goutil Some utils for the Go: string, array/slice, map, format, cli, env, filesystem, test and more
- More please see https://github.com/gookit