Description
A command-line color library with true color support, universal API methods and Windows support.
CLI Color alternatives and similar packages
Based on the "Command Line" category.
Alternatively, view CLI Color alternatives based on common mentions on social networks and blogs.
-
Rich Interactive Widgets for Terminal UIs
Rich interactive widgets for terminal-based UIs written in Go -
The Platinum Searcher
A code search tool similar to ack and the_silver_searcher(ag). It supports multi platforms and multi encodings. -
tcell
Tcell is an alternate terminal package, similar in some ways to termbox, but better in others. -
readline
A pure golang implementation that provide most of features in GNU-Readline under MIT license. -
asciigraph
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. -
mow.cli
A Go library for building CLI applications with sophisticated flag and argument parsing and validation. -
termtables
A Go port of the Ruby library terminal-tables for simple ASCII table generation as well as providing markdown and HTML output -
tabular
Print ASCII tables from command line utilities without the need to pass large sets of data to the API.
Get performance insights in less than 4 minutes
Do you think we are missing an alternative of CLI Color or a related project?
Popular Comparisons
README
CLI Color
A command-line color library with true color support, universal API methods and Windows support.
[中文说明](README.zh-CN.md)
Basic color preview:
[basic-color](_examples/images/basic-color2.png)
Now, 256 colors and RGB colors have also been supported to work in Windows CMD and PowerShell:
[color-on-cmd-pwsh](_examples/images/color-on-cmd-pwsh.jpg)
Features
- Simple to use, zero dependencies
- Supports rich color output: 16-color, 256-color, 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.4
the 256-color, true color (24-bit) support windows CMD and PowerShell - 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
Install
go get github.com/gookit/color
Quick start
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\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")
// 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
[colored-out](_examples/images/color-demo.jpg)
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
[basic-color](_examples/images/basic-color.png)
Additional styles
Supported on any Windows version.
color.Info
color.Note
color.Warn
color.Light
color.Error
color.Danger
color.Debug
color.Notice
color.Success
color.Comment
color.Primary
color.Question
color.Secondary
Basic Style
print message use defined style:
color.Info.Println("Info message")
color.Note.Println("Note message")
color.Notice.Println("Notice message")
color.Error.Println("Error message")
color.Danger.Println("Danger message")
color.Warn.Println("Warn message")
color.Debug.Println("Debug message")
color.Primary.Println("Primary message")
color.Question.Println("Question message")
color.Secondary.Println("Secondary message")
Run demo: go run ./_examples/theme_basic.go
[theme-basic](_examples/images/theme-basic.png)
Tips Style
color.Info.Tips("Info tips message")
color.Note.Tips("Note tips message")
color.Notice.Tips("Notice tips message")
color.Error.Tips("Error tips message")
color.Danger.Tips("Danger tips message")
color.Warn.Tips("Warn tips message")
color.Debug.Tips("Debug tips message")
color.Primary.Tips("Primary tips message")
color.Question.Tips("Question tips message")
color.Secondary.Tips("Secondary tips message")
Run demo: go run ./_examples/theme_tips.go
[theme-tips](_examples/images/theme-tips.png)
Prompt Style
color.Info.Prompt("Info prompt message")
color.Note.Prompt("Note prompt message")
color.Notice.Prompt("Notice prompt message")
color.Error.Prompt("Error prompt message")
color.Danger.Prompt("Danger prompt message")
color.Warn.Prompt("Warn prompt message")
color.Debug.Prompt("Debug prompt message")
color.Primary.Prompt("Primary prompt message")
color.Question.Prompt("Question prompt message")
color.Secondary.Prompt("Secondary prompt message")
Run demo: go run ./_examples/theme_prompt.go
[theme-prompt](_examples/images/theme-prompt.png)
Block Style
color.Info.Block("Info block message")
color.Note.Block("Note block message")
color.Notice.Block("Notice block message")
color.Error.Block("Error block message")
color.Danger.Block("Danger block message")
color.Warn.Block("Warn block message")
color.Debug.Block("Debug block message")
color.Primary.Block("Primary block message")
color.Question.Block("Question block message")
color.Secondary.Block("Secondary block message")
Run demo: go run ./_examples/theme_block.go
[theme-block](_examples/images/theme-block.png)
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
[color-tags](_examples/images/color-tags.png)
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")
Use a 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/color256.go
[color-tags](_examples/images/color-256.png)
Use RGB color
RGB colors support Windows
CMD
,PowerShell
environment afterv1.2.4
Preview:
Run demo:
Run demo: go run ./_examples/color_rgb.go
[color-rgb](_examples/images/color-rgb.png)
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")
Use an 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")
Func refer
there are some useful functions reference
Disable()
disable color renderSetOutput(io.Writer)
custom set the colored text output writerForceOpenColor()
force open color renderColors2code(colors ...Color) string
Convert colors to code. return like "32;45;3"ClearCode(str string) string
Use for clear color codesClearTag(s string) string
clear all color html-tag for a stringIsConsole(w io.Writer)
Determine whether w is one of stderr, stdout, stdinHexToRgb(hex string) (rgb []int)
Convert hex color string to RGB numbersRgbToHex(rgb []int) string
Convert RGB to hex code
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
See also
License
*Note that all licence references and agreements mentioned in the CLI Color README section above
are relevant to that project's source code only.