Rich interactive widgets for terminal-based UIs written in Go
Go
Switch branches/tags
Nothing to show
Latest commit 4db30f9 Jan 17, 2018 @rivo rivo "FieldLength" is now "FieldWidth" everywhere for clarity and consiste…
…ncy. Sorry for this breaking change. It is better in the long run.
Permalink
Failed to load latest commit information.
demos "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
CODE_OF_CONDUCT.md Added a contact link to code of conduct. Jan 12, 2018
LICENSE.txt First commit. Some basic functionality. Publishing to GitHub now. Dec 15, 2017
README.md Added color tag functionality to all strings. Resolves #25 Jan 17, 2018
application.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
box.go Added color tag functionality to all strings. Resolves #25 Jan 17, 2018
button.go Added color tag functionality to all strings. Resolves #25 Jan 17, 2018
checkbox.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
doc.go Added color tag functionality to all strings. Resolves #25 Jan 17, 2018
dropdown.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
flex.go Flex must call Box's Draw() function first. Fixes #26 Jan 14, 2018
focusable.go Added list, improved existing primitives, and fixed a bunch of bugs. Dec 16, 2017
form.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
frame.go Added links to Wiki to documentation. Also replaced screenshot with G… Jan 7, 2018
inputfield.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
list.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
modal.go Added color tag functionality to all strings. Resolves #25 Jan 17, 2018
pages.go Added links to Wiki to documentation. Also replaced screenshot with G… Jan 7, 2018
primitive.go All primitives now offer a way to intercept all key events sent to th… Jan 14, 2018
styles.go Added Styles variable with default colors for primitives. Jan 10, 2018
table.go Added color tag functionality to all strings. Resolves #25 Jan 17, 2018
textview.go "FieldLength" is now "FieldWidth" everywhere for clarity and consiste… Jan 17, 2018
tview.gif Added links to Wiki to documentation. Also replaced screenshot with G… Jan 7, 2018
util.go Added color tag functionality to all strings. Resolves #25 Jan 17, 2018

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
  • Selectable lists
  • 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).

Your Feedback

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

Releases

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