added colour output to pingclock
This commit is contained in:
parent
0821886de9
commit
8433ce8155
1 changed files with 28 additions and 11 deletions
|
@ -4,35 +4,52 @@ import std/re
|
|||
import strutils
|
||||
import i3bar_base
|
||||
|
||||
const host: string = "8.8.8.8"
|
||||
const host: string = "web.wilde.cloud"
|
||||
const cmd: string = "ping -c 1 " & host
|
||||
const time_secs: int = 4
|
||||
|
||||
let ping_re = re(r"time=[0-9.]+\sms")
|
||||
let ping_re = re(r"time=[0-9.]+")
|
||||
|
||||
proc get_pingms(): string =
|
||||
proc get_ping(): float =
|
||||
let cmdOut = execCmdEx(cmd)
|
||||
let lines = splitLines(cmdOut.output)
|
||||
let ping_line = lines[1]
|
||||
let bounds = findBounds(ping_line, ping_re)
|
||||
if bounds.first > 0:
|
||||
let ping = ping_line[bounds.first+5..bounds.last]
|
||||
return "🏓 " & ping
|
||||
return "❌ No Pong"
|
||||
return parseFloat(ping)
|
||||
return -1
|
||||
|
||||
proc getObject(ping: float): i3barData =
|
||||
var text = "🏓 " & $ping & " ms"
|
||||
var col = foreground
|
||||
if ping < 0:
|
||||
text = "❌ No Pong"
|
||||
col = yellow
|
||||
else:
|
||||
case ping:
|
||||
of 0..100:
|
||||
col = foreground
|
||||
of 101..400:
|
||||
col = yellow
|
||||
of 401..1000:
|
||||
col = alert
|
||||
else:
|
||||
col = red
|
||||
|
||||
proc getObject(ping: string): i3barData =
|
||||
let data = i3barData(
|
||||
full_text: ping,
|
||||
color: foreground,
|
||||
border: lightblue,
|
||||
full_text: text,
|
||||
color: col,
|
||||
border: blue,
|
||||
background: black
|
||||
)
|
||||
return data
|
||||
|
||||
|
||||
proc main() =
|
||||
var last_ping = ""
|
||||
var last_ping: float = 0
|
||||
while true:
|
||||
let ping = get_pingms()
|
||||
let ping = get_ping()
|
||||
if ping != last_ping:
|
||||
let data = getObject(ping)
|
||||
outputJSON(data)
|
||||
|
|
Loading…
Reference in a new issue