Terminal cell graphics library
MIT License
Go Graphics library for use in a text terminal. Only 1bit graphics can be used with two colors. Used unicode block symbols for drawing. 2x3 mode is supported by the Iosevka font or some terminals (like default on Ubuntu).
go get github.com/msoap/tcg
package main
import (
"log"
"time"
"github.com/gdamore/tcell/v2"
"github.com/msoap/tcg"
)
func main() {
tg, err := tcg.New(tcg.Mode2x3) // each terminal symbol contains a 2x3 pixels grid, also you can use 1x1, 1x2, and 2x2 modes
if err != nil {
log.Fatalf("create tcg: %s", err)
}
i := 0
for {
pixColor := tg.Buf.At(10, 10) // get color of pixel
tg.Buf.Set(11, 11, pixColor) // draw one pixel with color from 10,10
tg.Buf.Line(0, 0, i, i, tcg.Black) // draw a diagonal line
tg.Show() // synchronize buffer with screen
if tg.TCellScreen.HasPendingEvent() {
if ev, ok := tg.TCellScreen.PollEvent().(*tcell.EventKey); ok && ev.Rune() == 'q' {
break // exit by 'q' key
}
}
i++
time.Sleep(time.Second)
}
tg.Finish() // finish application and restore screen
}
See more examples in examples folder.
Game of Life example in iTerm2 terminal:
See more screenshots.
Unicode symbols:
Supported fonts (for "2x3" mode):