Golang terminal dashboard
_assets | ||
_examples | ||
_scripts | ||
_test | ||
widgets | ||
.gitignore | ||
alignment.go | ||
backend.go | ||
block.go | ||
buffer.go | ||
canvas.go | ||
CHANGELOG.md | ||
doc.go | ||
events.go | ||
go.mod | ||
go.sum | ||
grid.go | ||
LICENSE | ||
Makefile | ||
README.md | ||
render.go | ||
style_parser.go | ||
style.go | ||
symbols_other.go | ||
symbols_windows.go | ||
symbols.go | ||
theme.go | ||
utils.go |
termui
termui is a cross-platform and fully-customizable terminal dashboard and widget library built on top of termbox-go. It is inspired by blessed-contrib and tui-rs and written purely in Go.
Features
- Several premade widgets for common use cases
- Easily create custom widgets
- Position widgets either in a relative grid or with absolute coordinates
- Keyboard, mouse, and terminal resizing events
- Colors and styling
Installation
If using Go 1.11 modules, it is not necessary to go get
termui, since Go will automatically download any imported dependencies. However, do note that you have to include /v3
at the end of the URL and before any sub-packages in the termui import statements as shown in the 'Hello World' example below.
Hello World
package main
import (
"log"
ui "github.com/gizak/termui/v3"
"github.com/gizak/termui/v3/widgets"
)
func main() {
if err := ui.Init(); err != nil {
log.Fatalf("failed to initialize termui: %v", err)
}
defer ui.Close()
p := widgets.NewParagraph()
p.Text = "Hello World!"
p.SetRect(0, 0, 25, 5)
ui.Render(p)
for e := range ui.PollEvents() {
if e.Type == ui.KeyboardEvent {
break
}
}
}
Widgets
- BarChart
- Canvas (for drawing braille dots)
- Gauge
- Image
- List
- Paragraph
- PieChart
- Plot (for scatterplots and linecharts)
- Sparkline
- StackedBarChart
- Table
- Tabs
Run an example with go run _examples/{example}.go
or run each example consecutively with make run-examples
.