From d4b98dec7759072f9c1bfaaede3b284ca4589dd4 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 30 Apr 2026 21:49:44 +1000 Subject: [PATCH 1/6] fix: slight border showing when fullscreen --- modules/drawers/ContentWindow.qml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/drawers/ContentWindow.qml b/modules/drawers/ContentWindow.qml index 5fbacd41..d1b6ad8e 100644 --- a/modules/drawers/ContentWindow.qml +++ b/modules/drawers/ContentWindow.qml @@ -31,6 +31,8 @@ StyledWindow { } return monitor?.activeWorkspace?.toplevels.values.some(t => t.lastIpcObject.fullscreen > 1) ?? false; } + + property real sdfBorderOffset: hasFullscreen ? 2 : 0 // SDFs joins are not exact, so offset by 2px to ensure nothing shows property real borderThickness: hasFullscreen ? 0 : contentItem.Config.border.thickness readonly property real borderLayoutThickness: hasFullscreen ? 0 : contentItem.Config.border.thickness property real borderRounding: hasFullscreen ? 0 : contentItem.Config.border.rounding @@ -68,6 +70,10 @@ StyledWindow { anchors.left: true anchors.right: true + Behavior on sdfBorderOffset { + Anim {} + } + Behavior on borderThickness { Anim { type: Anim.DefaultSpatial @@ -149,10 +155,10 @@ StyledWindow { anchors.margins: -50 // Make border thicker to smooth out bulge from closed drawers group: blobGroup radius: root.borderRounding - borderLeft: bar.implicitWidth - anchors.margins - borderRight: root.borderThickness - anchors.margins - borderTop: root.borderThickness - anchors.margins - borderBottom: root.borderThickness - anchors.margins + borderLeft: bar.implicitWidth - anchors.margins - root.sdfBorderOffset + borderRight: root.borderThickness - anchors.margins - root.sdfBorderOffset + borderTop: root.borderThickness - anchors.margins - root.sdfBorderOffset + borderBottom: root.borderThickness - anchors.margins - root.sdfBorderOffset } PanelBg { From bcd7f6f161ae52e725b837335019525ffc221d8f Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:01:27 +1000 Subject: [PATCH 2/6] feat: display on overlay layer only when fs --- modules/drawers/ContentWindow.qml | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/modules/drawers/ContentWindow.qml b/modules/drawers/ContentWindow.qml index d1b6ad8e..c92b78ad 100644 --- a/modules/drawers/ContentWindow.qml +++ b/modules/drawers/ContentWindow.qml @@ -32,11 +32,12 @@ StyledWindow { return monitor?.activeWorkspace?.toplevels.values.some(t => t.lastIpcObject.fullscreen > 1) ?? false; } - property real sdfBorderOffset: hasFullscreen ? 2 : 0 // SDFs joins are not exact, so offset by 2px to ensure nothing shows - property real borderThickness: hasFullscreen ? 0 : contentItem.Config.border.thickness + property real fsTransitionProg: hasFullscreen ? 1 : 0 + readonly property real sdfBorderOffset: 2 * fsTransitionProg // SDFs joins are not exact, so offset by 2px to ensure nothing shows + readonly property real borderThickness: contentItem.Config.border.thickness * (1 - fsTransitionProg) + readonly property real borderRounding: contentItem.Config.border.rounding * (1 - fsTransitionProg) + readonly property real shadowOpacity: 0.7 * (1 - fsTransitionProg) readonly property real borderLayoutThickness: hasFullscreen ? 0 : contentItem.Config.border.thickness - property real borderRounding: hasFullscreen ? 0 : contentItem.Config.border.rounding - property real shadowOpacity: hasFullscreen ? 0 : 0.7 readonly property int dragMaskPadding: { if (focusGrab.active || panels.popouts.isDetached) @@ -60,7 +61,7 @@ StyledWindow { name: "drawers" WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.layer: WlrLayer.Overlay + WlrLayershell.layer: fsTransitionProg > 0 ? WlrLayer.Overlay : WlrLayer.Top WlrLayershell.keyboardFocus: visibilities.launcher || visibilities.session || panels.dashboard.needsKeyboard ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None mask: hasFullscreen ? emptyRegion : regions @@ -70,28 +71,10 @@ StyledWindow { anchors.left: true anchors.right: true - Behavior on sdfBorderOffset { + Behavior on fsTransitionProg { Anim {} } - Behavior on borderThickness { - Anim { - type: Anim.DefaultSpatial - } - } - - Behavior on borderRounding { - Anim { - type: Anim.DefaultSpatial - } - } - - Behavior on shadowOpacity { - Anim { - type: Anim.DefaultSpatial - } - } - Region { id: emptyRegion } From 87a452851e51127bc695c5f764ef6f8394ffebb4 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:05:12 +1000 Subject: [PATCH 3/6] fix: allow interacting with notifs and osd in fs --- modules/drawers/ContentWindow.qml | 12 ++++++++++++ modules/drawers/Interactions.qml | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/modules/drawers/ContentWindow.qml b/modules/drawers/ContentWindow.qml index c92b78ad..0849f65a 100644 --- a/modules/drawers/ContentWindow.qml +++ b/modules/drawers/ContentWindow.qml @@ -77,6 +77,18 @@ StyledWindow { Region { id: emptyRegion + + x: panels.notifications.x + bar.implicitWidth + y: panels.notifications.y + root.borderThickness + width: panels.notifications.width + height: panels.notifications.height + + Region { + x: root.width - width + y: panels.osdWrapper.y + root.borderThickness + width: panels.osdWrapper.width * (1 - panels.osd.offsetScale) + root.borderThickness + height: panels.osd.height + } } Regions { diff --git a/modules/drawers/Interactions.qml b/modules/drawers/Interactions.qml index bef8f4b8..b89cb007 100644 --- a/modules/drawers/Interactions.qml +++ b/modules/drawers/Interactions.qml @@ -61,7 +61,7 @@ CustomMouseArea { anchors.fill: parent acceptedButtons: fullscreen ? Qt.NoButton : Qt.AllButtons - hoverEnabled: !fullscreen + hoverEnabled: true onPressed: event => dragStart = Qt.point(event.x, event.y) onContainsMouseChanged: { @@ -97,6 +97,11 @@ CustomMouseArea { const dragX = x - dragStart.x; const dragY = y - dragStart.y; + if (fullscreen) { + root.panels.osd.hovered = inRightPanel(panels.osdWrapper, x, y); + return; + } + // Show bar in non-exclusive mode on hover if (!visibilities.bar && Config.bar.showOnHover && x < bar.clampedWidth) bar.isHovered = true; From a06fa385220c5f5735eb2597509db8171304193e Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:21:47 +1000 Subject: [PATCH 4/6] fix: close detached popout on fs --- modules/drawers/ContentWindow.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/drawers/ContentWindow.qml b/modules/drawers/ContentWindow.qml index 0849f65a..60bbe39f 100644 --- a/modules/drawers/ContentWindow.qml +++ b/modules/drawers/ContentWindow.qml @@ -57,6 +57,7 @@ StyledWindow { visibilities.launcher = false; visibilities.session = false; visibilities.dashboard = false; + panels.popouts.close(); } name: "drawers" From dfbd0829e7495faf02f4a863d7a20a6c76b58b75 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:26:52 +1000 Subject: [PATCH 5/6] feat: add showOverFullscreen option + disable by default Fixes #1377 --- README.md | 1 + modules/drawers/ContentWindow.qml | 2 +- plugin/src/Caelestia/Config/generalconfig.hpp | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 41c74df9..13b5ec8a 100644 --- a/README.md +++ b/README.md @@ -298,6 +298,7 @@ For example, to disable the bar on DP-1: }, "general": { "logo": "caelestia", + "showOverFullscreen": false, "mediaGifSpeedAdjustment": 300, "sessionGifSpeed": 0.7, "apps": { diff --git a/modules/drawers/ContentWindow.qml b/modules/drawers/ContentWindow.qml index 60bbe39f..677c84a0 100644 --- a/modules/drawers/ContentWindow.qml +++ b/modules/drawers/ContentWindow.qml @@ -62,7 +62,7 @@ StyledWindow { name: "drawers" WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.layer: fsTransitionProg > 0 ? WlrLayer.Overlay : WlrLayer.Top + WlrLayershell.layer: fsTransitionProg > 0 && contentItem.Config.general.showOverFullscreen ? WlrLayer.Overlay : WlrLayer.Top WlrLayershell.keyboardFocus: visibilities.launcher || visibilities.session || panels.dashboard.needsKeyboard ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None mask: hasFullscreen ? emptyRegion : regions diff --git a/plugin/src/Caelestia/Config/generalconfig.hpp b/plugin/src/Caelestia/Config/generalconfig.hpp index 73a4915d..859302fe 100644 --- a/plugin/src/Caelestia/Config/generalconfig.hpp +++ b/plugin/src/Caelestia/Config/generalconfig.hpp @@ -90,6 +90,7 @@ class GeneralConfig : public ConfigObject { QML_ANONYMOUS CONFIG_GLOBAL_PROPERTY(QString, logo) + CONFIG_PROPERTY(bool, showOverFullscreen, false) CONFIG_PROPERTY(qreal, mediaGifSpeedAdjustment, 300) CONFIG_PROPERTY(qreal, sessionGifSpeed, 0.7) CONFIG_SUBOBJECT(GeneralApps, apps) From efc08759ceaeddc2c571d868c623995270ac365d Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:47:42 +1000 Subject: [PATCH 6/6] fix: allow non-ascii chars in passwords Fixes #1424 --- modules/lock/Pam.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lock/Pam.qml b/modules/lock/Pam.qml index 94832b20..f4c61747 100644 --- a/modules/lock/Pam.qml +++ b/modules/lock/Pam.qml @@ -31,8 +31,8 @@ Scope { } else { buffer = buffer.slice(0, -1); } - } else if (" abcdefghijklmnopqrstuvwxyz1234567890`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?".includes(event.text.toLowerCase())) { - // No illegal characters (you are insane if you use unicode in your password) + } else if (/^[^\x00-\x1F\x7F-\x9F]+$/.test(event.text)) { + // Allow anything except control characters buffer += event.text; } }