Skip to content
Terminal based dashboard.
Go Shell
Branch: master
Clone or download

Latest commit

Latest commit 42f5d61 Apr 10, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
align Adding licences. Feb 24, 2019
cell Factoring private type buffer out of cell. Feb 24, 2019
container Modifying imports 'internal' -> 'private'. Apr 10, 2020
doc Merge branch 'master' into devel May 16, 2019
keyboard Don't split keyboard shortcuts. Apr 20, 2019
linestyle Fixing typo in a comment Feb 24, 2019
mouse Finishing a comment Feb 24, 2019
private Modifying imports 'internal' -> 'private'. Apr 10, 2020
termdashdemo Add -terminal flag to switch between implementations for termdashdemo Mar 1, 2020
terminal Modifying imports 'internal' -> 'private'. Apr 10, 2020
widgetapi Modifying imports 'internal' -> 'private'. Apr 10, 2020
widgets Modifying imports 'internal' -> 'private'. Apr 10, 2020
.gitignore Renaming display to terminal. Mar 26, 2018
.travis.yml Advancing CI to Go 1.14. Mar 7, 2020 Fixing link in CHANGELOG. Apr 10, 2020 Document that devel branch is used for development. Mar 20, 2020
LICENSE Initial commit Mar 24, 2018 Modifying imports 'internal' -> 'private'. Apr 10, 2020
go.mod Migrating to Go modules. Mar 20, 2020
go.sum Migrating to Go modules. Mar 20, 2020
termdash.go Modifying imports 'internal' -> 'private'. Apr 10, 2020
termdash_test.go Modifying imports 'internal' -> 'private'. Apr 10, 2020

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


Termdash is a cross-platform customizable terminal based dashboard.


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 /private/ 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.


To install this library, run the following:

go get -u


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

go run


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


The TextInput

Allows users to interact with the application by entering, editing and submitting text data. Run the textinputdemo.

go run


The Gauge

Displays the progress of an operation. Run the gaugedemo.

go run


The Donut

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

go run


The Text

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

go run


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


The BarChart

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

go run


The LineChart

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

go run


The SegmentDisplay

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

go run



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 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.

Termdash uses this branching model. When you fork the repository, base your changes off the 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.

Similar projects in Go

Projects using Termdash

  • datadash: Visualize streaming or tabular data inside the terminal.
  • grafterm: Metrics dashboards visualization on the terminal.


This is not an official Google product.

You can’t perform that action at this time.