From 813f02604e38d90ffc455f6e2396ff506cf55d6a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 26 Aug 2025 20:56:32 +0700 Subject: [PATCH] network: no more polling, fix sidebar toggle enabled state --- .../quickToggles/NetworkToggle.qml | 2 +- .config/quickshell/ii/services/Network.qml | 33 ++++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/.config/quickshell/ii/modules/sidebarRight/quickToggles/NetworkToggle.qml b/.config/quickshell/ii/modules/sidebarRight/quickToggles/NetworkToggle.qml index 7492eae48..174a2c42c 100644 --- a/.config/quickshell/ii/modules/sidebarRight/quickToggles/NetworkToggle.qml +++ b/.config/quickshell/ii/modules/sidebarRight/quickToggles/NetworkToggle.qml @@ -10,7 +10,7 @@ import Quickshell.Io import Quickshell.Hyprland QuickToggleButton { - toggled: Network.networkName.length > 0 && Network.networkName != "lo" + toggled: Network.wifiEnabled buttonIcon: Network.materialSymbol onClicked: { toggleNetwork.running = true diff --git a/.config/quickshell/ii/services/Network.qml b/.config/quickshell/ii/services/Network.qml index 50bfb671f..bb8bd6e9d 100644 --- a/.config/quickshell/ii/services/Network.qml +++ b/.config/quickshell/ii/services/Network.qml @@ -13,30 +13,32 @@ Singleton { property bool wifi: true property bool ethernet: false - property int updateInterval: 1000 + + property bool wifiEnabled: false property string networkName: "" property int networkStrength property string materialSymbol: ethernet ? "lan" : - (Network.networkName.length > 0 && Network.networkName != "lo") ? ( + wifiEnabled ? ( Network.networkStrength > 80 ? "signal_wifi_4_bar" : Network.networkStrength > 60 ? "network_wifi_3_bar" : Network.networkStrength > 40 ? "network_wifi_2_bar" : Network.networkStrength > 20 ? "network_wifi_1_bar" : "signal_wifi_0_bar" ) : "signal_wifi_off" + function update() { updateConnectionType.startCheck(); + wifiStatusProcess.running = true updateNetworkName.running = true; updateNetworkStrength.running = true; } - Timer { - interval: 10 + Process { + id: subscriber running: true - repeat: true - onTriggered: { - root.update(); - interval = root.updateInterval; + command: ["nmcli", "monitor"] + stdout: SplitParser { + onRead: root.update() } } @@ -90,4 +92,19 @@ Singleton { } } } + + Process { + id: wifiStatusProcess + command: ["nmcli", "radio", "wifi"] + Component.onCompleted: running = true + environment: ({ + LANG: "C", + LC_ALL: "C" + }) + stdout: StdioCollector { + onStreamFinished: { + root.wifiEnabled = text.trim() === "enabled"; + } + } + } }