57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/gizak/termui"
|
|
"github.com/gizak/termui/debug"
|
|
)
|
|
|
|
func main() {
|
|
// run as client
|
|
if len(os.Args) > 1 {
|
|
fmt.Print(debug.ConnectAndListen())
|
|
return
|
|
}
|
|
|
|
// run as server
|
|
go func() { panic(debug.ListenAndServe()) }()
|
|
|
|
if err := termui.Init(); err != nil {
|
|
panic(err)
|
|
}
|
|
defer termui.Close()
|
|
|
|
termui.UseTheme("helloworld")
|
|
b := termui.NewBlock()
|
|
b.Width = 20
|
|
b.Height = 30
|
|
b.BorderLabel = "[HELLO](fg-red,bg-white) [WORLD](fg-blue,bg-green)"
|
|
|
|
termui.SendBufferToRender(b)
|
|
|
|
termui.Handle("/sys", func(e termui.Event) {
|
|
k, ok := e.Data.(termui.EvtKbd)
|
|
debug.Logf("->%v\n", e)
|
|
if ok && k.KeyStr == "q" {
|
|
termui.StopLoop()
|
|
}
|
|
})
|
|
|
|
termui.Handle("/timer/1s", func(e termui.Event) {
|
|
//debug.Logf("<-%v\n", e)
|
|
t := e.Data.(termui.EvtTimer)
|
|
|
|
if t.Count%2 == 0 {
|
|
b.BorderLabel = "[HELLO](fg-red,bg-green) [WORLD](fg-blue,bg-white)"
|
|
} else {
|
|
b.BorderLabel = "[HELLO](fg-blue,bg-white) [WORLD](fg-red,bg-green)"
|
|
}
|
|
|
|
termui.SendBufferToRender(b)
|
|
|
|
})
|
|
termui.Loop()
|
|
}
|