package ui import ( "fmt" "time" "github.com/rivo/tview" ) type statusbarLogLevel int const ( infoLevel statusbarLogLevel = iota errorLevel ) type statusbar struct { *tview.TextView duration time.Duration } func newStatusbar() *statusbar { value := statusbar{ TextView: tview.NewTextView(), duration: 5 * time.Second, } value.SetDynamicColors(true).SetBorder(false).SetBorderPadding(0, 0, 1, 1) return &value } func (s *statusbar) displayMessage(level statusbarLogLevel, message string) { go func() { var colour string switch level { case infoLevel: colour = "green" case errorLevel: colour = "red" } fmt.Fprintf(s, "[%s::b]%s[-:-:-:-]", colour, message) time.Sleep(s.duration) s.Clear() }() }