quickshell: fix network widget not updating after actions

Reset state before each poll so disconnected state is detected.
Immediately update icon on disconnect, and trigger a delayed
re-poll (2s) after connect/disconnect actions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
rope 2026-05-26 16:59:26 +01:00
parent 24b27d02fc
commit d474f87df5

View file

@ -559,7 +559,14 @@ in
running: true running: true
repeat: true repeat: true
triggeredOnStart: true triggeredOnStart: true
onTriggered: netProc.running = true onTriggered: netWidget.refreshNet()
}
function refreshNet() {
netWidget.netState = "disconnected";
netWidget.netConn = "";
netWidget.netIcon = netWidget.netType === "wifi" ? "\u{f05aa}" : "\u{f0201}";
netProc.running = true;
} }
Process { Process {
@ -581,11 +588,6 @@ in
netWidget.netConn = conn; netWidget.netConn = conn;
netWidget.netType = type; netWidget.netType = type;
netWidget.netIcon = type === "wifi" ? "\u{f05a9}" : "\u{f0200}"; 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}";
} }
} }
} }
@ -602,6 +604,12 @@ in
property var wifiNetworks: [] property var wifiNetworks: []
property string netDevice: "" property string netDevice: ""
Timer {
id: netRefreshDelay
interval: 2000
onTriggered: netWidget.refreshNet()
}
Process { Process {
id: wifiScanProc id: wifiScanProc
command: ["${pkgs.networkmanager}/bin/nmcli", "-t", "-f", "SSID,SIGNAL,SECURITY,IN-USE", "device", "wifi", "list", "--rescan", "auto"] command: ["${pkgs.networkmanager}/bin/nmcli", "-t", "-f", "SSID,SIGNAL,SECURITY,IN-USE", "device", "wifi", "list", "--rescan", "auto"]
@ -1020,7 +1028,11 @@ in
onClicked: { onClicked: {
netDisconnectProc.targetDevice = netWidget.netDevice; netDisconnectProc.targetDevice = netWidget.netDevice;
netDisconnectProc.running = true; netDisconnectProc.running = true;
netWidget.netState = "disconnected";
netWidget.netConn = "";
netWidget.netIcon = "\u{f05aa}";
netDropdown.visible = false; netDropdown.visible = false;
netRefreshDelay.start();
} }
} }
} }
@ -1106,6 +1118,7 @@ in
if (!modelData.active) { if (!modelData.active) {
wifiConnectProc.targetSsid = modelData.ssid; wifiConnectProc.targetSsid = modelData.ssid;
wifiConnectProc.running = true; wifiConnectProc.running = true;
netRefreshDelay.start();
} }
netDropdown.visible = false; netDropdown.visible = false;
} }