wmtools/wlan.nim

65 lines
1.5 KiB
Nim

import base
import std/[os,osproc,strutils,sequtils]
const default_bg = purple
const default_fg = white
const wlan_nics: seq[string] = @["wlan0"]
const get_ssid_cmd = "iwgetid -r"
const mng_cmd = "alacritty -e nmtui-connect"
proc getSsid(): string =
let ssid = execCmdEx(get_ssid_cmd)
return strip(ssid.output)
proc getSignalQuality(): string =
let wl = readFile("/proc/net/wireless")
let ln = splitLines(wl)[2]
let links = split(ln," ")
var qual = strip(links[1])
qual = replace(qual,".","")
return "[" & qual & "]"
proc getWifi(nic: string): (string, string) =
let ssid = getSsid()
if ssid == "":
return ("disconnected", "disconnected")
let quality = getSignalQuality()
return (ssid, quality)
proc getObject(): Info =
var data = newInfo("WiFi")
data.border = purple
data.selected_bg = default_bg
data.selected_fg = default_fg
return data
proc getWifiInfo*(nics: seq[string]) =
var lst: seq[string] = @[]
for nic in nics:
let (essid, quality) = getWifi(nic)
lst.add(nic & ":" & quality & " " & essid)
let data = getObject()
let args = concat(lst,@["---", "manage","exit"])
let output = outputData(data, args)
case output:
of "manage":
discard execCmd(mng_cmd)
of "exit":
return
of "---":
return
proc main() =
var my_nics: seq[string] = @[]
for nic in wlan_nics:
if dirExists("/sys/class/net/" & nic):
my_nics.add(nic)
if len(my_nics) > 0:
getWifiInfo(my_nics)
else:
switchTwmMode()
echo "No WLAN"
if isMainModule:
main()