Fix Battery widget panic (#100)
This commit is contained in:
parent
daf06909db
commit
c5e9511157
|
@ -8,38 +8,30 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
"github.com/distatus/battery"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
)
|
||||
|
||||
type Batt struct {
|
||||
*ui.LineGraph
|
||||
Count int // number of batteries
|
||||
interval time.Duration
|
||||
}
|
||||
|
||||
func NewBatt(renderLock *sync.RWMutex, horizontalScale int) *Batt {
|
||||
batts, err := battery.GetAll()
|
||||
self := &Batt{
|
||||
LineGraph: ui.NewLineGraph(),
|
||||
Count: len(batts),
|
||||
interval: time.Minute,
|
||||
}
|
||||
self.Title = "Battery Status"
|
||||
self.Title = " Battery Status "
|
||||
self.HorizontalScale = horizontalScale
|
||||
if err != nil {
|
||||
log.Printf("failed to get battery info from system: %v", err)
|
||||
}
|
||||
for i, b := range batts {
|
||||
pc := math.Abs(b.Current/b.Full) * 100.0
|
||||
self.Data[mkId(i)] = []float64{pc}
|
||||
}
|
||||
|
||||
// intentional duplicate
|
||||
self.update()
|
||||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
renderLock.RLock()
|
||||
self.update()
|
||||
renderLock.RUnlock()
|
||||
|
@ -57,6 +49,7 @@ func (self *Batt) update() {
|
|||
batts, err := battery.GetAll()
|
||||
if err != nil {
|
||||
log.Printf("failed to get battery info from system: %v", err)
|
||||
return
|
||||
}
|
||||
for i, b := range batts {
|
||||
n := mkId(i)
|
||||
|
|
|
@ -6,8 +6,9 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
psCPU "github.com/shirou/gopsutil/cpu"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
)
|
||||
|
||||
type CPU struct {
|
||||
|
@ -64,8 +65,7 @@ func NewCPU(renderLock *sync.RWMutex, interval time.Duration, horizontalScale in
|
|||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
self.update()
|
||||
}
|
||||
}()
|
||||
|
|
|
@ -8,9 +8,10 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
psDisk "github.com/shirou/gopsutil/disk"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
"github.com/cjbassi/gotop/src/utils"
|
||||
psDisk "github.com/shirou/gopsutil/disk"
|
||||
)
|
||||
|
||||
type Partition struct {
|
||||
|
@ -44,8 +45,7 @@ func NewDisk(renderLock *sync.RWMutex) *Disk {
|
|||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
renderLock.RLock()
|
||||
self.update()
|
||||
renderLock.RUnlock()
|
||||
|
|
|
@ -6,9 +6,10 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
psMem "github.com/shirou/gopsutil/mem"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
"github.com/cjbassi/gotop/src/utils"
|
||||
psMem "github.com/shirou/gopsutil/mem"
|
||||
)
|
||||
|
||||
type Mem struct {
|
||||
|
@ -29,8 +30,7 @@ func NewMem(renderLock *sync.RWMutex, interval time.Duration, horizontalScale in
|
|||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
renderLock.RLock()
|
||||
self.update()
|
||||
renderLock.RUnlock()
|
||||
|
|
|
@ -6,14 +6,16 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
psNet "github.com/shirou/gopsutil/net"
|
||||
|
||||
ui "github.com/cjbassi/gotop/src/termui"
|
||||
"github.com/cjbassi/gotop/src/utils"
|
||||
psNet "github.com/shirou/gopsutil/net"
|
||||
)
|
||||
|
||||
type Net struct {
|
||||
*ui.Sparklines
|
||||
interval time.Duration
|
||||
|
||||
// used to calculate recent network activity
|
||||
prevRecvTotal uint64
|
||||
prevSentTotal uint64
|
||||
|
@ -21,10 +23,10 @@ type Net struct {
|
|||
|
||||
func NewNet(renderLock *sync.RWMutex) *Net {
|
||||
recv := ui.NewSparkline()
|
||||
recv.Data = []int{0}
|
||||
recv.Data = []int{}
|
||||
|
||||
sent := ui.NewSparkline()
|
||||
sent.Data = []int{0}
|
||||
sent.Data = []int{}
|
||||
|
||||
spark := ui.NewSparklines(recv, sent)
|
||||
self := &Net{
|
||||
|
@ -36,8 +38,7 @@ func NewNet(renderLock *sync.RWMutex) *Net {
|
|||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
renderLock.RLock()
|
||||
self.update()
|
||||
renderLock.RUnlock()
|
||||
|
|
|
@ -65,8 +65,7 @@ func NewProc(renderLock *sync.RWMutex) *Proc {
|
|||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
renderLock.RLock()
|
||||
self.update()
|
||||
renderLock.RUnlock()
|
||||
|
|
|
@ -40,8 +40,7 @@ func NewTemp(renderLock *sync.RWMutex, fahrenheit bool) *Temp {
|
|||
self.update()
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(self.interval)
|
||||
for range ticker.C {
|
||||
for range time.NewTicker(self.interval).C {
|
||||
renderLock.RLock()
|
||||
self.update()
|
||||
renderLock.RUnlock()
|
||||
|
|
Loading…
Reference in New Issue
Block a user