diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2024-10-07 13:30:57 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2024-10-07 13:30:57 -0500 |
commit | e842d34c9ae3a48a78bbcaa5b9fc58216e1d49a6 (patch) | |
tree | 9b3b9c8883f5536fddf736a93c29e3dc1dab9446 /i3blocks/.local/bin/i3blocks-net | |
parent | 59dcb091288d60e8c2d2e352711b72f4beeb1ddf (diff) |
refactor(i3blocks): move i3blocks to bin dir
Diffstat (limited to 'i3blocks/.local/bin/i3blocks-net')
-rwxr-xr-x | i3blocks/.local/bin/i3blocks-net | 54 |
1 files changed, 54 insertions, 0 deletions
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() |