

GitHub - muesli/termenv: Advanced ANSI style & color support for your termin...
source link: https://github.com/muesli/termenv
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

termenv
lets you safely use advanced styling options on the terminal. It
gathers information about the terminal environment in terms of its ANSI & color
support and offers you convenient methods to colorize and style your output,
without you having to deal with all kinds of weird ANSI escape sequences and
color conversions.
Installation
go get github.com/muesli/termenv
Query Terminal Status
// returns supported color profile: Ascii, ANSI, ANSI256, or TrueColor termenv.ColorProfile() // returns default foreground color termenv.ForegroundColor() // returns default background color termenv.BackgroundColor() // returns whether terminal uses a dark-ish background termenv.HasDarkBackground()
Colors
termenv
supports multiple color profiles: ANSI (16 colors), ANSI Extended
(256 colors), and TrueColor (24-bit RGB). Colors will automatically be degraded
to the best matching available color in the desired profile:
TrueColor
=> ANSI 256 Colors
=> ANSI 16 Colors
=> Ascii
out := termenv.String("Hello World") // retrieve color profile supported by terminal p := termenv.ColorProfile() // supports hex values // will automatically degrade colors on terminals not supporting RGB out = out.Foreground(p.Color("#abcdef")) // but also supports ANSI colors (0-255) out = out.Background(p.Color("69")) // ...or the color.Color interface out = out.Foreground(p.FromColor(color.RGBA{255, 128, 0, 255})) fmt.Println(out)
Styles
out := termenv.String("foobar") // text styles out.Bold() out.Faint() out.Italic() out.CrossOut() out.Underline() out.Overline() // reverse swaps current fore- & background colors out.Reverse() // blinking text out.Blink() // combine multiple options out.Bold().Underline()
Template Helpers
// load template helpers f := termenv.TemplateFuncs(termenv.ColorProfile()) tpl := template.New("tpl").Funcs(f) // apply bold style in a template bold := `{{ Bold "Hello World" }}` // examples for colorized templates col := `{{ Color "#ff0000" "#0000ff" "Red on Blue" }}` fg := `{{ Foreground "#ff0000" "Red Foreground" }}` bg := `{{ Background "#0000ff" "Blue Background" }}` // wrap styles wrap := `{{ Bold (Underline "Hello World") }}` // parse and render tpl, err = tpl.Parse(bold) var buf bytes.Buffer tpl.Execute(&buf, nil) fmt.Println(&buf)
Other available helper functions are: Faint
, Italic
, CrossOut
,
Underline
, Overline
, Reverse
, and Blink
.
Screen
// Reset the terminal to its default style, removing any active styles termenv.Reset() // Switch to the altscreen. The former view can be restored with ExitAltScreen() termenv.AltScreen() // Exit the altscreen and return to the former terminal view termenv.ExitAltScreen() // Clear the visible portion of the terminal termenv.ClearScreen() // Move the cursor to a given position termenv.MoveCursor(row, column) // Hide the cursor termenv.HideCursor() // Show the cursor termenv.ShowCursor() // Move the cursor up a given number of lines termenv.CursorUp(n) // Move the cursor down a given number of lines termenv.CursorDown(n) // Move the cursor down a given number of lines and place it at the beginning // of the line termenv.CursorNextLine(n) // Move the cursor up a given number of lines and place it at the beginning of // the line termenv.CursorPrevLine(n) // Clear the current line termenv.ClearLine() // Clear a given number of lines termenv.ClearLines(n)
Color Chart
You can find the source code used to create this chart in termenv
's examples.
Related Projects
Check out Glow, a markdown renderer for
the command-line, which uses termenv
.
License
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK