Skip to content

jroimartin/gocui

Repository files navigation

GOCUI - Go Console User Interface

Go Reference

Minimalist Go package aimed at creating Console User Interfaces.

Features

  • Minimalist API.
  • Views (the "windows" in the GUI) implement the interface io.ReadWriter.
  • Support for overlapping views.
  • The GUI can be modified at runtime (concurrent-safe).
  • Global and view-level keybindings.
  • Mouse support.
  • Colored text.
  • Customizable edition mode.
  • Easy to build reusable widgets, complex layouts...

Installation

Execute:

go get github.com/jroimartin/gocui

Documentation

Execute:

go doc github.com/jroimartin/gocui

Or visit pkg.go.dev to read it online.

Example

package main import ( "fmt""log""github.com/jroimartin/gocui" ) funcmain(){g, err:=gocui.NewGui(gocui.OutputNormal) iferr!=nil{log.Panicln(err) } deferg.Close() g.SetManagerFunc(layout) iferr:=g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err!=nil{log.Panicln(err) } iferr:=g.MainLoop(); err!=nil&&err!=gocui.ErrQuit{log.Panicln(err) } } funclayout(g*gocui.Gui) error{maxX, maxY:=g.Size() ifv, err:=g.SetView("hello", maxX/2-7, maxY/2, maxX/2+7, maxY/2+2); err!=nil{iferr!=gocui.ErrUnknownView{returnerr } fmt.Fprintln(v, "Hello world!") } returnnil } funcquit(g*gocui.Gui, v*gocui.View) error{returngocui.ErrQuit }

Screenshots

r2cui

_examples/demo.go

_examples/dynamic.go

About

Minimalist Go package aimed at creating Console User Interfaces.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 20

Languages