diff options
| author | Julian Hurst <julian.hurst92@gmail.com> | 2020-07-09 13:31:38 +0200 |
|---|---|---|
| committer | Julian Hurst <julian.hurst92@gmail.com> | 2020-07-09 13:31:38 +0200 |
| commit | 87811aa097b05e271b2e60d14294eaf5534d197f (patch) | |
| tree | 0fa8ecc5c5387fea9a5bf64aed7aa647079806c1 | |
| parent | aa64718fd594344e089d34d2c9a077841165f92c (diff) | |
| download | statusbar-87811aa097b05e271b2e60d14294eaf5534d197f.tar.gz | |
Add battery support
| -rw-r--r-- | statusbar.conf | 6 | ||||
| -rw-r--r-- | statusbar.go | 42 |
2 files changed, 47 insertions, 1 deletions
diff --git a/statusbar.conf b/statusbar.conf index 6f65e03..5bbf600 100644 --- a/statusbar.conf +++ b/statusbar.conf @@ -1,5 +1,5 @@ # from left to right -sections = [ "music", "ip", "mounts", "clock" ] +sections = [ "music", "battery", "ip", "mounts", "clock" ] delay = 10 separator = " | " @@ -25,3 +25,7 @@ port = 6600 [clock] label = "" format = "Monday 2006-01-02 15:04:05" + +[battery] +label = "battery: " +sublabel = "battery" diff --git a/statusbar.go b/statusbar.go index 1a4ecb6..93e6c22 100644 --- a/statusbar.go +++ b/statusbar.go @@ -34,6 +34,7 @@ type Config struct { Mounts MountConfig Music MusicConfig Clock ClockConfig + Battery BatteryConfig } type IPConfig struct { @@ -61,6 +62,11 @@ type ClockConfig struct { Format string } +type BatteryConfig struct { + Label string + SubLabel string `toml:"sublabel"` +} + func diskSizes(config MountConfig) string { var b strings.Builder var statfs syscall.Statfs_t @@ -260,6 +266,40 @@ func buildMusic(config MusicConfig) string { return b.String() } +func battery(config BatteryConfig) string { + var b strings.Builder + const batteryPath = "/sys/class/power_supply" + files, err := ioutil.ReadDir(batteryPath) + if err != nil { + panic(err) + } + batteryNb := 0 + separator := "" + for _, file := range files { + b.WriteString(separator) + filePath := fmt.Sprintf("%v/%v/%v", batteryPath, file.Name(), "capacity") + var capacity string + content, err := ioutil.ReadFile(filePath) + if err != nil { + content = []byte("0") + } + capacity = strings.TrimSuffix(string(content), "\n") + b.WriteString(fmt.Sprintf("%v%v: %v%%", config.SubLabel, batteryNb, capacity)) + batteryNb += 1 + separator = " " + } + return b.String() +} + +func buildBattery(config BatteryConfig) string { + var b strings.Builder + b.WriteString(config.Label) + b.WriteString("[ ") + b.WriteString(battery(config)) + b.WriteString(" ]") + return b.String() +} + func main() { var configPath = "/etc/statusbar.conf" var content []byte @@ -289,6 +329,8 @@ func main() { b.WriteString(buildMounts(config.Mounts)) case "music": b.WriteString(buildMusic(config.Music)) + case "battery": + b.WriteString(buildBattery(config.Battery)) default: } if i < len(config.Sections) - 1 { |
