diff --git a/ping-package.go b/ping-package.go index 8957047..84cf75e 100644 --- a/ping-package.go +++ b/ping-package.go @@ -20,6 +20,13 @@ var ( Host = flag.String("host", "google.com", "host to ping") ) +//goland:noinspection ALL +const ( + CritColor = "ff5050" + WarnColor = "ffbf00" + ResetColor = "{F-}" +) + type WaybarOut struct { Class string `json:"class"` Text string `json:"text"` @@ -29,31 +36,25 @@ func formatLine(stats *probing.Statistics) { if stats.PacketLoss >= 100.0 { // fontawesome/forkawesome doesn't have the fitting icon... // so this is the utf-8 icon/emoji - fmt.Println("%{F#ff7070}🚫") + fmt.Printf("%%{F#%s}🚫\n", CritColor) return } - var rttColor string - var packetColor string + rttColor := ResetColor + packetColor := ResetColor switch { - case stats.AvgRtt.Milliseconds() < 50: - rttColor = "%{F-}" - case stats.AvgRtt.Milliseconds() < 100: - rttColor = "%{F#e87205}" - default: - rttColor = "%{F#d60606}" + case int(stats.AvgRtt.Milliseconds()) >= *PingWarningLimit: + rttColor = fmt.Sprintf("%%{F#%s}", WarnColor) + case int(stats.AvgRtt.Milliseconds()) >= *PingCritLimit: + rttColor = fmt.Sprintf("%%{F#%s}", CritColor) } switch { - case stats.PacketLoss == 0: - packetColor = "%{F-}" - case stats.PacketLoss < 10: - packetColor = "%{F#f9dd04}" - case stats.PacketLoss < 25: - packetColor = "%{F#e87205}" - default: - packetColor = "%{F#d60606}" + case int(math.Round(stats.PacketLoss)) >= *PacketLossWarnLimit: + packetColor = fmt.Sprintf("%%{F#%s}", WarnColor) + case int(math.Round(stats.PacketLoss)) >= *PacketLossCritLimit: + packetColor = fmt.Sprintf("%%{F#%s}", CritColor) } fmt.Printf("%s\uE4E2 %dms %s\uF1B2 %d%%\n", rttColor, stats.AvgRtt.Milliseconds(), packetColor, int(math.Round(stats.PacketLoss)))