• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H03-Apr-2021-119

align/H03-Apr-2021-163107

cell/H03-Apr-2021-551407

container/H03-Apr-2021-9,6008,216

doc/H03-Apr-2021-409305

keyboard/H03-Apr-2021-223174

linestyle/H03-Apr-2021-11362

mouse/H03-Apr-2021-9452

private/H03-Apr-2021-24,02219,632

termdashdemo/H03-Apr-2021-994826

terminal/H03-Apr-2021-2,3901,792

widgetapi/H03-Apr-2021-20362

widgets/H03-Apr-2021-29,24724,064

.gitignoreH A D03-Apr-202171 54

.travis.ymlH A D03-Apr-20211.4 KiB2524

CHANGELOG.mdH A D03-Apr-202115.7 KiB489342

CONTRIBUTING.mdH A D03-Apr-20211.5 KiB3927

LICENSEH A D03-Apr-202111.1 KiB202169

README.mdH A D03-Apr-20218.4 KiB227155

go.modH A D03-Apr-2021268 129

go.sumH A D03-Apr-20212.2 KiB2524

termdash.goH A D03-Apr-20219.9 KiB363211

termdash_test.goH A D03-Apr-202116.2 KiB679588

README.md

1[![Doc Status](https://godoc.org/github.com/mum4k/termdash?status.png)](https://godoc.org/github.com/mum4k/termdash)
2[![Build Status](https://travis-ci.com/mum4k/termdash.svg?branch=master)](https://travis-ci.com/mum4k/termdash)
3[![Sourcegraph](https://sourcegraph.com/github.com/mum4k/termdash/-/badge.svg)](https://sourcegraph.com/github.com/mum4k/termdash?badge)
4[![Coverage Status](https://coveralls.io/repos/github/mum4k/termdash/badge.svg?branch=master)](https://coveralls.io/github/mum4k/termdash?branch=master)
5[![Go Report Card](https://goreportcard.com/badge/github.com/mum4k/termdash)](https://goreportcard.com/report/github.com/mum4k/termdash)
6[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/mum4k/termdash/blob/master/LICENSE)
7[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go)
8
9# [<img src="./doc/images/termdash.png" alt="termdashlogo" type="image/png" width="30%">](http://github.com/mum4k/termdash/wiki)
10
11Termdash is a cross-platform customizable terminal based dashboard.
12
13[<img src="./doc/images/termdashdemo_0_9_0.gif" alt="termdashdemo" type="image/gif">](termdashdemo/termdashdemo.go)
14
15The feature set is inspired by the
16[gizak/termui](http://github.com/gizak/termui) project, which in turn was
17inspired by
18[yaronn/blessed-contrib](http://github.com/yaronn/blessed-contrib).
19
20This rewrite focuses on code readability, maintainability and testability, see
21the [design goals](doc/design_goals.md). It aims to achieve the following
22[requirements](doc/requirements.md). See the [high-level design](doc/hld.md)
23for more details.
24
25# Public API and status
26
27The public API surface is documented in the
28[wiki](http://github.com/mum4k/termdash/wiki).
29
30Private packages can be identified by the presence of the **/private/**
31directory in their import path. Stability of the private packages isn't
32guaranteed and changes won't be backward compatible.
33
34There might still be breaking changes to the public API, at least until the
35project reaches version 1.0.0. Any breaking changes will be published in the
36[changelog](CHANGELOG.md).
37
38# Current feature set
39
40- Full support for terminal window resizing throughout the infrastructure.
41- Customizable layout, widget placement, borders, margins, padding, colors, etc.
42- Dynamic layout changes at runtime.
43- Binary tree and Grid forms of setting up the layout.
44- Focusable containers and widgets.
45- Processing of keyboard and mouse events.
46- Periodic and event driven screen redraw.
47- A library of widgets, see below.
48- UTF-8 for all text elements.
49- Drawing primitives (Go functions) for widget development with character and
50  sub-character resolution.
51
52# Installation
53
54To install this library, run the following:
55
56```go
57go get -u github.com/mum4k/termdash
58cd github.com/mum4k/termdash
59```
60
61# Usage
62
63The usage of most of these elements is demonstrated in
64[termdashdemo.go](termdashdemo/termdashdemo.go). To execute the demo:
65
66```go
67go run termdashdemo/termdashdemo.go
68```
69
70# Documentation
71
72Please refer to the [Termdash wiki](http://github.com/mum4k/termdash/wiki) for
73all documentation and resources.
74
75# Implemented Widgets
76
77## The Button
78
79Allows users to interact with the application, each button press runs a callback function.
80Run the
81[buttondemo](widgets/button/buttondemo/buttondemo.go).
82
83```go
84go run widgets/button/buttondemo/buttondemo.go
85```
86
87[<img src="./doc/images/buttondemo.gif" alt="buttondemo" type="image/gif" width="50%">](widgets/button/buttondemo/buttondemo.go)
88
89## The TextInput
90
91Allows users to interact with the application by entering, editing and
92submitting text data. Run the
93[textinputdemo](widgets/textinput/textinputdemo/textinputdemo.go).
94
95```go
96go run widgets/textinput/textinputdemo/textinputdemo.go
97```
98
99[<img src="./doc/images/textinputdemo.gif" alt="textinputdemo" type="image/gif" width="80%">](widgets/textinput/textinputdemo/textinputdemo.go)
100
101Can be used to create text input forms that support keyboard navigation:
102
103```go
104go run widgets/textinput/formdemo/formdemo.go
105```
106
107[<img src="./doc/images/formdemo.gif" alt="formdemo" type="image/gif" width="50%">](widgets/textinput/formdemo/formdemo.go)
108
109## The Gauge
110
111Displays the progress of an operation. Run the
112[gaugedemo](widgets/gauge/gaugedemo/gaugedemo.go).
113
114```go
115go run widgets/gauge/gaugedemo/gaugedemo.go
116```
117
118[<img src="./doc/images/gaugedemo.gif" alt="gaugedemo" type="image/gif">](widgets/gauge/gaugedemo/gaugedemo.go)
119
120## The Donut
121
122Visualizes progress of an operation as a partial or a complete donut. Run the
123[donutdemo](widgets/donut/donutdemo/donutdemo.go).
124
125```go
126go run widgets/donut/donutdemo/donutdemo.go
127```
128
129[<img src="./doc/images/donutdemo.gif" alt="donutdemo" type="image/gif">](widgets/donut/donutdemo/donutdemo.go)
130
131## The Text
132
133Displays text content, supports trimming and scrolling of content. Run the
134[textdemo](widgets/text/textdemo/textdemo.go).
135
136```go
137go run widgets/text/textdemo/textdemo.go
138```
139
140[<img src="./doc/images/textdemo.gif" alt="textdemo" type="image/gif">](widgets/text/textdemo/textdemo.go)
141
142## The SparkLine
143
144Draws a graph showing a series of values as vertical bars. The bars can have
145sub-cell height. Run the
146[sparklinedemo](widgets/sparkline/sparklinedemo/sparklinedemo.go).
147
148```go
149go run widgets/sparkline/sparklinedemo/sparklinedemo.go
150```
151
152[<img src="./doc/images/sparklinedemo.gif" alt="sparklinedemo" type="image/gif" width="50%">](widgets/sparkline/sparklinedemo/sparklinedemo.go)
153
154## The BarChart
155
156Displays multiple bars showing relative ratios of values. Run the
157[barchartdemo](widgets/barchart/barchartdemo/barchartdemo.go).
158
159```go
160go run widgets/barchart/barchartdemo/barchartdemo.go
161```
162
163[<img src="./doc/images/barchartdemo.gif" alt="barchartdemo" type="image/gif" width="50%">](widgets/barchart/barchartdemo/barchartdemo.go)
164
165## The LineChart
166
167Displays series of values on a line chart, supports zoom triggered by mouse
168events. Run the
169[linechartdemo](widgets/linechart/linechartdemo/linechartdemo.go).
170
171```go
172go run widgets/linechart/linechartdemo/linechartdemo.go
173```
174
175[<img src="./doc/images/linechartdemo.gif" alt="linechartdemo" type="image/gif" width="70%">](widgets/linechart/linechartdemo/linechartdemo.go)
176
177## The SegmentDisplay
178
179Displays text by simulating a 16-segment display. Run the
180[segmentdisplaydemo](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go).
181
182```go
183go run widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go
184```
185
186[<img src="./doc/images/segmentdisplaydemo.gif" alt="segmentdisplaydemo" type="image/gif">](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go)
187
188# Contributing
189
190If you are willing to contribute, improve the infrastructure or develop a
191widget, first of all Thank You! Your help is appreciated.
192
193Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines related
194to the Google's CLA, and code review requirements.
195
196As stated above the primary goal of this project is to develop readable, well
197designed code, the functionality and efficiency come second. This is achieved
198through detailed code reviews, design discussions and following of the [design
199guidelines](doc/design_guidelines.md). Please familiarize yourself with these
200before contributing.
201
202If you're developing a new widget, please see the [widget
203development](doc/widget_development.md) section.
204
205Termdash uses [this branching model](https://nvie.com/posts/a-successful-git-branching-model/). When you fork the repository, base your changes off the [devel](https://github.com/mum4k/termdash/tree/devel) branch and the pull request should merge it back to the devel branch. Commits to the master branch are limited to releases, major bug fixes and documentation updates.
206
207# Similar projects in Go
208
209- [clui](https://github.com/VladimirMarkelov/clui)
210- [gocui](https://github.com/jroimartin/gocui)
211- [gowid](https://github.com/gcla/gowid)
212- [termui](https://github.com/gizak/termui)
213- [tui-go](https://github.com/marcusolsson/tui-go)
214- [tview](https://github.com/rivo/tview)
215
216# Projects using Termdash
217
218- [datadash](https://github.com/keithknott26/datadash): Visualize streaming or tabular data inside the terminal.
219- [grafterm](https://github.com/slok/grafterm): Metrics dashboards visualization on the terminal.
220- [perfstat](https://github.com/flaviostutz/perfstat): Analyze and show tips about possible bottlenecks in Linux systems.
221- [gex](https://github.com/Tosch110/gex): Cosmos SDK explorer in-terminal.
222- [ali](https://github.com/nakabonne/ali): ALI HTTP load testing tool with realtime analysis.
223
224# Disclaimer
225
226This is not an official Google product.
227