56 lines
950 B
Go
56 lines
950 B
Go
package widgets
|
|
|
|
import (
|
|
"image"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
ui "github.com/gizak/termui/v3"
|
|
)
|
|
|
|
type StatusBar struct {
|
|
ui.Block
|
|
}
|
|
|
|
func NewStatusBar() *StatusBar {
|
|
self := &StatusBar{*ui.NewBlock()}
|
|
self.Border = false
|
|
return self
|
|
}
|
|
|
|
func (self *StatusBar) Draw(buf *ui.Buffer) {
|
|
self.Block.Draw(buf)
|
|
|
|
hostname, err := os.Hostname()
|
|
if err != nil {
|
|
log.Printf("could not get hostname: %v", err)
|
|
return
|
|
}
|
|
buf.SetString(
|
|
hostname,
|
|
ui.NewStyle(ui.ColorWhite),
|
|
image.Pt(self.Inner.Min.X, self.Inner.Min.Y+(self.Inner.Dy()/2)),
|
|
)
|
|
|
|
currentTime := time.Now()
|
|
formattedTime := currentTime.Format("15:04:05")
|
|
buf.SetString(
|
|
formattedTime,
|
|
ui.NewStyle(ui.ColorWhite),
|
|
image.Pt(
|
|
self.Inner.Min.X+(self.Inner.Dx()/2)-len(formattedTime)/2,
|
|
self.Inner.Min.Y+(self.Inner.Dy()/2),
|
|
),
|
|
)
|
|
|
|
buf.SetString(
|
|
"gotop",
|
|
ui.NewStyle(ui.ColorWhite),
|
|
image.Pt(
|
|
self.Inner.Max.X-6,
|
|
self.Inner.Min.Y+(self.Inner.Dy()/2),
|
|
),
|
|
)
|
|
}
|