Compositional widgets for terminal user interfaces, written in Go, inspired by urwid.
Alternatives To Gowid
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
S Tui3,267
14 months ago43July 24, 202146gpl-2.0Python
Terminal-based CPU stress and monitoring utility
Gowid659253 months ago21July 09, 20226mitGo
Compositional widgets for terminal user interfaces, written in Go, inspired by urwid.
Picotui65653a year ago17July 12, 202124mitPython
Lightweight, pure-Python Text User Interface (TUI) widget toolkit with minimal dependencies. Dedicated to the Pycopy project.
2a month ago7February 27, 2018231gpl-3.0Python
Terminal-based Mail User Agent
3 days ago28April 13, 202243gpl-3.0Python
TUI and CLI for the BitTorrent client Transmission
Zulip Terminal493
2 days ago9May 21, 2022391apache-2.0Python
Official Zulip terminal client.
3 years ago6July 06, 20193gpl-3.0Python
Stream youtube playlists as audio on linux terminal
2 years ago13November 20, 20172mitPython
An Geek style terminal based WeChat client
3 years ago7October 16, 20194Python
Python CLI Stocks Ticker + Portfolio Tracker
14 years ago23December 17, 20161gpl-3.0Python
A multi-tab, terminal-based text editor
Alternatives To Gowid
Select To Compare

Alternative Project Comparisons

Terminal User Interface Widgets in Go

Gowid provides widgets and a framework for making terminal user interfaces. It's written in Go and inspired by urwid.

Widgets out-of-the-box include:

  • input components like button, checkbox and an editable text field with support for passwords
  • layout components for arranging widgets in columns, rows and a grid
  • structured components - a tree, an infinite list and a table
  • pre-canned widgets - a progress bar, a modal dialog, a bar graph and a menu
  • a VT220-compatible terminal widget, heavily cribbed from urwid 😃

All widgets support interaction with the mouse when the terminal allows.

Gowid is built on top of the fantastic tcell package.

There are many alternatives to gowid - see Similar Projects

The most developed gowid application is currently termshark, a terminal UI for tshark.


go get github.com/gcla/gowid/...


Make sure $GOPATH/bin is in your PATH (or ~/go/bin if GOPATH isn't set), then tab complete "gowid-" e.g.


Here is a port of urwid's palette example:

Here is urwid's graph example:

And urwid's fibonacci example:

A demonstration of gowid's terminal widget, a port of urwid's terminal widget:

Finally, here is an animation of termshark in action:

Hello World

This example is an attempt to mimic urwid's "Hello World" example.

package main

import (


func main() {

	palette := gowid.Palette{
		"banner":  gowid.MakePaletteEntry(gowid.ColorWhite, gowid.MakeRGBColor("#60d")),
		"streak":  gowid.MakePaletteEntry(gowid.ColorNone, gowid.MakeRGBColor("#60a")),
		"inside":  gowid.MakePaletteEntry(gowid.ColorNone, gowid.MakeRGBColor("#808")),
		"outside": gowid.MakePaletteEntry(gowid.ColorNone, gowid.MakeRGBColor("#a06")),
		"bg":      gowid.MakePaletteEntry(gowid.ColorNone, gowid.MakeRGBColor("#d06")),

	div := divider.NewBlank()
	outside := styled.New(div, gowid.MakePaletteRef("outside"))
	inside := styled.New(div, gowid.MakePaletteRef("inside"))

	helloworld := styled.New(
				text.StyledContent("Hello World", gowid.MakePaletteRef("banner")),
				Align: gowid.HAlignMiddle{},

	f := gowid.RenderFlow{}

	view := styled.New(
				&gowid.ContainerWidget{IWidget: outside, D: f},
				&gowid.ContainerWidget{IWidget: inside, D: f},
				&gowid.ContainerWidget{IWidget: helloworld, D: f},
				&gowid.ContainerWidget{IWidget: inside, D: f},
				&gowid.ContainerWidget{IWidget: outside, D: f},

	app, _ := gowid.NewApp(gowid.AppArgs{
		View:    view,
		Palette: &palette,

Running the example above displays this:


Similar Projects

Gowid is late to the TUI party. There are many options from which to choose - please read https://appliedgo.net/tui/ for a nice summary for the Go language. Here is a selection:

  • urwid - one of the oldest, for those working in python
  • tview - active, polished, concise, lots of widgets, Go
  • termui - focus on graphing and dataviz, Go
  • gocui - focus on layout, good input options, mouse support, Go
  • clui - active, many widgets, mouse support, Go
  • tui-go - QT-inspired, experimental, nice examples, Go


Gowid depends on these great open-source packages:

  • urwid - not a Go-dependency, but the model for most of gowid's design
  • tcell - a cell based view for text terminals, like xterm, inspired by termbox
  • asciigraph - lightweight ASCII line-graphs for Go
  • logrus - structured pluggable logging for Go
  • testify - tools for testifying that your code will behave as you intend



License: MIT

Popular Urwid Projects
Popular Terminal Projects
Popular Command Line Interface Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.