summaryrefslogtreecommitdiff
path: root/statusbar.go
diff options
context:
space:
mode:
authorJulian Hurst <julian.hurst92@gmail.com>2020-07-09 13:31:38 +0200
committerJulian Hurst <julian.hurst92@gmail.com>2020-07-09 13:31:38 +0200
commit87811aa097b05e271b2e60d14294eaf5534d197f (patch)
tree0fa8ecc5c5387fea9a5bf64aed7aa647079806c1 /statusbar.go
parentaa64718fd594344e089d34d2c9a077841165f92c (diff)
downloadstatusbar-87811aa097b05e271b2e60d14294eaf5534d197f.tar.gz
Add battery support
Diffstat (limited to 'statusbar.go')
-rw-r--r--statusbar.go42
1 files changed, 42 insertions, 0 deletions
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 {