From b34a80b78fc5cbf8ecd1193b19fd64a71410cb80 Mon Sep 17 00:00:00 2001 From: bbedward Date: Tue, 27 Oct 2026 10:28:45 -0400 Subject: [PATCH] island: keep the dismiss layer down for notification popups fixes #3915 port 2.0 (cherry picked from commit 5442f3923b6e7ce82342d8b17f65f4d616867f37) --- quickshell/Modules/DIsland/DIslandHostWindow.qml | 2 +- quickshell/Modules/DIsland/IslandController.qml | 1 + quickshell/Modules/DIsland/IslandFreeHostWindow.qml | 2 +- quickshell/Modules/Lock/Lock.qml | 3 +++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/quickshell/Modules/DIsland/DIslandHostWindow.qml b/quickshell/Modules/DIsland/DIslandHostWindow.qml index 272c15869..5a989bcd6 100644 --- a/quickshell/Modules/DIsland/DIslandHostWindow.qml +++ b/quickshell/Modules/DIsland/DIslandHostWindow.qml @@ -40,7 +40,7 @@ Item { id: dismissWindow screen: root.screen - visible: !!root.body && root.body.expanded && !PopoutManager.screenshotActive + visible: !!root.islandController && root.islandController.outsideClickCollapses && !PopoutManager.screenshotActive color: "transparent" exclusiveZone: -1 diff --git a/quickshell/Modules/DIsland/IslandController.qml b/quickshell/Modules/DIsland/IslandController.qml index f6a462704..a7257de5f 100644 --- a/quickshell/Modules/DIsland/IslandController.qml +++ b/quickshell/Modules/DIsland/IslandController.qml @@ -496,6 +496,7 @@ QtObject { readonly property bool systemActivityActive: isSystemActivity(activeActivity) readonly property bool notificationActive: activeActivity === "notification" + readonly property bool outsideClickCollapses: expanded && !notificationActive readonly property bool notificationHeldForSystem: root.systemActivityActive && root.transientReturnActivity === "notification" readonly property bool transientActive: systemActivityActive || notificationActive readonly property bool timeoutSuspended: pointerInside || (expanded && !notificationActive) diff --git a/quickshell/Modules/DIsland/IslandFreeHostWindow.qml b/quickshell/Modules/DIsland/IslandFreeHostWindow.qml index 3b20a228b..cfe7b4cac 100644 --- a/quickshell/Modules/DIsland/IslandFreeHostWindow.qml +++ b/quickshell/Modules/DIsland/IslandFreeHostWindow.qml @@ -245,7 +245,7 @@ PanelWindow { PanelWindow { id: dismissWindow screen: root.screen - visible: root.expanded && !body.inputSuspended + visible: body.islandController.outsideClickCollapses && !body.inputSuspended color: "transparent" exclusiveZone: -1 WlrLayershell.namespace: "dms:dankisland-dismiss" diff --git a/quickshell/Modules/Lock/Lock.qml b/quickshell/Modules/Lock/Lock.qml index 30d4f1ad4..ddff32209 100644 --- a/quickshell/Modules/Lock/Lock.qml +++ b/quickshell/Modules/Lock/Lock.qml @@ -106,6 +106,7 @@ Scope { } function spawnCustomLocker() { + log.info("Handing the lock to the custom lock command instead of the session lock"); IdleService.lockPowerOffRequested = false; Quickshell.execDetached(["sh", "-c", SettingsData.customPowerActionLock]); // The custom locker manages its own surface; DMS never engages @@ -443,6 +444,8 @@ Scope { lockRetryAttempts: root.lockRetryAttempts, lockInitiatedLocally: root.lockInitiatedLocally, pendingLock: root.pendingLock, + customLocker: SettingsData.customPowerActionLock?.length > 0, + customLockerSpawned: root.customLockerSpawned, loginctlLocked: SessionService.locked, loginctlActive: SessionService.active });