aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/i3blocks/.local/bin/i3blocks-net
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-10-07 13:30:57 -0500
committerToby Vincent <tobyv@tobyvin.dev>2024-10-07 13:30:57 -0500
commite842d34c9ae3a48a78bbcaa5b9fc58216e1d49a6 (patch)
tree9b3b9c8883f5536fddf736a93c29e3dc1dab9446 /i3blocks/.local/bin/i3blocks-net
parent59dcb091288d60e8c2d2e352711b72f4beeb1ddf (diff)
refactor(i3blocks): move i3blocks to bin dir
Diffstat (limited to 'i3blocks/.local/bin/i3blocks-net')
-rwxr-xr-xi3blocks/.local/bin/i3blocks-net54
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()