From 9be727dbe1fae94558f625c898659a4dbdb29ce4 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 26 Apr 2026 15:12:55 +1000 Subject: [PATCH 1/2] fix: interaction blocking at edges when fullscreen Also completely disable interaction when fullscreen --- modules/drawers/ContentWindow.qml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/drawers/ContentWindow.qml b/modules/drawers/ContentWindow.qml index dab1d606..5fbacd41 100644 --- a/modules/drawers/ContentWindow.qml +++ b/modules/drawers/ContentWindow.qml @@ -61,11 +61,7 @@ StyledWindow { WlrLayershell.layer: WlrLayer.Overlay WlrLayershell.keyboardFocus: visibilities.launcher || visibilities.session || panels.dashboard.needsKeyboard ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None - mask: Regions { - bar: bar - panels: panels - win: root - } + mask: hasFullscreen ? emptyRegion : regions anchors.top: true anchors.bottom: true @@ -90,6 +86,18 @@ StyledWindow { } } + Region { + id: emptyRegion + } + + Regions { + id: regions + + bar: bar + panels: panels + win: root + } + HyprlandFocusGrab { id: focusGrab From 53dd959f5e07977662c7f2fc70656b30123cec01 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 26 Apr 2026 15:13:28 +1000 Subject: [PATCH 2/2] feat: always expire notifs if fullscreen Also faster expire timeout when fullscreen --- plugin/src/Caelestia/Config/notifsconfig.hpp | 1 + services/NotifData.qml | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/plugin/src/Caelestia/Config/notifsconfig.hpp b/plugin/src/Caelestia/Config/notifsconfig.hpp index eef360fe..cdac94bd 100644 --- a/plugin/src/Caelestia/Config/notifsconfig.hpp +++ b/plugin/src/Caelestia/Config/notifsconfig.hpp @@ -13,6 +13,7 @@ class NotifsConfig : public ConfigObject { CONFIG_GLOBAL_PROPERTY(bool, expire, true) CONFIG_GLOBAL_PROPERTY(QString, fullscreen, QStringLiteral("on")) CONFIG_GLOBAL_PROPERTY(int, defaultExpireTimeout, 5000) + CONFIG_GLOBAL_PROPERTY(int, fullscreenExpireTimeout, 2000) CONFIG_PROPERTY(qreal, clearThreshold, 0.3) CONFIG_PROPERTY(int, expandThreshold, 20) CONFIG_GLOBAL_PROPERTY(bool, actionOnClick, false) diff --git a/services/NotifData.qml b/services/NotifData.qml index 33794243..3c6ae23b 100644 --- a/services/NotifData.qml +++ b/services/NotifData.qml @@ -39,11 +39,22 @@ QtObject { property bool hasActionIcons property list actions + readonly property bool hasFullscreen: { + const monitor = Hypr.focusedMonitor; + const specialName = monitor?.lastIpcObject.specialWorkspace?.name; + if (specialName) { + const specialWs = Hypr.workspaces.values.find(ws => ws.name === specialName); + return specialWs?.toplevels.values.some(t => t.lastIpcObject.fullscreen > 1) ?? false; + } + return monitor?.activeWorkspace?.toplevels.values.some(t => t.lastIpcObject.fullscreen > 1) ?? false; + } + readonly property Timer timer: Timer { running: true - interval: notif.expireTimeout > 0 ? notif.expireTimeout : GlobalConfig.notifs.defaultExpireTimeout + interval: notif.expireTimeout > 0 ? notif.expireTimeout : notif.hasFullscreen ? GlobalConfig.notifs.fullscreenExpireTimeout : GlobalConfig.notifs.defaultExpireTimeout onTriggered: { - if (GlobalConfig.notifs.expire) + // Always expire if the active workspace has a fullscreen window + if (GlobalConfig.notifs.expire || notif.hasFullscreen) notif.popup = false; } }