Skip to content
Rich interactive widgets for terminal-based UIs written in Go
Go
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demos Added autocomplete functionality to InputField. Resolves #299, resolves Jul 8, 2019
CODE_OF_CONDUCT.md Added a contact link to code of conduct. Jan 12, 2018
CONTRIBUTING.md Added a clarifying note to the contributing guidelines. Nov 27, 2019
LICENSE.txt Replaced license placeholders. Fixes #149 Aug 4, 2018
README.md Added autocomplete functionality to InputField. Resolves #299, resolves Jul 8, 2019
ansi.go Fixed wrong handling of 8-bit ANSI colors. Fixes #317 Jul 11, 2019
application.go Fixed wrong handling of 8-bit ANSI colors. Fixes #317 Jul 11, 2019
borders.go added configurable borders Jun 9, 2018
box.go Primitive widths/heights should not become negative. Also fixed a Jul 9, 2019
button.go Replaced runewidth.StringWidth() with my own implementation. Fixes #236 Mar 19, 2019
checkbox.go
doc.go Minor improvements. Dec 26, 2018
dropdown.go Added autocomplete functionality to InputField. Resolves #299, resolves Jul 8, 2019
flex.go Avoid div-by-0 in case Flex item sizes are all 0. Resolves #332, reso… Oct 17, 2019
focusable.go Added list, improved existing primitives, and fixed a bunch of bugs. Dec 16, 2017
form.go Added GetFormItemCount() to Form. Resolves #298 Nov 27, 2019
frame.go Added links to Wiki to documentation. Also replaced screenshot with G… Jan 7, 2018
go.mod Updated dependencies. Resolves #354 Oct 18, 2019
go.sum Updated dependencies. Resolves #354 Oct 18, 2019
grid.go Grid's background box is transparent again. Fixes #359 Nov 29, 2019
inputfield.go Added autocomplete functionality to InputField. Resolves #299, resolves Jul 8, 2019
list.go List changed event was not fired when SetCurrentItem() was called. Fixes Jul 11, 2019
modal.go Added SetFocus() to Modal, focuses on the provided button. Resolves #364 Nov 27, 2019
pages.go Added GetFrontPage() to Pages. Resolves #355 Oct 18, 2019
primitive.go Added Primitive demo to go along with the GitHub Wiki entry on how to… Mar 19, 2018
semigraphics.go Removed deprecated funcs/const related to semigraphic changes Jun 9, 2018
styles.go Fixed some comments. Mar 9, 2019
table.go Added an "evaluate all rows" flag to Table. Resolves #345 Nov 21, 2019
textview.go Added SetFocus() to Modal, focuses on the provided button. Resolves #364 Nov 27, 2019
treeview.go Don't throw away nodes after drawing TreeView Jun 16, 2019
tview.gif Added links to Wiki to documentation. Also replaced screenshot with G… Jan 7, 2018
util.go More specific definition of punctuation characters at which WordWrap(… Jul 5, 2019

README.md

Rich Interactive Widgets for Terminal UIs

Godoc Reference Go Report

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

Screenshot

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.

Installation

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 (
	"github.com/rivo/tview"
)

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

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.

Documentation

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

Dependencies

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

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.20 (2019-07-08)
    • Added autocomplete functionality to InputField.
  • 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.
You can’t perform that action at this time.