Terminal-based user interface toolkit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rivo c16128c927
Merge pull request #220 from ardnew/list-spanhighlight
3 years ago
demos Minor indenting change in presentation. 4 years ago
CODE_OF_CONDUCT.md Added a contact link to code of conduct. 5 years ago
CONTRIBUTING.md Some clarifications in the Grid class as well as in the contributor guidelines. Resolves #231 4 years ago
LICENSE.txt Replaced license placeholders. Fixes #149 4 years ago
README.md Bugfixes/improvements to PR #172. 4 years ago
ansi.go ANSI RGB colors were missing hashtags in tags. Fixes #140 4 years ago
application.go Minor improvements. 4 years ago
borders.go added configurable borders 4 years ago
box.go Minor improvements. 4 years ago
button.go Added Primitive demo to go along with the GitHub Wiki entry on how to create your own primitive. 4 years ago
checkbox.go Added custom higlight styles to Table. Resolves #154 4 years ago
doc.go Minor improvements. 4 years ago
dropdown.go Introduced a separate class-wide "selected" handler for DropDown. Resolves #206 4 years ago
flex.go Switched flexItem slice to pointers. 4 years ago
focusable.go Added list, improved existing primitives, and fixed a bunch of bugs. 5 years ago
form.go If a Form has no focusable elements, it keeps the focus itself. Fixes #198 4 years ago
frame.go Added links to Wiki to documentation. Also replaced screenshot with GIF screencast. 5 years ago
grid.go Fixed confusing comments. Fixes #231 4 years ago
inputfield.go fix per @jr81 4 years ago
list.go merge https://github.com/rivo/tview into list-spanhighlight, resolving conflicts for rivo/tview#220 4 years ago
modal.go Allowing the use of arrow keys in modal buttons, too. Resolves #167 4 years ago
pages.go Pages should clear their background before redrawing. Fixes #89 4 years ago
primitive.go Added Primitive demo to go along with the GitHub Wiki entry on how to create your own primitive. 4 years ago
semigraphics.go Removed deprecated funcs/const related to semigraphic changes 4 years ago
styles.go Added placeholder text to InputField. Resolves #75 4 years ago
table.go Fixed region/color tag escaping bug. Fixes #234 4 years ago
textview.go Merge pull request #235 from Bios-Marcel/prevent-regex-recompilation 4 years ago
treeview.go move under setter and change to string 4 years ago
tview.gif Added links to Wiki to documentation. Also replaced screenshot with GIF screencast. 5 years ago
util.go Fixed region/color tag escaping bug. Fixes #234 4 years ago


Rich Interactive Widgets for Terminal UIs

Godoc Reference Go Report

This Go package provides commonly needed components for terminal based user interfaces.


Among these components are:

  • Input forms (include input/password fields, drop-down selections, checkboxes, and buttons)
  • Navigable multi-color text views
  • Sophisticated navigable table views
  • Flexible tree views
  • Selectable lists
  • Grid, Flexbox and page layouts
  • Modal message windows
  • An application wrapper

They come with lots of customization options and can be easily extended to fit your needs.


go get github.com/rivo/tview

Hello World

This basic example creates a box titled "Hello, World!" and displays it in your terminal:

package main

import (

func main() {
	box := tview.NewBox().SetBorder(true).SetTitle("Hello, world!")
	if err := tview.NewApplication().SetRoot(box, true).Run(); err != nil {

Check out the GitHub Wiki for more examples along with screenshots. Or try the examples in the "demos" subdirectory.

For a presentation highlighting this package, compile and run the program found in the "demos/presentation" subdirectory.


Refer to https://godoc.org/github.com/rivo/tview for the package's documentation.


This package is based on github.com/gdamore/tcell (and its dependencies).

Your Feedback

Add your issue here on GitHub. Feel free to get in touch if you have any questions.

Version History

(There are no corresponding tags in the project. I only keep such a history in this README.)

  • v0.19 (2018-10-28)
    • Added QueueUpdate() and QueueEvent() to Application to help with modifications to primitives from goroutines.
  • v0.18 (2018-10-18)
    • InputField elements can now be navigated freely.
  • v0.17 (2018-06-20)
    • Added TreeView.
  • v0.15 (2018-05-02)
    • Flex and Grid don't clear their background per default, thus allowing for custom modals. See the Wiki for an example.
  • v0.14 (2018-04-13)
    • Added an Escape() function which keep strings like color or region tags from being recognized as such.
    • Added ANSIWriter() and TranslateANSI() which convert ANSI escape sequences to tview color tags.
  • v0.13 (2018-04-01)
    • Added background colors and text attributes to color tags.
  • v0.12 (2018-03-13)
    • Added "suspended mode" to Application.
  • v0.11 (2018-03-02)
    • Added a RemoveItem() function to Grid and Flex.
  • v0.10 (2018-02-22)
    • Direct access to the screen object through callback in Box (i.e. for all primitives).
  • v0.9 (2018-02-20)
    • Introduced Grid layout.
    • Direct access to the screen object through callbacks in Application.
  • v0.8 (2018-01-17)
    • Color tags can now be used almost everywhere.
  • v0.7 (2018-01-16)
    • Forms can now also have a horizontal layout.
  • v0.6 (2018-01-14)
    • All primitives can now intercept all key events when they have focus.
    • Key events can also be intercepted globally (changed to a more general, consistent handling)
  • v0.5 (2018-01-13)
    • TextView now has word wrapping and text alignment
  • v0.4 (2018-01-12)
    • TextView now accepts color tags with any W3C color (including RGB hex values).
    • Support for wide unicode characters.
  • v0.3 (2018-01-11)
    • Added masking to InputField and password entry to Form.
  • v0.2 (2018-01-10)
    • Added Styles variable with default colors for primitives.
    • Completed some missing InputField functions.
  • v0.1 (2018-01-06)
    • First Release.