summaryrefslogtreecommitdiffstats
path: root/widgets/battery.go
diff options
context:
space:
mode:
authorSean E. Russell <ser@ser1.net>2020-02-20 19:26:34 -0600
committerSean E. Russell <ser@ser1.net>2020-02-20 19:26:34 -0600
commitaf40172604692131386a04d7d9f59435e6974983 (patch)
treeb52a89f8343c866f193c380a5aa428aa9f5deb67 /widgets/battery.go
parent7b09a00230e059129e010039a159ef9ce7aecc11 (diff)
parentcbad9c124ed077c9d9c0fe1abb258edaddb7df0b (diff)
Merge branch 'master' into v3.4.x
Diffstat (limited to 'widgets/battery.go')
-rw-r--r--widgets/battery.go21
1 files changed, 19 insertions, 2 deletions
diff --git a/widgets/battery.go b/widgets/battery.go
index fb28971..b47cac4 100644
--- a/widgets/battery.go
+++ b/widgets/battery.go
@@ -73,8 +73,25 @@ func (b *BatteryWidget) Scale(i int) {
func (self *BatteryWidget) update() {
batteries, err := battery.GetAll()
if err != nil {
- log.Printf("failed to get battery info: %v", err)
- return
+ switch errt := err.(type) {
+ case battery.ErrFatal:
+ log.Printf("fatal error fetching battery info: %v", err)
+ return
+ case battery.Errors:
+ batts := make([]*battery.Battery, 0)
+ for i, e := range errt {
+ if e == nil {
+ batts = append(batts, batteries[i])
+ } else {
+ log.Printf("recoverable error fetching battery info; skipping battery: %v", e)
+ }
+ }
+ if len(batts) < 1 {
+ log.Print("no usable batteries found")
+ return
+ }
+ batteries = batts
+ }
}
for i, battery := range batteries {
id := makeId(i)