diff options
| -rw-r--r-- | statusbar.conf | 1 | ||||
| -rw-r--r-- | statusbar.go | 72 |
2 files changed, 39 insertions, 34 deletions
diff --git a/statusbar.conf b/statusbar.conf index 7163597..197383c 100644 --- a/statusbar.conf +++ b/statusbar.conf @@ -12,6 +12,7 @@ label = "mounts: " mountpoints = [ "/", "/mnt/storage", "/mnt/storage1" ] [music] +type = "mpd" labelplaying = "▶ " labelpaused = "⏸ " labelstopped = "-" diff --git a/statusbar.go b/statusbar.go index ee1a87f..86b0310 100644 --- a/statusbar.go +++ b/statusbar.go @@ -39,6 +39,7 @@ type MusicConfig struct { LabelPlaying string `toml:"labelplaying"` LabelPaused string `toml:"labelpaused"` LabelStopped string `toml:"labelstopped"` + Type string } type ClockConfig struct { @@ -46,13 +47,13 @@ type ClockConfig struct { Format string } -func diskSizes(mounts []string) string { +func diskSizes(config MountConfig) string { var b strings.Builder var statfs syscall.Statfs_t const div = float64(1024 * 1024 * 1024) const unit = "G" sep := "" - for _, mount := range mounts { + for _, mount := range config.MountPoints { b.WriteString(sep) err := syscall.Statfs(mount, &statfs) if err != nil { @@ -66,18 +67,18 @@ func diskSizes(mounts []string) string { return b.String() } -func ips(interfaces []string, IPv4Only bool) string { +func ips(config IPConfig) string { var b strings.Builder sep := "" - for _, interfaceName := range interfaces { + for _, interfaceName := range config.Interfaces { b.WriteString(sep) b.WriteString(interfaceName) b.WriteString(": ") - if len(interfaces) > 1 { + if len(config.Interfaces) > 1 { b.WriteString(" [") } - b.WriteString(ip(interfaceName, IPv4Only)) - if len(interfaces) > 1 { + b.WriteString(ip(interfaceName, config.IPv4Only)) + if len(config.Interfaces) > 1 { b.WriteString(" ]") } sep = " " @@ -153,47 +154,50 @@ func statusMPD() int { } } -func buildClock(config Config) string { +func buildClock(config ClockConfig) string { var b strings.Builder - b.WriteString(config.Clock.Label) - b.WriteString(clock(config.Clock.Format)) + b.WriteString(config.Label) + b.WriteString(clock(config.Format)) return b.String() } -func buildIP(config Config) string { +func buildIP(config IPConfig) string { var b strings.Builder - b.WriteString(config.IP.Label) + b.WriteString(config.Label) b.WriteString("[ ") - b.WriteString(ips(config.IP.Interfaces, config.IP.IPv4Only)) + b.WriteString(ips(config)) b.WriteString(" ]") return b.String() } -func buildMounts(config Config) string { +func buildMounts(config MountConfig) string { var b strings.Builder - b.WriteString(config.Mounts.Label) + b.WriteString(config.Label) b.WriteString("[ ") - b.WriteString(diskSizes(config.Mounts.MountPoints)) + b.WriteString(diskSizes(config)) b.WriteString(" ]") return b.String() } -func buildMusic(config Config) string { +func buildMusic(config MusicConfig) 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) + switch config.Type { + case "mpd": + isMPD := true + switch statusMPD() { + case 0: + b.WriteString(config.LabelPlaying) + case 1: + b.WriteString(config.LabelPaused) + case 2: + b.WriteString(config.LabelStopped) + default: + isMPD = false + } + if isMPD { + b.WriteString(nowPlayingMPD()) + } default: - isMPD = false - } - if isMPD { - b.WriteString(nowPlayingMPD()) - b.WriteString(config.Separator) } return b.String() } @@ -220,13 +224,13 @@ func main() { for i, section := range config.Sections { switch section { case "clock": - b.WriteString(buildClock(config)) + b.WriteString(buildClock(config.Clock)) case "ip": - b.WriteString(buildIP(config)) + b.WriteString(buildIP(config.IP)) case "mounts": - b.WriteString(buildMounts(config)) + b.WriteString(buildMounts(config.Mounts)) case "music": - b.WriteString(buildMusic(config)) + b.WriteString(buildMusic(config.Music)) default: } if i < len(config.Sections) - 1 { |
