2018-05-09 01:58:49 +08:00
|
|
|
[![Doc Status](https://godoc.org/github.com/mum4k/termdash?status.png)](https://godoc.org/github.com/mum4k/termdash)
|
|
|
|
[![Build Status](https://travis-ci.org/mum4k/termdash.svg?branch=master)](https://travis-ci.org/mum4k/termdash)
|
2019-02-18 15:30:41 +08:00
|
|
|
[![Sourcegraph](https://sourcegraph.com/github.com/mum4k/termdash/-/badge.svg)](https://sourcegraph.com/github.com/mum4k/termdash?badge)
|
2018-05-09 01:58:49 +08:00
|
|
|
[![Coverage Status](https://coveralls.io/repos/github/mum4k/termdash/badge.svg?branch=master)](https://coveralls.io/github/mum4k/termdash?branch=master)
|
2018-05-28 02:40:08 +08:00
|
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/mum4k/termdash)](https://goreportcard.com/report/github.com/mum4k/termdash)
|
2018-05-28 02:41:21 +08:00
|
|
|
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/mum4k/termdash/blob/master/LICENSE)
|
2019-01-25 10:04:57 +08:00
|
|
|
[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go)
|
2018-05-09 01:58:49 +08:00
|
|
|
|
2018-03-24 20:01:49 +08:00
|
|
|
# termdash
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2019-02-24 08:38:47 +08:00
|
|
|
[<img src="./images/termdashdemo_0_7_0.gif" alt="termdashdemo" type="image/gif">](termdashdemo/termdashdemo.go)
|
2019-01-16 11:40:44 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
This project implements a cross-platform customizable terminal based dashboard.
|
|
|
|
The feature set is inspired by the
|
|
|
|
[gizak/termui](http://github.com/gizak/termui) project, which in turn was
|
|
|
|
inspired by a javascript based
|
|
|
|
[yaronn/blessed-contrib](http://github.com/yaronn/blessed-contrib).
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
This rewrite focuses on code readability, maintainability and testability, see
|
|
|
|
the [design goals](doc/design_goals.md). It aims to achieve the following
|
|
|
|
[requirements](doc/requirements.md). See the [high-level design](doc/hld.md)
|
|
|
|
for more details.
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
# Current feature set
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2019-01-16 12:17:13 +08:00
|
|
|
- Full support for terminal window resizing throughout the infrastructure.
|
2019-01-16 12:12:08 +08:00
|
|
|
- Customizable layout, widget placement, borders, colors, etc.
|
|
|
|
- Focusable containers and widgets.
|
|
|
|
- Processing of keyboard and mouse events.
|
|
|
|
- Periodic and event driven screen redraw.
|
|
|
|
- A library of widgets, see below.
|
|
|
|
- UTF-8 for all text elements.
|
2019-01-16 12:17:13 +08:00
|
|
|
- Drawing primitives (Go functions) for widget development with character and
|
|
|
|
sub-character resolution.
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2019-01-25 11:02:44 +08:00
|
|
|
See the [changelog](CHANGELOG.md) for more details.
|
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
# Installation
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
To install this library, run the following:
|
2018-03-24 20:31:33 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
```
|
|
|
|
go get -u github.com/mum4k/termdash
|
|
|
|
```
|
2018-03-25 01:09:34 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
# Usage
|
2018-03-25 01:09:34 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
The usage of most of these elements is demonstrated in
|
|
|
|
[termdashdemo.go](termdashdemo/termdashdemo.go). To execute the demo:
|
2018-04-23 07:44:32 +08:00
|
|
|
|
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
```
|
|
|
|
go run github.com/mum4k/termdash/termdashdemo/termdashdemo.go
|
|
|
|
```
|
2018-04-23 07:44:32 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
# Documentation
|
2018-05-07 02:28:52 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
Code documentation can be viewed in
|
|
|
|
[godoc](https://godoc.org/github.com/mum4k/termdash).
|
2018-05-07 02:28:52 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
Project documentation is available in the [doc](doc/) directory.
|
2018-03-27 01:22:07 +08:00
|
|
|
|
2018-05-07 19:39:45 +08:00
|
|
|
## Implemented Widgets
|
|
|
|
|
2019-02-24 08:38:47 +08:00
|
|
|
### The Button
|
|
|
|
|
|
|
|
Allows users to interact with the application, each button press runs a callback function.
|
|
|
|
Run the
|
|
|
|
[buttondemo](widgets/button/buttondemo/buttondemo.go).
|
|
|
|
|
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/button/buttondemo/buttondemo.go
|
|
|
|
```
|
|
|
|
|
|
|
|
[<img src="./images/buttondemo.gif" alt="buttondemo" type="image/gif">](widgets/button/buttondemo/buttondemo.go)
|
|
|
|
|
2018-05-07 19:39:45 +08:00
|
|
|
### The Gauge
|
|
|
|
|
2018-05-21 06:27:57 +08:00
|
|
|
Displays the progress of an operation. Run the
|
2019-01-16 12:12:08 +08:00
|
|
|
[gaugedemo](widgets/gauge/gaugedemo/gaugedemo.go).
|
|
|
|
|
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/gauge/gaugedemo/gaugedemo.go
|
|
|
|
```
|
2018-05-08 08:12:36 +08:00
|
|
|
|
2019-01-16 11:40:44 +08:00
|
|
|
[<img src="./images/gaugedemo.gif" alt="gaugedemo" type="image/gif">](widgets/gauge/gaugedemo/gaugedemo.go)
|
2018-05-21 06:27:57 +08:00
|
|
|
|
2019-01-22 06:43:35 +08:00
|
|
|
### The Donut
|
|
|
|
|
2019-01-22 06:57:12 +08:00
|
|
|
Visualizes progress of an operation as a partial or a complete donut. Run the
|
2019-01-22 06:43:35 +08:00
|
|
|
[donutdemo](widgets/donut/donutdemo/donutdemo.go).
|
|
|
|
|
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/donut/donutdemo/donutdemo.go
|
|
|
|
```
|
|
|
|
|
|
|
|
[<img src="./images/donutdemo.gif" alt="donutdemo" type="image/gif">](widgets/donut/donutdemo/donutdemo.go)
|
|
|
|
|
2018-05-21 06:27:57 +08:00
|
|
|
### The Text
|
|
|
|
|
|
|
|
Displays text content, supports trimming and scrolling of content. Run the
|
2019-01-16 12:12:08 +08:00
|
|
|
[textdemo](widgets/text/textdemo/textdemo.go).
|
|
|
|
|
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/text/textdemo/textdemo.go
|
|
|
|
```
|
2018-05-15 04:42:25 +08:00
|
|
|
|
2019-01-16 11:40:44 +08:00
|
|
|
[<img src="./images/textdemo.gif" alt="textdemo" type="image/gif">](widgets/text/textdemo/textdemo.go)
|
2018-07-03 11:17:05 +08:00
|
|
|
|
|
|
|
### The SparkLine
|
|
|
|
|
|
|
|
Draws a graph showing a series of values as vertical bars. The bars can have
|
|
|
|
sub-cell height. Run the
|
|
|
|
[sparklinedemo](widgets/sparkline/sparklinedemo/sparklinedemo.go).
|
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/sparkline/sparklinedemo/sparklinedemo.go
|
|
|
|
```
|
|
|
|
|
2019-02-07 13:20:04 +08:00
|
|
|
[<img src="./images/sparklinedemo.gif" alt="sparklinedemo" type="image/gif" width="50%">](widgets/sparkline/sparklinedemo/sparklinedemo.go)
|
2018-07-03 11:17:05 +08:00
|
|
|
|
2018-07-03 11:21:23 +08:00
|
|
|
### The BarChart
|
|
|
|
|
|
|
|
Displays multiple bars showing relative ratios of values. Run the
|
|
|
|
[barchartdemo](widgets/barchart/barchartdemo/barchartdemo.go).
|
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/barchart/barchartdemo/barchartdemo.go
|
|
|
|
```
|
|
|
|
|
2019-02-07 13:20:04 +08:00
|
|
|
[<img src="./images/barchartdemo.gif" alt="barchartdemo" type="image/gif" width="50%">](widgets/barchart/barchartdemo/barchartdemo.go)
|
2018-07-03 11:21:23 +08:00
|
|
|
|
2019-01-13 14:40:24 +08:00
|
|
|
### The LineChart
|
|
|
|
|
2019-02-18 14:35:12 +08:00
|
|
|
Displays series of values on a line chart, supports zoom triggered by mouse
|
|
|
|
events. Run the
|
2019-01-13 14:40:24 +08:00
|
|
|
[linechartdemo](widgets/linechart/linechartdemo/linechartdemo.go).
|
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/linechart/linechartdemo/linechartdemo.go
|
|
|
|
```
|
|
|
|
|
2019-02-07 13:20:04 +08:00
|
|
|
[<img src="./images/linechartdemo.gif" alt="linechartdemo" type="image/gif" width="70%">](widgets/linechart/linechartdemo/linechartdemo.go)
|
2019-01-13 14:40:24 +08:00
|
|
|
|
2019-02-07 12:18:56 +08:00
|
|
|
### The SegmentDisplay
|
|
|
|
|
|
|
|
Displays text by simulating a 16-segment display. Run the
|
2019-02-07 13:35:17 +08:00
|
|
|
[segmentdisplaydemo](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go).
|
2019-02-07 12:18:56 +08:00
|
|
|
|
|
|
|
```go
|
|
|
|
go run github.com/mum4k/termdash/widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go
|
|
|
|
```
|
|
|
|
|
2019-02-07 12:20:06 +08:00
|
|
|
[<img src="./images/segmentdisplaydemo.gif" alt="segmentdisplaydemo" type="image/gif">](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go)
|
2019-02-07 12:18:56 +08:00
|
|
|
|
2019-01-16 12:12:08 +08:00
|
|
|
# Contributing
|
|
|
|
|
|
|
|
If you are willing to contribute, improve the infrastructure or develop a
|
|
|
|
widget, first of all Thank You! Your help is appreciated.
|
|
|
|
|
|
|
|
Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines related
|
|
|
|
to the Google's CLA, and code review requirements.
|
|
|
|
|
|
|
|
As stated above the primary goal of this project is to develop readable, well
|
|
|
|
designed code, the functionality and efficiency come second. This is achieved
|
|
|
|
through detailed code reviews, design discussions and following of the [design
|
|
|
|
guidelines](doc/design_guidelines.md). Please familiarize yourself with these
|
|
|
|
before contributing.
|
|
|
|
|
|
|
|
If you're developing a new widget, please see the [widget
|
|
|
|
development](doc/widget_development.md) section.
|
|
|
|
|
2018-06-05 00:46:21 +08:00
|
|
|
|
2018-05-15 04:42:25 +08:00
|
|
|
## Disclaimer
|
|
|
|
|
|
|
|
This is not an official Google product.
|