summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Hurst <julian.hurst92@gmail.com>2020-07-06 10:14:04 +0200
committerJulian Hurst <julian.hurst92@gmail.com>2020-07-06 10:14:04 +0200
commit67f36aa565bef715358410224b5e22f5ee90b054 (patch)
treeeb28e8bce6823865b6c7e4afc9bca7b37a13b721
parent7bd48e443c180daf8525d489556b57c258a645a6 (diff)
downloadstatusbar-67f36aa565bef715358410224b5e22f5ee90b054.tar.gz
Add sections support and fix separator in ip
-rw-r--r--statusbar.conf1
-rw-r--r--statusbar.go88
2 files changed, 64 insertions, 25 deletions
diff --git a/statusbar.conf b/statusbar.conf
index b4fac2c..7163597 100644
--- a/statusbar.conf
+++ b/statusbar.conf
@@ -1,3 +1,4 @@
+sections = [ "music", "ip", "mounts", "clock" ]
delay = 10
separator = " | "
diff --git a/statusbar.go b/statusbar.go
index df619cb..ee1a87f 100644
--- a/statusbar.go
+++ b/statusbar.go
@@ -15,6 +15,7 @@ import (
)
type Config struct {
+ Sections []string
Delay int
Separator string
IP IPConfig
@@ -106,8 +107,8 @@ func ip(interfaceName string, IPv4Only bool) string {
}
if IPv4Only {
if ip.To4() != nil {
- b.WriteString(ip.String())
b.WriteString(sep)
+ b.WriteString(ip.String())
sep = " "
}
} else {
@@ -140,7 +141,7 @@ func statusMPD() int {
cmd := exec.Command("mpc", "status")
out, err := cmd.Output()
if err != nil {
- panic(err)
+ return -1
}
sOut := string(out)
if strings.Contains(sOut, "playing") {
@@ -152,6 +153,51 @@ func statusMPD() int {
}
}
+func buildClock(config Config) string {
+ var b strings.Builder
+ b.WriteString(config.Clock.Label)
+ b.WriteString(clock(config.Clock.Format))
+ return b.String()
+}
+
+func buildIP(config Config) string {
+ var b strings.Builder
+ b.WriteString(config.IP.Label)
+ b.WriteString("[ ")
+ b.WriteString(ips(config.IP.Interfaces, config.IP.IPv4Only))
+ b.WriteString(" ]")
+ return b.String()
+}
+
+func buildMounts(config Config) string {
+ var b strings.Builder
+ b.WriteString(config.Mounts.Label)
+ b.WriteString("[ ")
+ b.WriteString(diskSizes(config.Mounts.MountPoints))
+ b.WriteString(" ]")
+ return b.String()
+}
+
+func buildMusic(config Config) string {
+ var b strings.Builder
+ isMPD := true
+ switch statusMPD() {
+ case 0:
+ b.WriteString(config.Music.LabelPlaying)
+ case 1:
+ b.WriteString(config.Music.LabelPaused)
+ case 2:
+ b.WriteString(config.Music.LabelStopped)
+ default:
+ isMPD = false
+ }
+ if isMPD {
+ b.WriteString(nowPlayingMPD())
+ b.WriteString(config.Separator)
+ }
+ return b.String()
+}
+
func main() {
var configPath = "/etc/statusbar.conf"
var content []byte
@@ -171,30 +217,22 @@ func main() {
}
for true {
var b strings.Builder
- switch statusMPD() {
- case 0:
- b.WriteString(config.Music.LabelPlaying)
- case 1:
- b.WriteString(config.Music.LabelPaused)
- case 2:
- b.WriteString(config.Music.LabelStopped)
- default:
- b.WriteString("Unknown MPD status")
+ for i, section := range config.Sections {
+ switch section {
+ case "clock":
+ b.WriteString(buildClock(config))
+ case "ip":
+ b.WriteString(buildIP(config))
+ case "mounts":
+ b.WriteString(buildMounts(config))
+ case "music":
+ b.WriteString(buildMusic(config))
+ default:
+ }
+ if i < len(config.Sections) - 1 {
+ b.WriteString(config.Separator)
+ }
}
- b.WriteString(nowPlayingMPD())
- b.WriteString(config.Separator)
- b.WriteString(config.IP.Label)
- b.WriteString("[ ")
- b.WriteString(ips(config.IP.Interfaces, config.IP.IPv4Only))
- b.WriteString(" ]")
- b.WriteString(config.Separator)
- b.WriteString(config.Mounts.Label)
- b.WriteString("[ ")
- b.WriteString(diskSizes(config.Mounts.MountPoints))
- b.WriteString(" ]")
- b.WriteString(config.Separator)
- b.WriteString(config.Clock.Label)
- b.WriteString(clock(config.Clock.Format))
fmt.Println(b.String())
time.Sleep(time.Duration(config.Delay) * time.Second)
}