termdash/README.md

177 lines
6.2 KiB
Markdown
Raw Normal View History

[![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)
[![Coverage Status](https://coveralls.io/repos/github/mum4k/termdash/badge.svg?branch=master)](https://coveralls.io/github/mum4k/termdash?branch=master)
[![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-03-24 20:01:49 +08:00
# termdash
[<img src="./images/termdashdemo_0_7_0.gif" alt="termdashdemo" type="image/gif">](termdashdemo/termdashdemo.go)
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).
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.
2019-01-16 12:12:08 +08:00
# Current feature set
- 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.
- Drawing primitives (Go functions) for widget development with character and
sub-character resolution.
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
2019-01-16 12:12:08 +08:00
To install this library, run the following:
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:
2019-01-16 12:12:08 +08:00
```
go run github.com/mum4k/termdash/termdashdemo/termdashdemo.go
```
2019-01-16 12:12:08 +08:00
# Documentation
2019-01-16 12:12:08 +08:00
Code documentation can be viewed in
[godoc](https://godoc.org/github.com/mum4k/termdash).
2019-01-16 12:12:08 +08:00
Project documentation is available in the [doc](doc/) directory.
## Implemented Widgets
### 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)
### The Gauge
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
```
[<img src="./images/gaugedemo.gif" alt="gaugedemo" type="image/gif">](widgets/gauge/gaugedemo/gaugedemo.go)
### The Donut
2019-01-22 06:57:12 +08:00
Visualizes progress of an operation as a partial or a complete donut. Run the
[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)
### 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
[<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
### 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)
2019-01-13 14:40:24 +08:00
### The LineChart
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
### The SegmentDisplay
Displays text by simulating a 16-segment display. Run the
[segmentdisplaydemo](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go).
```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-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.