Go to file
Xabier Larrakoetxea c1bf776dba
Use variadic args for Value factory options
Signed-off-by: Xabier Larrakoetxea <slok69@gmail.com>
2019-05-03 07:14:01 +02:00
align Adding licences. 2019-02-24 16:30:05 -05:00
cell Factoring private type buffer out of cell. 2019-02-24 16:29:44 -05:00
container Allow options on intermediate containers in the grid. 2019-04-07 16:58:18 -04:00
doc Provide metadata to widgets when drawing. 2019-04-03 23:13:18 -04:00
internal Check also for non printable characters on alingfor package text helper method 2019-05-03 07:04:10 +02:00
keyboard Adding tests for keyboard and mouse enums. 2019-02-24 16:35:19 -05:00
linestyle Fixing typo in a comment 2019-02-24 17:53:27 -05:00
mouse Finishing a comment 2019-02-24 17:37:22 -05:00
termdashdemo Allow options on intermediate containers in the grid. 2019-04-07 16:58:18 -04:00
terminal Finishing unfinished comment. 2019-02-24 02:39:00 -05:00
widgetapi Provide metadata to widgets when drawing. 2019-04-03 23:13:18 -04:00
widgets Use variadic args for Value factory options 2019-05-03 07:14:01 +02:00
.gitignore Renaming display to terminal. 2018-03-26 16:31:20 +01:00
.travis.yml Advancing to Go1.10. 2019-04-18 22:55:05 -04:00
CHANGELOG.md Advancing to Go1.10. 2019-04-18 22:55:05 -04:00
CONTRIBUTING.md Adding a CONTRIBUTING.md file. 2018-04-14 23:02:18 +01:00
LICENSE Initial commit 2018-03-24 12:01:49 +00:00
README.md Merge pull request #177 from mum4k/release-0-8-0 2019-03-30 02:35:15 -04:00
termdash.go Calculating container areas upon Draw only. 2019-03-28 22:30:09 -04:00
termdash_test.go Provide metadata to widgets when drawing. 2019-04-03 23:13:18 -04:00

README.md

Doc Status Build Status Sourcegraph Coverage Status Go Report Card License Mentioned in Awesome Go

termdashlogo

Termdash is a cross-platform customizable terminal based dashboard.

termdashdemo

The feature set is inspired by the gizak/termui project, which in turn was inspired by yaronn/blessed-contrib.

This rewrite focuses on code readability, maintainability and testability, see the design goals. It aims to achieve the following requirements. See the high-level design for more details.

Public API and status

The public API surface is documented in the wiki.

Private packages can be identified by the presence of the /internal/ directory in their import path. Stability of the private packages isn't guaranteed and changes won't be backward compatible.

There might still be breaking changes to the public API, at least until the project reaches version 1.0.0. Any breaking changes will be published in the changelog.

Current feature set

  • Full support for terminal window resizing throughout the infrastructure.
  • Customizable layout, widget placement, borders, margins, padding, colors, etc.
  • Dynamic layout changes at runtime.
  • Binary tree and Grid forms of setting up the layout.
  • 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.

Installation

To install this library, run the following:

go get -u github.com/mum4k/termdash

Usage

The usage of most of these elements is demonstrated in termdashdemo.go. To execute the demo:

go run github.com/mum4k/termdash/termdashdemo/termdashdemo.go

Documentation

Please refer to the Termdash wiki for all documentation and resources.

Implemented Widgets

The Button

Allows users to interact with the application, each button press runs a callback function. Run the buttondemo.

go run github.com/mum4k/termdash/widgets/button/buttondemo/buttondemo.go

buttondemo

The Gauge

Displays the progress of an operation. Run the gaugedemo.

go run github.com/mum4k/termdash/widgets/gauge/gaugedemo/gaugedemo.go

gaugedemo

The Donut

Visualizes progress of an operation as a partial or a complete donut. Run the donutdemo.

go run github.com/mum4k/termdash/widgets/donut/donutdemo/donutdemo.go

donutdemo

The Text

Displays text content, supports trimming and scrolling of content. Run the textdemo.

go run github.com/mum4k/termdash/widgets/text/textdemo/textdemo.go

textdemo

The SparkLine

Draws a graph showing a series of values as vertical bars. The bars can have sub-cell height. Run the sparklinedemo.

go run github.com/mum4k/termdash/widgets/sparkline/sparklinedemo/sparklinedemo.go

sparklinedemo

The BarChart

Displays multiple bars showing relative ratios of values. Run the barchartdemo.

go run github.com/mum4k/termdash/widgets/barchart/barchartdemo/barchartdemo.go

barchartdemo

The LineChart

Displays series of values on a line chart, supports zoom triggered by mouse events. Run the linechartdemo.

go run github.com/mum4k/termdash/widgets/linechart/linechartdemo/linechartdemo.go

linechartdemo

The SegmentDisplay

Displays text by simulating a 16-segment display. Run the segmentdisplaydemo.

go run github.com/mum4k/termdash/widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go

segmentdisplaydemo

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 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. Please familiarize yourself with these before contributing.

If you're developing a new widget, please see the widget development section.

Disclaimer

This is not an official Google product.