2018-11-29 11:15:29 +08:00
# termui
2015-03-21 09:11:58 +08:00
2019-01-24 15:09:50 +08:00
[<img src="./_assets/demo.gif" alt="demo cast under osx 10.10; Terminal.app; Menlo Regular 12pt.)" width="100%"> ](./_examples/demo.go )
2015-06-24 03:11:22 +08:00
2019-01-24 15:20:48 +08:00
termui is a cross-platform and fully-customizable terminal dashboard and widget library built on top of [termbox-go ](https://github.com/nsf/termbox-go ). It is inspired by [blessed-contrib ](https://github.com/yaronn/blessed-contrib ) and [tui-rs ](https://github.com/fdehau/tui-rs ) and written purely in Go.
2019-01-28 17:13:33 +08:00
## Features
2019-01-24 15:20:48 +08:00
2019-01-28 17:13:33 +08:00
- Built in widget implementations for common use cases
- Utilities to create custom widgets
- A grid layout for relative widget positioning
- Mouse support
- Event handling for keyboard, mouse and resizing events
- Colors and styling
2019-02-05 12:16:27 +08:00
## Installation
Installing from the master branch is recommended since termui has been completely reworked since the latest release and because the latest release doesn't support Go modules.
Do note that termui is still undergoing breaking changes so make sure to check the changelog when upgrading.
```bash
go get -u github.com/gizak/termui@master
```
2019-01-28 17:13:33 +08:00
## Hello World
```go
package main
import (
"log"
ui "github.com/gizak/termui"
"github.com/gizak/termui/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
}
}
}
```
2018-11-29 13:13:29 +08:00
2019-01-24 15:09:50 +08:00
## Widgets
2015-02-09 01:00:00 +08:00
2019-01-24 15:09:50 +08:00
- [BarChart ](./_examples/barchart.go )
2019-01-25 20:14:49 +08:00
- [Canvas ](./_examples/canvas.go ) (for drawing braille dots)
2019-01-24 15:09:50 +08:00
- [Gauge ](./_examples/gauge.go )
2019-01-25 00:42:13 +08:00
- [Image ](./_examples/image.go )
2019-01-24 15:09:50 +08:00
- [List ](./_examples/list.go )
- [Paragraph ](./_examples/paragraph.go )
- [PieChart ](./_examples/piechart.go )
2019-01-25 20:14:49 +08:00
- [Plot ](./_examples/plot.go ) (for scatterplots and linecharts)
2019-01-24 15:09:50 +08:00
- [Sparkline ](./_examples/sparkline.go )
- [StackedBarChart ](./_examples/stacked_barchart.go )
- [Table ](./_examples/table.go )
- [Tabs ](./_examples/tabs.go )
2015-02-09 01:00:00 +08:00
2019-01-24 15:09:50 +08:00
Run an example with `go run _examples/{example}.go` or run all of them consecutively with `make run-examples` .
2018-11-29 12:12:36 +08:00
2019-01-24 15:09:50 +08:00
## Documentation
2018-11-29 11:15:29 +08:00
2019-01-24 12:12:10 +08:00
- [wiki ](https://github.com/gizak/termui/wiki )
2015-02-09 01:00:00 +08:00
2018-11-29 11:15:29 +08:00
## Uses
2015-02-09 01:00:00 +08:00
2019-02-02 13:44:55 +08:00
- [dockdash ](https://github.com/byrnedo/dockdash )
- [expvarmon ](https://github.com/divan/expvarmon )
2019-02-01 14:04:50 +08:00
- [go-ethereum/monitorcmd ](https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/monitorcmd.go )
- [go-jira-ui ](https://github.com/mikepea/go-jira-ui )
- [gotop ](https://github.com/cjbassi/gotop )
- [termeter ](https://github.com/atsaki/termeter )
2015-03-14 01:20:17 +08:00
2018-11-29 11:15:29 +08:00
## Related Works
2015-03-14 01:20:17 +08:00
2018-11-29 11:15:29 +08:00
- [blessed-contrib ](https://github.com/yaronn/blessed-contrib )
- [gocui ](https://github.com/jroimartin/gocui )
2019-02-14 12:50:00 +08:00
- [termdash ](https://github.com/mum4k/termdash )
2019-01-24 15:23:37 +08:00
- [tui-rs ](https://github.com/fdehau/tui-rs )
2019-02-07 19:19:32 +08:00
- [tview ](https://github.com/rivo/tview )
2015-10-28 03:24:29 +08:00
2015-02-09 01:00:00 +08:00
## License
2018-09-07 07:55:27 +08:00
2019-01-24 12:12:10 +08:00
[MIT ](http://opensource.org/licenses/MIT )