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.
 
 
Trevor Slocum be22f3b33c Release v1.5.7 3 weeks ago
demos Add Application.HandlePanic 2 months ago
.gitignore Document TextView region tag fix 2 months ago
CHANGELOG Release v1.5.7 3 weeks ago
CONTRIBUTING.md Add code.rocketnine.space migration notice 6 months ago
DESIGN.md Add code.rocketnine.space migration notice 6 months ago
FORK.md Add Application.Draw change to FORK.md 2 months ago
LICENSE Document TextView region tag fix 2 months ago
Makefile chore: Add makefile and use in `gitlab-ci.yml` 1 year ago
README.md Add Button.SetCursorRune and CheckBox.SetCursorRune 4 months ago
ansi.go Bugfixes in ANSI escape sequence handling as well as TextView, fixes #320, fixes #344 1 year ago
application.go Draw application after updating root primitive via Application.SetRoot 1 month ago
borders.go Fork tview as cview 2 years ago
box.go Document how to prevent screen artifacts when using SetBackgroundTransparent 9 months ago
box_test.go Add comments to tests 1 year ago
button.go Improve Button cursor positioning 4 months ago
button_test.go Add comments to tests 1 year ago
checkbox.go Add Button.SetCursorRune and CheckBox.SetCursorRune 4 months ago
checkbox_test.go Add comments to tests 1 year ago
contextmenu.go Rename SetBorderPadding and GetBorderPadding as SetPadding and GetPadding 11 months ago
cview.svg Update presentation demo recording 11 months ago
doc.go Add TabbedPanels to doc.go 3 months ago
doc_test.go Add Application.HandlePanic 2 months ago
dropdown.go Add Button.SetCursorRune and CheckBox.SetCursorRune 4 months ago
flex.go Fill empty space in Flex with invisible Box 3 months ago
focus.go Add FocusManager 11 months ago
form.go Add Button.SetCursorRune and CheckBox.SetCursorRune 4 months ago
frame.go Add SetVisible and GetVisible to all widgets 11 months ago
go.mod runewidth: Create lookup table 3 weeks ago
go.sum runewidth: Create lookup table 3 weeks ago
grid.go Fix passing mouse events to Grid items 3 months ago
inputfield.go Fix drawing InputField cursor outside of the field 2 months ago
keys.go Add code.rocketnine.space migration notice 6 months ago
list.go Update List, Table and TreeView to not handle Tab or Backtab 4 months ago
list_test.go Remove return values from methods which return their primitive (breaks chaining) 12 months ago
modal.go Add Modal.SetButtonsAlign and Modal.SetTextAlign 2 months ago
mouse.go Print text using []byte instead of string, calculate string width using runewidth instead of uniseg 12 months ago
panels.go Preserve order of panels when updating panel 9 months ago
primitive.go Allow hiding form items 11 months ago
progressbar.go Add SetVisible and GetVisible to all widgets 11 months ago
progressbar_test.go Add comments to tests 1 year ago
semigraphics.go Upgrade tcell to v2 1 year ago
slider.go Improve Button cursor positioning 4 months ago
styles.go Add Button.SetCursorRune and CheckBox.SetCursorRune 4 months ago
tabbedpanels.go Add TextView highlight color options 4 months ago
table.go Update List, Table and TreeView to not handle Tab or Backtab 4 months ago
table_test.go Store ListItem text as []byte instead of string 12 months ago
textview.go Fixed missed tag at EOL in TextView 2 months ago
textview_test.go Remove return values from methods which return their primitive (breaks chaining) 12 months ago
treeview.go Update List, Table and TreeView to not handle Tab or Backtab 4 months ago
treeview_test.go Add comments to tests 1 year ago
util.go runewidth: Create lookup table 3 weeks ago
util_test.go Remove return values from methods which return their primitive (breaks chaining) 12 months ago
window.go Use SetRect to position Windows 11 months ago
windowmanager.go Fix WindowManager background not being drawn 10 months ago

README.md

cview - Terminal-based user interface toolkit

GoDoc Donate

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

Demo

ssh cview.rocketnine.space -p 20000

Recording of presentation demo

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.

Applications

A list of applications powered by cview is available via pkg.go.dev.

Installation

go get code.rocketnine.space/tslocum/cview

Hello World

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

package main

import (
	"code.rocketnine.space/tslocum/cview"
)

func main() {
	app := cview.NewApplication()

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

Examples are available via godoc and in the demos directory.

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

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