Documentation ¶
Overview ¶
Package termdash implements a terminal based dashboard.
While running, the terminal dashboard performs the following:
- Periodic redrawing of the canvas and all the widgets.
- Event based redrawing of the widgets (i.e. on Keyboard or Mouse events).
- Forwards input events to widgets and optional subscribers.
- Handles terminal resize events.
Example ¶
Example shows how to setup and run termdash with periodic redraw.
// Create the terminal. t, err := termbox.New() if err != nil { panic(err) } defer t.Close() wOpts := widgetapi.Options{ MinimumSize: fakewidget.MinimumSize, WantKeyboard: widgetapi.KeyScopeFocused, WantMouse: widgetapi.MouseScopeWidget, } // Create the container with two fake widgets. c, err := container.New( t, container.SplitVertical( container.Left( container.PlaceWidget(fakewidget.New(wOpts)), ), container.Right( container.PlaceWidget(fakewidget.New(wOpts)), ), container.SplitPercent(30), ), ) if err != nil { panic(err) } // Termdash runs until the context expires. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := Run(ctx, t, c); err != nil { panic(err) }
Output:
Example (Triggered) ¶
Example shows how to setup and run termdash with manually triggered redraw.
// Create the terminal. t, err := termbox.New() if err != nil { panic(err) } defer t.Close() wOpts := widgetapi.Options{ MinimumSize: fakewidget.MinimumSize, WantKeyboard: widgetapi.KeyScopeFocused, WantMouse: widgetapi.MouseScopeWidget, } // Create the container with a widget. c, err := container.New( t, container.PlaceWidget(fakewidget.New(wOpts)), ) if err != nil { panic(err) } // Create the controller and disable periodic redraw. ctrl, err := NewController(t, c) if err != nil { panic(err) } // Close the controller and termdash once it isn't required anymore. defer ctrl.Close() // Redraw the terminal manually. if err := ctrl.Redraw(); err != nil { panic(err) }
Output:
Index ¶
Examples ¶
Constants ¶
const DefaultRedrawInterval = 250 * time.Millisecond
DefaultRedrawInterval is the default for the RedrawInterval option.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Controller ¶ added in v0.2.0
type Controller struct {
// contains filtered or unexported fields
}
Controller controls a termdash instance. The controller instance is only valid until Close() is called. The controller is not thread-safe.
func NewController ¶ added in v0.2.0
func NewController(t terminalapi.Terminal, c *container.Container, opts ...Option) (*Controller, error)
NewController initializes termdash and returns an instance of the controller. Periodic redrawing is disabled when using the controller, the RedrawInterval option is ignored. Close the controller when it isn't needed anymore.
func (*Controller) Close ¶ added in v0.2.0
func (c *Controller) Close()
Close closes the Controller and its termdash instance.
func (*Controller) Redraw ¶ added in v0.2.0
func (c *Controller) Redraw() error
Redraw triggers redraw of the terminal.
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option is used to provide options.
func ErrorHandler ¶
ErrorHandler is used to provide a function that will be called with all errors that occur while the dashboard is running. If not provided, any errors panic the application.
func KeyboardSubscriber ¶
func KeyboardSubscriber(f func(*terminalapi.Keyboard)) Option
KeyboardSubscriber registers a subscriber for Keyboard events. Each keyboard event is forwarded to the container and the registered subscriber. The provided function must be thread-safe.
func MouseSubscriber ¶
func MouseSubscriber(f func(*terminalapi.Mouse)) Option
MouseSubscriber registers a subscriber for Mouse events. Each mouse event is forwarded to the container and the registered subscriber. The provided function must be thread-safe.
func RedrawInterval ¶
RedrawInterval sets how often termdash redraws the container and all the widgets. Defaults to DefaultRedrawInterval. Use the controller to disable the periodic redraw.
Directories ¶
Path | Synopsis |
---|---|
Package container defines a type that wraps other containers or widgets.
|
Package container defines a type that wraps other containers or widgets. |
internal
|
|
align
Package align defines constants representing types of alignment.
|
Package align defines constants representing types of alignment. |
area
Package area provides functions working with image areas.
|
Package area provides functions working with image areas. |
attrrange
Package attrrange simplifies tracking of attributes that apply to a range of items.
|
Package attrrange simplifies tracking of attributes that apply to a range of items. |
canvas
Package canvas defines the canvas that the widgets draw on.
|
Package canvas defines the canvas that the widgets draw on. |
canvas/braille
Package braille provides a canvas that uses braille characters.
|
Package braille provides a canvas that uses braille characters. |
canvas/braille/testbraille
Package testbraille provides helpers for tests that use the braille package.
|
Package testbraille provides helpers for tests that use the braille package. |
canvas/testcanvas
Package testcanvas provides helpers for tests that use the canvas package.
|
Package testcanvas provides helpers for tests that use the canvas package. |
cell
Package cell implements cell options and attributes.
|
Package cell implements cell options and attributes. |
cell/runewidth
Package runewidth is a wrapper over github.com/mattn/go-runewidth which gives different treatment to certain runes with ambiguous width.
|
Package runewidth is a wrapper over github.com/mattn/go-runewidth which gives different treatment to certain runes with ambiguous width. |
draw
Package draw provides functions that draw lines, shapes, etc on 2-D terminal like canvases.
|
Package draw provides functions that draw lines, shapes, etc on 2-D terminal like canvases. |
draw/segdisp/segment
Package segment provides functions that draw a single segment.
|
Package segment provides functions that draw a single segment. |
draw/segdisp/segment/testsegment
Package testsegment provides helpers for tests that use the segment package.
|
Package testsegment provides helpers for tests that use the segment package. |
draw/segdisp/sixteen
Package sixteen simulates a 16-segment display drawn on a canvas.
|
Package sixteen simulates a 16-segment display drawn on a canvas. |
draw/segdisp/sixteen/testsixteen
Package testsixteen provides helpers for tests that use the sixteen package.
|
Package testsixteen provides helpers for tests that use the sixteen package. |
draw/testdraw
Package testdraw provides helpers for tests that use the draw package.
|
Package testdraw provides helpers for tests that use the draw package. |
event
Package event provides a non-blocking event distribution and subscription system.
|
Package event provides a non-blocking event distribution and subscription system. |
event/eventqueue
Package eventqueue provides an unboud FIFO queue of events.
|
Package eventqueue provides an unboud FIFO queue of events. |
event/testevent
Package testevent provides utilities for tests that deal with concurrent events.
|
Package testevent provides utilities for tests that deal with concurrent events. |
keyboard
Package keyboard defines well known keyboard keys and shortcuts.
|
Package keyboard defines well known keyboard keys and shortcuts. |
mouse
Package mouse defines known mouse buttons.
|
Package mouse defines known mouse buttons. |
mouse/button
Package button implements a state machine that tracks mouse button clicks.
|
Package button implements a state machine that tracks mouse button clicks. |
numbers
Package numbers implements various numerical functions.
|
Package numbers implements various numerical functions. |
numbers/trig
Package trig implements various trigonometrical calculations.
|
Package trig implements various trigonometrical calculations. |
terminal/faketerm
Package faketerm is a fake implementation of the terminal for the use in tests.
|
Package faketerm is a fake implementation of the terminal for the use in tests. |
terminal/termbox
Package termbox implements terminal using the nsf/termbox-go library.
|
Package termbox implements terminal using the nsf/termbox-go library. |
terminalapi
Package terminalapi defines the API of all terminal implementations.
|
Package terminalapi defines the API of all terminal implementations. |
widgetapi
Package widgetapi defines the API of a widget on the dashboard.
|
Package widgetapi defines the API of a widget on the dashboard. |
Binary termdashdemo demonstrates the functionality of termdash and its various widgets.
|
Binary termdashdemo demonstrates the functionality of termdash and its various widgets. |
widgets
|
|
barchart
Package barchart implements a widget that draws multiple bars displaying values and their relative ratios.
|
Package barchart implements a widget that draws multiple bars displaying values and their relative ratios. |
barchart/barchartdemo
Binary barchartdemo displays a couple of BarChart widgets.
|
Binary barchartdemo displays a couple of BarChart widgets. |
button
Package button implements an interactive widget that can be pressed to activate.
|
Package button implements an interactive widget that can be pressed to activate. |
button/buttondemo
Binary buttondemo shows the functionality of a button widget.
|
Binary buttondemo shows the functionality of a button widget. |
donut
Package donut is a widget that displays the progress of an operation as a partial or full circle.
|
Package donut is a widget that displays the progress of an operation as a partial or full circle. |
donut/donutdemo
Binary donutdemo displays a couple of Donut widgets.
|
Binary donutdemo displays a couple of Donut widgets. |
fakewidget
Package fakewidget implements a fake widget that is useful for testing the termdash infrastructure.
|
Package fakewidget implements a fake widget that is useful for testing the termdash infrastructure. |
gauge
Package gauge implements a widget that displays the progress of an operation.
|
Package gauge implements a widget that displays the progress of an operation. |
gauge/gaugedemo
Binary gaugedemo displays a couple of Gauge widgets.
|
Binary gaugedemo displays a couple of Gauge widgets. |
linechart
Package linechart contains a widget that displays line charts.
|
Package linechart contains a widget that displays line charts. |
linechart/internal/axes
Package axes calculates the required layout and draws the X and Y axes of a line chart.
|
Package axes calculates the required layout and draws the X and Y axes of a line chart. |
linechart/internal/zoom
Package zoom contains code that tracks the current zoom level.
|
Package zoom contains code that tracks the current zoom level. |
linechart/linechartdemo
Binary linechartdemo displays a linechart widget.
|
Binary linechartdemo displays a linechart widget. |
segmentdisplay
Package segmentdisplay is a widget that displays text by simulating a segment display.
|
Package segmentdisplay is a widget that displays text by simulating a segment display. |
segmentdisplay/segmentdisplaydemo
Binary segmentdisplaydemo shows the functionality of a segment display.
|
Binary segmentdisplaydemo shows the functionality of a segment display. |
sparkline
Package sparkline is a widget that draws a graph showing a series of values as vertical bars.
|
Package sparkline is a widget that draws a graph showing a series of values as vertical bars. |
sparkline/sparklinedemo
Binary sparklinedemo displays a couple of SparkLine widgets.
|
Binary sparklinedemo displays a couple of SparkLine widgets. |
text
Package text contains a widget that displays textual data.
|
Package text contains a widget that displays textual data. |
text/textdemo
Binary textdemo displays a couple of Text widgets.
|
Binary textdemo displays a couple of Text widgets. |