From 0568f71d1bd937fcbb3c8d5f97f9ffb29d9959b8 Mon Sep 17 00:00:00 2001 From: Damocles Date: Sun, 12 Apr 2026 18:48:07 +0200 Subject: [PATCH] event-driven network/bluetooth/powerprofile via dbus-monitor + nmcli monitor --- modules/Bluetooth.qml | 17 ++++++++++++++++- modules/Network.qml | 18 +++++++++++++++++- modules/PowerProfile.qml | 17 ++++++++++++++++- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/modules/Bluetooth.qml b/modules/Bluetooth.qml index ee55f22..9b7a888 100644 --- a/modules/Bluetooth.qml +++ b/modules/Bluetooth.qml @@ -41,8 +41,23 @@ M.BarSection { onStreamFinished: root._parse(text) } } + // Event-driven: watch BlueZ DBus property changes + Process { + id: btMonitor + running: true + command: ["sh", "-c", "dbus-monitor --system \"interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',path_namespace='/org/bluez'\" 2>/dev/null"] + stdout: SplitParser { + splitMarker: "\n" + onRead: _debounce.restart() + } + } Timer { - interval: M.Modules.bluetooth.interval || 5000 + id: _debounce + interval: 500 + onTriggered: proc.running = true + } + Timer { + interval: 60000 running: true repeat: true onTriggered: proc.running = true diff --git a/modules/Network.qml b/modules/Network.qml index 47c9efc..71b4b69 100644 --- a/modules/Network.qml +++ b/modules/Network.qml @@ -68,8 +68,24 @@ M.BarSection { } } } + // Event-driven: re-poll on any network change + Process { + id: monitor + running: true + command: ["nmcli", "monitor"] + stdout: SplitParser { + splitMarker: "\n" + onRead: _debounce.restart() + } + } Timer { - interval: M.Modules.network.interval || 5000 + id: _debounce + interval: 300 + onTriggered: proc.running = true + } + // Fallback poll + Timer { + interval: 60000 running: true repeat: true onTriggered: proc.running = true diff --git a/modules/PowerProfile.qml b/modules/PowerProfile.qml index c3a2426..483ca0e 100644 --- a/modules/PowerProfile.qml +++ b/modules/PowerProfile.qml @@ -28,8 +28,23 @@ M.BarIcon { onStreamFinished: root.profile = text.trim() } } + // Event-driven: watch power-profiles-daemon DBus changes + Process { + id: ppMonitor + running: true + command: ["sh", "-c", "dbus-monitor --system \"interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',path='/net/hadess/PowerProfiles'\" 2>/dev/null"] + stdout: SplitParser { + splitMarker: "\n" + onRead: _debounce.restart() + } + } Timer { - interval: M.Modules.powerProfile.interval || 5000 + id: _debounce + interval: 300 + onTriggered: proc.running = true + } + Timer { + interval: 60000 running: true repeat: true onTriggered: proc.running = true