From 3f61cb6b09f5b3f714118fda0a5088deee5f904c Mon Sep 17 00:00:00 2001 From: rope Date: Tue, 26 May 2026 12:51:21 +0100 Subject: [PATCH] quickshell: fix wifi detection and battery parsing Co-Authored-By: Claude Opus 4.6 --- settings/hyprland.nix | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/settings/hyprland.nix b/settings/hyprland.nix index e1fb1dc..5c04ff4 100644 --- a/settings/hyprland.nix +++ b/settings/hyprland.nix @@ -534,9 +534,10 @@ in width: 16 height: 30 - property string netState: "" + property string netState: "disconnected" property string netConn: "" - property string netIcon: "\u{f0b1}" + property string netType: "" + property string netIcon: "\u{f0b0}" Timer { interval: 5000 @@ -552,18 +553,21 @@ in stdout: SplitParser { onRead: data => { let fields = data.split(":"); - if (fields.length >= 4 && fields[1] === "ethernet") { - let state = fields[2]; - let conn = fields[3]; - if (state === "connected") { - netWidget.netState = "connected"; - netWidget.netConn = conn; - netWidget.netIcon = "\u{f0200}"; - } else { - netWidget.netState = "disconnected"; - netWidget.netConn = ""; - netWidget.netIcon = "\u{f0201}"; - } + if (fields.length < 4) return; + let type = fields[1]; + let state = fields[2]; + let conn = fields[3]; + if (type !== "ethernet" && type !== "wifi") return; + if (state === "connected") { + netWidget.netState = "connected"; + netWidget.netConn = conn; + netWidget.netType = type; + netWidget.netIcon = type === "wifi" ? "\u{f05a9}" : "\u{f0200}"; + } else if (netWidget.netState !== "connected") { + netWidget.netState = "disconnected"; + netWidget.netConn = ""; + netWidget.netType = type; + netWidget.netIcon = type === "wifi" ? "\u{f05aa}" : "\u{f0201}"; } } } @@ -623,9 +627,10 @@ in stdout: SplitParser { onRead: data => { let trimmed = data.trim(); - if (/^\\d+$/.test(trimmed)) { - batteryWidget.batteryLevel = parseInt(trimmed); - } else { + let num = parseInt(trimmed); + if (!isNaN(num) && num >= 0 && num <= 100) { + batteryWidget.batteryLevel = num; + } else if (trimmed.length > 0) { batteryWidget.charging = (trimmed === "Charging"); } batteryWidget.updateIcon();