# termdash
**Repository Path**: mirrors_mum4k/termdash
## Basic Information
- **Project Name**: termdash
- **Description**: Terminal based dashboard.
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-01-05
- **Last Updated**: 2026-07-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](https://godoc.org/github.com/mum4k/termdash)
[](https://app.travis-ci.com/github/mum4k/termdash)
[](https://coveralls.io/github/mum4k/termdash?branch=master)
[](https://goreportcard.com/report/github.com/mum4k/termdash)
[](https://github.com/mum4k/termdash/blob/master/LICENSE)
[](https://github.com/avelino/awesome-go)
# [
](http://github.com/mum4k/termdash/wiki)
Termdash is a cross-platform customizable terminal based dashboard.
[
](termdashdemo/termdashdemo.go)
The feature set is inspired by the
[gizak/termui](http://github.com/gizak/termui) project, which in turn was
inspired by
[yaronn/blessed-contrib](http://github.com/yaronn/blessed-contrib).
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.
# Public API and status
The public API surface is documented in the
[wiki](http://github.com/mum4k/termdash/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](CHANGELOG.md).
# 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
go get -u github.com/mum4k/termdash
cd github.com/mum4k/termdash
```
# Usage
The usage of most of these elements is demonstrated in
[termdashdemo.go](termdashdemo/termdashdemo.go). To execute the demo:
```go
go run termdashdemo/termdashdemo.go
```
# Documentation
Please refer to the [Termdash wiki](http://github.com/mum4k/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](widgets/button/buttondemo/buttondemo.go).
```go
go run widgets/button/buttondemo/buttondemo.go
```
[
](widgets/button/buttondemo/buttondemo.go)
## The TextInput
Allows users to interact with the application by entering, editing and
submitting text data. Run the
[textinputdemo](widgets/textinput/textinputdemo/textinputdemo.go).
```go
go run widgets/textinput/textinputdemo/textinputdemo.go
```
[
](widgets/textinput/textinputdemo/textinputdemo.go)
Can be used to create text input forms that support keyboard navigation:
```go
go run widgets/textinput/formdemo/formdemo.go
```
[
](widgets/textinput/formdemo/formdemo.go)
## The Gauge
Displays the progress of an operation. Run the
[gaugedemo](widgets/gauge/gaugedemo/gaugedemo.go).
```go
go run widgets/gauge/gaugedemo/gaugedemo.go
```
[
](widgets/gauge/gaugedemo/gaugedemo.go)
## The Pie
Visualizes series of values as pie slices in the pie chart. Run the
[pie demo](widgets/pie/piedemo/piedemo.go).
```go
go run widgets/pie/piedemo/piedemo.go
```
## The Donut
Visualizes progress of an operation as a partial or a complete donut. Run the
[donutdemo](widgets/donut/donutdemo/donutdemo.go).
```go
go run widgets/donut/donutdemo/donutdemo.go
```
[
](widgets/donut/donutdemo/donutdemo.go)
## The Text
Displays text content, supports trimming and scrolling of content. Run the
[textdemo](widgets/text/textdemo/textdemo.go).
```go
go run widgets/text/textdemo/textdemo.go
```
[
](widgets/text/textdemo/textdemo.go)
## 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).
```go
go run widgets/sparkline/sparklinedemo/sparklinedemo.go
```
[
](widgets/sparkline/sparklinedemo/sparklinedemo.go)
## The BarChart
Displays multiple bars showing relative ratios of values. Run the
[barchartdemo](widgets/barchart/barchartdemo/barchartdemo.go).
```go
go run widgets/barchart/barchartdemo/barchartdemo.go
```
[
](widgets/barchart/barchartdemo/barchartdemo.go)
## The LineChart
Displays series of values on a line chart, supports zoom triggered by mouse
events. Run the
[linechartdemo](widgets/linechart/linechartdemo/linechartdemo.go).
```go
go run widgets/linechart/linechartdemo/linechartdemo.go
```
[
](widgets/linechart/linechartdemo/linechartdemo.go)
## The SegmentDisplay
Displays text by simulating a 16-segment display. Run the
[segmentdisplaydemo](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go).
```go
go run widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go
```
[
](widgets/segmentdisplay/segmentdisplaydemo/segmentdisplaydemo.go)
## The TreeView
Displays a tree view which provides a hierarchical and collapsible view for displaying and interacting with nested data structures.
[treeviewdemo](widgets/treeview/treeviewdemo/treeviewdemo.go).
```go
go run widgets/treeview/treeviewdemo/treeviewdemo.go
```
[
](widgets/treeview/treeviewdemo/treeviewdemo.go)
## The Checkbox
Allows users to toggle a single boolean value. Run the
[checkboxdemo](widgets/checkbox/checkboxdemo/checkboxdemo.go).
```go
go run widgets/checkbox/checkboxdemo/checkboxdemo.go
```
## The Dropdown
Allows users to select one value from a fixed list of items. Run the
[dropdowndemo](widgets/dropdown/dropdowndemo/dropdowndemo.go).
```go
go run widgets/dropdown/dropdowndemo/dropdowndemo.go
```
## The Radio
Allows users to select one item from a group of radio options. Run the
[radiodemo](widgets/radio/radiodemo/radiodemo.go).
```go
go run widgets/radio/radiodemo/radiodemo.go
```
## The Slider
Allows users to choose a numeric value from a bounded range. Run the
[sliderdemo](widgets/slider/sliderdemo/sliderdemo.go).
```go
go run widgets/slider/sliderdemo/sliderdemo.go
```
## The Tab
Displays tabbed interfaces with keyboard and mouse navigation, notifications
and dynamically updated content. Run the
[tabdemo](widgets/tab/tabdemo/tabdemo.go).
```go
go run widgets/tab/tabdemo/tabdemo.go
```
## The Modal
Displays modal overlays that can host and move draggable child widgets. Run the
[modaldemo](widgets/modal/modaldemo/modaldemo.go).
```go
go run widgets/modal/modaldemo/modaldemo.go
```
## The Timeline
Displays a scrollable event log with severity markers and time range filtering.
Run the
[timelinedemo](widgets/timeline/timelinedemo/timelinedemo.go).
```go
go run widgets/timeline/timelinedemo/timelinedemo.go
```
## The HeatMap
Displays heat maps with labeled axes and configurable cell colors. Run the
[heatmapdemo](widgets/heatmap/heatmapdemo/heatmapdemo.go).
```go
go run widgets/heatmap/heatmapdemo/heatmapdemo.go
```
## The Spectrum
Displays audio-style spectrum analyzer data with configurable bars, colors and
threshold controls. Run the
[spectrumdemo](widgets/spectrum/spectrumdemo/spectrumdemo.go).
```go
go run widgets/spectrum/spectrumdemo/spectrumdemo.go
```
## The Radar
Displays an animated radar sweep with contacts and range rings. Run the
[radardemo](widgets/radar/radardemo/radardemo.go).
```go
go run widgets/radar/radardemo/radardemo.go
```
## The ThreeD
Displays rotating 3D models, symbols and image-derived glyphs in the terminal.
Run the
[threeddemo](widgets/threed/threeddemo/threeddemo.go).
```go
go run widgets/threed/threeddemo/threeddemo.go
```
## The FX
Wraps widgets with animated effects such as fade, sweep, scramble and framed
canvas rendering. Run the
[fxdemo](widgets/fx/fxdemo/fxdemo.go).
```go
go run widgets/fx/fxdemo/fxdemo.go
```
## The BorderFX
Provides animated border and title effects for containers. Run the
[borderfxdemo](widgets/borderfx/borderfxdemo/borderfxdemo.go).
```go
go run widgets/borderfx/borderfxdemo/borderfxdemo.go
```
## The Toast
Displays configurable toast notifications in normal containers and modal
windows, with placement, animation, progress and action callbacks. Run the
[toastdemo](widgets/toast/toastdemo/toastdemo.go).
```go
go run widgets/toast/toastdemo/toastdemo.go
```
## The HUD
Displays a drop-down modal HUD overlay with live OS values, compact in/out
sparklines, a disk pie, a 3D spectrum analyzer, a telemetry treeview,
double-Escape toggling, animated borderfx framing, embedded toast notifications
and action controls. Run the
[huddemo](widgets/hud/huddemo/huddemo.go).
```go
go run widgets/hud/huddemo/huddemo.go
```
## The EmojiKeyboard
Displays a paginated emoji grid for keyboard and mouse selection. It is
demonstrated in the
[tabdemo](widgets/tab/tabdemo/tabdemo.go).
```go
go run widgets/tab/tabdemo/tabdemo.go
```
# 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.
Termdash 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.
# Similar projects in Go
- [clui](https://github.com/VladimirMarkelov/clui)
- [gocui](https://github.com/jroimartin/gocui)
- [gowid](https://github.com/gcla/gowid)
- [termui](https://github.com/gizak/termui)
- [tui-go](https://github.com/marcusolsson/tui-go)
- [tview](https://github.com/rivo/tview)
# Projects using Termdash
- [datadash](https://github.com/keithknott26/datadash): Visualize streaming or tabular data inside the terminal.
- [grafterm](https://github.com/slok/grafterm): Metrics dashboards visualization on the terminal.
- [perfstat](https://github.com/flaviostutz/perfstat): Analyze and show tips about possible bottlenecks in Linux systems.
- [gex](https://github.com/Tosch110/gex): Cosmos SDK explorer in-terminal.
- [ali](https://github.com/nakabonne/ali): ALI HTTP load testing tool with realtime analysis.
- [suimon](https://github.com/bartosian/suimon): SUI blockchain explorer and monitor.
# Disclaimer
This is not an official Google product.