From e842d34c9ae3a48a78bbcaa5b9fc58216e1d49a6 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Mon, 7 Oct 2024 13:30:57 -0500 Subject: refactor(i3blocks): move i3blocks to bin dir --- i3blocks/.local/bin/i3blocks-net | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 i3blocks/.local/bin/i3blocks-net (limited to 'i3blocks/.local/bin/i3blocks-net') diff --git a/i3blocks/.local/bin/i3blocks-net b/i3blocks/.local/bin/i3blocks-net new file mode 100755 index 0000000..2faa071 --- /dev/null +++ b/i3blocks/.local/bin/i3blocks-net @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 + +import glob +import os +from enum import Enum + + +class IFaceType(Enum): + ETHERNET = "\U000f0200" + WIRELESS = "\U000f05a9" + TUNNEL = "\U000f0582" + UNKNOWN = "" + + @staticmethod + def from_path(path: str): + try: + with open(os.path.join(path, "type"), "r") as f: + match int(f.readline()): + case 1 if os.path.isdir( + os.path.join(path, "wireless") + ) or os.path.islink(os.path.join(path, "phy80211")): + return IFaceType.WIRELESS + case 1: + return IFaceType.ETHERNET + case 65534: + return IFaceType.TUNNEL + case _: + raise ValueError("Invalid interface type") + except Exception: + return IFaceType.UNKNOWN + + +class IFace: + def __init__(self, path: str): + self.path = path + self.name = os.path.basename(path) + self._type = IFaceType.from_path(path) + + def __str__(self): + return self._type.value + + +def main(): + ifaces = [] + for net in glob.glob("/sys/class/net/*"): + iface = IFace(net) + if iface.name != "lo" and iface._type != IFaceType.UNKNOWN: + ifaces.append(str(iface)) + + print(f" {" ".join(ifaces)} \n") + + +if __name__ == "__main__": + main() -- cgit v1.2.3-70-g09d2