From fc07611b3b6cf091b8fb64ee24225edb2b89df7f Mon Sep 17 00:00:00 2001 From: Klesh Wong Date: Wed, 20 May 2026 23:58:13 +0800 Subject: [PATCH] fix(osd): ensure OSD appears on all monitors after resume (#2453) Some monitors, especially cheaper models, are slow to power on after sleep and may not be present in Quickshell.screens when onScreensChanged is triggered. This change adds a 3-second delay before updating currentOSDsByScreen to ensure all screens are detected, mitigating the issue of OSDs not appearing on certain monitors after resume. Co-authored-by: Klesh Wong --- quickshell/Common/OSDManager.qml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/quickshell/Common/OSDManager.qml b/quickshell/Common/OSDManager.qml index 06bc07ff..a2d98f34 100644 --- a/quickshell/Common/OSDManager.qml +++ b/quickshell/Common/OSDManager.qml @@ -9,9 +9,11 @@ Singleton { property var currentOSDsByScreen: ({}) - Connections { - target: Quickshell - function onScreensChanged() { + Timer { + id: screensChangedDelayTimer + interval: 3000 // 3 seconds + repeat: false + onTriggered: { const activeNames = {}; for (let i = 0; i < Quickshell.screens.length; i++) activeNames[Quickshell.screens[i].name] = true; @@ -22,6 +24,12 @@ Singleton { } } } + Connections { + target: Quickshell + function onScreensChanged() { + screensChangedDelayTimer.restart(); + } + } function showOSD(osd) { if (!osd || !osd.screen)