Terminal-based user interface toolkit
Go to file
Trevor Slocum 5a360ad87e Tweak window visibility changes 2020-10-19 10:15:27 -07:00
demos Update cbind 2020-10-16 11:01:25 -07:00
.gitignore Update .gitignore 2020-10-06 13:26:47 -07:00
.gitlab-ci.yml chore: Add makefile and use in `gitlab-ci.yml` 2020-09-23 20:54:48 +02:00
CHANGELOG Generalize tag stripping as StripTags 2020-10-19 09:55:07 -07:00
CONTRIBUTING.md Migrate docs to docs.rocketnine.space 2020-02-06 16:06:47 -08:00
DESIGN.md Support custom TabbedPanels tab styling 2020-10-16 13:06:09 -07:00
FORK.md Support reorienting TabbedPanels tab switcher 2020-10-19 09:31:10 -07:00
LICENSE Document TextView.GetText and GetRegionText fix 2020-07-13 14:47:10 -07:00
Makefile chore: Add makefile and use in `gitlab-ci.yml` 2020-09-23 20:54:48 +02:00
README.md Add FocusManager 2020-10-16 09:25:21 -07:00
ansi.go Bugfixes in ANSI escape sequence handling as well as TextView, fixes #320, fixes #344 2020-06-09 14:52:59 -07:00
application.go Support bracketed paste mode via tcell 2020-10-16 09:25:40 -07:00
borders.go Fork tview as cview 2019-12-30 15:18:26 -08:00
box.go Remove Application.ForceDraw 2020-10-07 21:27:30 -07:00
box_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
button.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
button_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
checkbox.go Replace FormItem.SetAttributes with individual methods 2020-10-09 08:37:54 -07:00
checkbox_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
contextmenu.go Add FocusManager 2020-10-16 09:25:21 -07:00
cview.gif Fork tview as cview 2019-12-30 15:18:26 -08:00
doc.go Support bracketed paste mode via tcell 2020-10-16 09:25:40 -07:00
doc_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
dropdown.go Replace FormItem.SetAttributes with individual methods 2020-10-09 08:37:54 -07:00
flex.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
focus.go Add FocusManager 2020-10-16 09:25:21 -07:00
form.go Add Slider 2020-10-11 13:39:04 -07:00
frame.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
go.mod Update cbind 2020-10-16 11:01:25 -07:00
go.sum Update cbind 2020-10-16 11:01:25 -07:00
grid.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
inputfield.go Add FocusManager 2020-10-16 09:25:21 -07:00
keys.go Upgrade tcell to v2 2020-08-30 08:37:17 -07:00
list.go Add FocusManager 2020-10-16 09:25:21 -07:00
list_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
modal.go Revert WordWrap signature change 2020-10-11 17:15:33 -07:00
mouse.go Print text using []byte instead of string, calculate string width using runewidth instead of uniseg 2020-10-06 13:16:37 -07:00
panels.go Add TabbedPanels 2020-10-15 18:50:36 -07:00
primitive.go Upgrade tcell to v2 2020-08-30 08:37:17 -07:00
progressbar.go Add Slider 2020-10-11 13:39:04 -07:00
progressbar_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
semigraphics.go Upgrade tcell to v2 2020-08-30 08:37:17 -07:00
slider.go Fix WordWrap bounds out of range 2020-10-12 21:48:00 -07:00
styles.go Add Window and WindowManager 2020-09-24 08:09:55 -07:00
tabbedpanels.go Support reorienting TabbedPanels tab switcher 2020-10-19 09:31:10 -07:00
table.go Clarify that Table rows must each have the same number of columns 2020-10-14 13:51:50 -07:00
table_test.go Store ListItem text as []byte instead of string 2020-10-06 18:19:40 -07:00
textview.go Generalize tag stripping as StripTags 2020-10-19 09:55:07 -07:00
textview_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
treeview.go Make printWithStyle public and rename as PrintStyle 2020-10-13 10:17:33 -07:00
treeview_test.go Add comments to tests 2020-04-28 14:58:37 -07:00
util.go Generalize tag stripping as StripTags 2020-10-19 09:55:07 -07:00
util_test.go Remove return values from methods which return their primitive (breaks chaining) 2020-10-07 16:35:21 -07:00
window.go Tweak window visibility changes 2020-10-19 10:15:27 -07:00
windowmanager.go Tweak window visibility changes 2020-10-19 10:15:27 -07:00

README.md

cview - Terminal-based user interface toolkit

GoDoc CI status Donate

This package is a fork of tview. See FORK.md for more information.

Warning: Breaking changes may be added to cview without bumping its major version. The largest changes have been made. Smaller breaking changes may continue to be made where backwards compatibility is not possible. Changes are listed in FORK.md.

Demo

ssh cview.rocketnine.space -p 20000

Recording of presentation demo

Additional examples are listed on pkg.go.dev.

Features

Available widgets:

  • Input forms (including input/password fields, drop-down selections, checkboxes, and buttons)
  • Navigable multi-color text views
  • Selectable lists with context menus
  • Modal dialogs
  • Horizontal and vertical progress bars
  • Grid, Flexbox and tabbed panel layouts
  • Sophisticated navigable table views
  • Flexible tree views
  • Draggable and resizable windows
  • An application wrapper

Widgets may be customized and extended to suit any application.

Mouse support is available.

Installation

go get gitlab.com/tslocum/cview

Hello World

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

package main

import (
	"gitlab.com/tslocum/cview"
)

func main() {
	app := cview.NewApplication()
	
	box := cview.NewTextView()
	box.SetBorder(true)
	box.SetTitle("Hello, world!")
	box.SetText("Lorem ipsum dolor sit amet")
	
	app.SetRoot(box, true)
	if err := app.Run(); err != nil {
		panic(err)
	}
}

Examples are available via godoc and in the "demos" subdirectory.

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

Documentation

Package documentation is available via godoc.

An introduction tutorial is also available.

Dependencies

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

Support

CONTRIBUTING.md describes how to share issues, suggestions and patches (pull requests).