58 lines
973 B
Go
58 lines
973 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 (sb *StatusBar) Draw(buf *ui.Buffer) {
|
|
sb.Block.Draw(buf)
|
|
|
|
hostname, err := os.Hostname()
|
|
if err != nil {
|
|
log.Printf(tr.Value("error.nohostname", err.Error()))
|
|
return
|
|
}
|
|
buf.SetString(
|
|
hostname,
|
|
ui.Theme.Default,
|
|
image.Pt(sb.Inner.Min.X, sb.Inner.Min.Y+(sb.Inner.Dy()/2)),
|
|
)
|
|
|
|
currentTime := time.Now()
|
|
formattedTime := currentTime.Format("15:04:05")
|
|
buf.SetString(
|
|
formattedTime,
|
|
ui.Theme.Default,
|
|
image.Pt(
|
|
sb.Inner.Min.X+(sb.Inner.Dx()/2)-len(formattedTime)/2,
|
|
sb.Inner.Min.Y+(sb.Inner.Dy()/2),
|
|
),
|
|
)
|
|
|
|
// i, e := host.Info()
|
|
// i.Uptime // Number of seconds since boot
|
|
buf.SetString(
|
|
"gotop",
|
|
ui.Theme.Default,
|
|
image.Pt(
|
|
sb.Inner.Max.X-6,
|
|
sb.Inner.Min.Y+(sb.Inner.Dy()/2),
|
|
),
|
|
)
|
|
}
|