added network
This commit is contained in:
parent
f17a160450
commit
d0142a966b
2 changed files with 0 additions and 79 deletions
|
@ -1,13 +0,0 @@
|
|||
# Package
|
||||
|
||||
version = "0.1.0"
|
||||
author = "Paul Wilde"
|
||||
description = "Display NIC IP address and link to manage NICs"
|
||||
license = "GPL-3.0-or-later"
|
||||
srcDir = "src"
|
||||
bin = @["netwurrk"]
|
||||
|
||||
|
||||
# Dependencies
|
||||
|
||||
requires "nim >= 1.6.6"
|
|
@ -1,66 +0,0 @@
|
|||
import ../../globurrl
|
||||
import std/[os,osproc,strutils,sequtils]
|
||||
|
||||
const default_fg = black
|
||||
const default_bg = purple
|
||||
const mng_cmd = "alacritty -e nmtui-connect"
|
||||
const nics: seq[string] = @["wlan0","bridge0", "enp3s0","wlp2s0","enp0s20f0u3"]
|
||||
|
||||
proc getIP(nic: string): string =
|
||||
let cmd = "ifconfig " & nic & " | grep inet | awk -F\" \" '{print $2}' | head -1 | awk '{print $1}'"
|
||||
let ip = execCmdEx(cmd)
|
||||
return strip(ip.output)
|
||||
|
||||
proc getOnlineState(nic: string): string =
|
||||
try:
|
||||
let oper = readFile("/sys/class/net/" & nic & "/operstate")
|
||||
let state = strip(oper)
|
||||
return "[" & state & "]"
|
||||
except:
|
||||
echo "Error getting operstate for " & nic & " : ", getCurrentExceptionMsg()
|
||||
return ""
|
||||
|
||||
proc getConnState(nic: string): (string, string) =
|
||||
let state = getOnlineState(nic)
|
||||
let ip = getIP(nic)
|
||||
if state == "[down]" or ip == "":
|
||||
return ("disconnected", state)
|
||||
return (ip, state)
|
||||
|
||||
proc getObject(): Info =
|
||||
var data = newInfo("Netwurrk")
|
||||
data.selected_bg = default_bg
|
||||
data.selected_fg = default_fg
|
||||
# i3bar stuff
|
||||
data.border = default_bg
|
||||
return data
|
||||
|
||||
proc getNetInfo*(my_nics: seq[string]) =
|
||||
var my_nic_states: seq[string] = @[]
|
||||
for nic in my_nics:
|
||||
let (ip, state) = getConnState(nic)
|
||||
my_nic_states.add(nic & ":" & state & " " & ip)
|
||||
let data = getObject()
|
||||
let args = concat(my_nic_states,@["manage"])
|
||||
let option = outputData(data, args)
|
||||
if option in my_nic_states:
|
||||
discard execCmd(mng_cmd)
|
||||
case option:
|
||||
of "manage":
|
||||
discard execCmd(mng_cmd)
|
||||
|
||||
proc getNics*(): seq[string] =
|
||||
var my_nics: seq[string] = @[]
|
||||
for nic in os.walkDir("/sys/class/net/"):
|
||||
let n = replace(nic.path, "/sys/class/net/", "")
|
||||
my_nics.add(n)
|
||||
|
||||
if len(my_nics) > 0:
|
||||
return my_nics
|
||||
return @["no-nic"]
|
||||
|
||||
proc main() =
|
||||
getNetInfo(getNics())
|
||||
|
||||
if isMainModule:
|
||||
main()
|
Loading…
Reference in a new issue