package status // import "hhvn.uk/hbspbar/status" import ( "time" "hhvn.uk/hbspbar/config" ) var datewait = false // TODO: seasons func date(b *Block) error { // opposite of sync.Once if !datewait { datewait = true } else { // Sleep til the next day comes around tmrw := time.Now().AddDate(0, 0, 1) tmrw = time.Date(tmrw.Year(), tmrw.Month(), tmrw.Day(), 0, 0, 0, 0, time.Local) var until time.Duration until = time.Until(tmrw) // Previously this status would sleep all the way until the next day. // This worked fine until the device entered sleep/hibernation // // Therefore a limit was added. Not the ideal solution, // as if the device is woken within config.MaxSleep, // then the date will not update until some extra time has elapsed. // // TODO: a better solution if (until > config.MaxSleep) { until = config.MaxSleep } time.Sleep(until) } _, err := b.drawText(0, config.Fg, time.Now().Local().Format("Mon 02/01")) if err != nil { return err } return nil } func init() { register("date", date, 0) }