Template based terminal coloring made really easy.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Release GoDoc Go Report Card Build Status Coverage Status License

Template based terminal coloring made really easy.



Tempera allows to add coloring to terminal in a really easy way.

Colorize strings

To colorize strings, simply use the Colorize function, passing a list of styles you want to apply. The list of supported color names correspondes to the keys of ANSICodes variable.

import "github.com/ShogunPanda/tempera"

inRed := tempera.Colorize("Colorized", "red")
inRedWithBlueBackground := tempera.Colorize("Colorized", "red bgBlue")

Colorize templates

To colorize a template using a tagged template syntax, simply use the ColorizeTemplate function.

import "github.com/ShogunPanda/tempera"

colored := tempera.ColorizeTemplate("{red}This is in red, {green underline}this in green underlined{-}, this in red again.")

The template recognizes styles between curly braces (use a double opening brace to escape them) and the token {-} as universal closing tag (which also restores the previous style).

The closing tag at the end of the string can be omitted, since tempera will append the global reset style (\x1b[0m) if any style was set.

If you want to discard styles to be restored, use the {reset} token.

Setting custom styles

If you want to define custom styles, use the AddCustomStyle function.

import "github.com/ShogunPanda/tempera"

tempera.AddCustomStyle("important", "red underline")
colored := tempera.ColorizeTemplate("This is in red, underlined.", "important")

256 and 16 millions colors support

tempera supports 256 ANSI codes and 16m RGB colors. Just give it a try:

import "github.com/ShogunPanda/tempera"

fgAnsi256 := tempera.Colorize("color me", "ansi:100")
bgAnsi256 := tempera.Colorize("color me", "bgANSI:3,4,5")

fgRgb := tempera.Colorize("color me", "rgb:255,0,0")
bgRgb := tempera.Colorize("color me", "bgRGB:0,255,0")

fgHex := tempera.Colorize("color me", "hex:#FF0000")
bgHex := tempera.Colorize("color me", "bgHEX:00FF00")

ANSI, RGB, and HEX can be used in style definitions and templates as well.

API Documentation

The API documentation can be found here.

Contributing to tempera

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
  • Fork the project.
  • Start a feature/bugfix branch.
  • Commit and push until you are happy with your contribution.
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.


Copyright (C) 2018 and above Shogun (shogun@cowtech.it).

Licensed under the MIT license, which can be found at https://choosealicense.com/licenses/mit.