Minimalist Go package aimed at creating Console User Interfaces.
- 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...
Execute:
go get github.com/jroimartin/gocuiExecute:
go doc github.com/jroimartin/gocuiOr visit pkg.go.dev to read it online.
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 }

