summaryrefslogtreecommitdiff
path: root/statusbar.go
diff options
context:
space:
mode:
Diffstat (limited to 'statusbar.go')
-rw-r--r--statusbar.go88
1 files changed, 63 insertions, 25 deletions
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)
}