From 24e3024b5741b16cb4cb84fc5ba20eab24d64e5d Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 14 Feb 2026 20:00:01 +0100 Subject: [PATCH] fix(brightness): refresh sysfs cache on hotplug (#1674) * fix(brightness): refresh sysfs cache on hotplug The SysfsBackend used a cache that was never refreshed on display hot plug, causing new backlight devices to not appear in IPC until restart. This adds Rescan() to SysfsBackend and calls it in Manager.Rescan(), matching the behavior of DDCBackend. Fixes: hotplugged external monitor brightness control via IPC * make fmt --------- Co-authored-by: bbedward --- core/internal/server/brightness/manager.go | 6 ++++++ core/internal/server/brightness/sysfs.go | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/core/internal/server/brightness/manager.go b/core/internal/server/brightness/manager.go index c88b6a51..4cf7dd49 100644 --- a/core/internal/server/brightness/manager.go +++ b/core/internal/server/brightness/manager.go @@ -96,6 +96,12 @@ func (m *Manager) Rescan() { } } + if m.sysfsReady && m.sysfsBackend != nil { + if err := m.sysfsBackend.Rescan(); err != nil { + log.Debugf("Sysfs rescan failed: %v", err) + } + } + m.updateState() } diff --git a/core/internal/server/brightness/sysfs.go b/core/internal/server/brightness/sysfs.go index 6ba8c68e..1ff38f9a 100644 --- a/core/internal/server/brightness/sysfs.go +++ b/core/internal/server/brightness/sysfs.go @@ -101,6 +101,10 @@ func shouldSuppressDevice(name string) bool { return false } +func (b *SysfsBackend) Rescan() error { + return b.scanDevices() +} + func (b *SysfsBackend) GetDevices() ([]Device, error) { devices := make([]Device, 0)