;(include "./windows/netWindow.yuck") (defpoll ipaddress :initial "getting info..." :interval "30s" `./scripts/netinfo.sh 3`) (defpoll interface :initial "getting info..." :interval "30s" `./scripts/netinfo.sh 1`) (defpoll nameserver :initial "getting info..." :interval "30s" `cat /etc/resolv.conf | grep "nameserver" | awk '{print $2}'`) (deflisten hostname :initial "getting info..." `cat /etc/hostname`) ; netWindow ; ---------------------------------- ; | content | ; | -------------------- | ; | | topContent | | ; | ||infobox hostname|| | ; | | | | ; | -------------------- | ; | | centerContent | | ; | | IF | IP | DNS | | ; | | | | ; | -------------------- | ; | | ; ---------------------------------- (defwidget topcontent [] (box :orientation "h" :class "topcontent" :halign "center" :valign "start" (infobox :name "Hostname:" :info hostname) )) (defwidget content [] (box :orientation "v" :class "content" :halign "end" (topcontent) (centercontent) (lowercontent) (bottomcontent))) (defwidget centercontent [] (box :orientation "h" :class "centercontent" :halign "end" :valign "start" (infobox :name "Interface:" :info interface) (infobox :name "IP Address:" :info ipaddress) (infobox :name "DNS Server:" :info nameserver) )) (defwidget lowercontent[] (box :orientation "h" :class "lowercontent" :halign "center" :valign "center" (netbox :type "Download":dev interface :speed {EWW_NET[interface].NET_DOWN}) (netbox :type "Upload":dev interface :speed {EWW_NET[interface].NET_UP}))) (defwidget bottomcontent [] (box :orientation "h" :class "bottomcontent" :halign "end" :valign "end" (nmsettings))) (defwidget infobox [name info] (box :orientation "v" :class "infobox" :halign "center" :valign "center" (infolabel :text name) (infolabel :text info))) (defwidget nmsettings [] (box :orientation "horizontal" :class "buttons" :halign "end" :valign "end" (button :onclick "pypr toggle network && hyprctl dispatch bringactivetotop" "Open Connection Editor"))) (defwidget infolabel [text] (label :text text :class "infolabel" :halign "center" :valign "center")) (defwidget netbox [type dev speed] (box :orientation "v" :class "netbox" :halign "center" :valign "center" (infolabel :text type) (netGraph :speed speed) (box :width 65 {speed / 1000000 > 0.5 ? "${round(speed / 1000000, 0)} Mb" : speed / 1000 > 0.5 ? "${round(speed / 1000, 0)} Kb" : "${round(speed, 0)} b"}))) (defwidget netGraph [speed] (graph :value speed :time-range "30s")) (defwindow network :class network_window :monitor 1 :geometry (geometry :x "20px" :y "50px" :width "560px" :height "85%" :anchor "right center") :stacking "fg" ;:reserve (struts :distance "10px" :side "top") ;;only for x11 ;:windowtype "dock" ;;only for x11 ;:wm-ignore false ;;only for x11 (content))