diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-08 13:32:27 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-08 13:32:27 +1000 |
| commit | ac2ef10d3f049c96086ef8c337b7820a8fac970a (patch) | |
| tree | 1ad83b8b96ad59423a7f2694298c77e516d5c4d4 /modules/drawers | |
| parent | wallpaper: fix flash when changing wallpapers (diff) | |
| download | caelestia-shell-ac2ef10d3f049c96086ef8c337b7820a8fac970a.tar.gz caelestia-shell-ac2ef10d3f049c96086ef8c337b7820a8fac970a.tar.bz2 caelestia-shell-ac2ef10d3f049c96086ef8c337b7820a8fac970a.zip | |
refactor: move drawers into separate module
Diffstat (limited to 'modules/drawers')
| -rw-r--r-- | modules/drawers/Border.qml | 52 | ||||
| -rw-r--r-- | modules/drawers/Drawers.qml | 49 | ||||
| -rw-r--r-- | modules/drawers/Exclusions.qml | 39 |
3 files changed, 140 insertions, 0 deletions
diff --git a/modules/drawers/Border.qml b/modules/drawers/Border.qml new file mode 100644 index 0000000..124f73f --- /dev/null +++ b/modules/drawers/Border.qml @@ -0,0 +1,52 @@ +import "root:/widgets" +import "root:/services" +import "root:/config" +import Quickshell +import QtQuick +import QtQuick.Effects + +Item { + id: root + + required property ShellScreen screen + + anchors.fill: parent + + StyledRect { + id: rect + + anchors.fill: parent + color: Colours.alpha(BorderConfig.colour, false) + visible: false + } + + Item { + id: mask + + anchors.fill: parent + layer.enabled: true + visible: false + + Rectangle { + anchors.fill: parent + anchors.margins: BorderConfig.thickness + radius: BorderConfig.rounding + } + } + + MultiEffect { + anchors.fill: parent + maskEnabled: true + maskInverted: true + maskSource: mask + source: rect + maskThresholdMin: 0.5 + maskSpreadAtMin: 1 + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onPositionChanged: event => Drawers.setPosForScreen(root.screen, event.x, event.y) + } +} diff --git a/modules/drawers/Drawers.qml b/modules/drawers/Drawers.qml new file mode 100644 index 0000000..30fcae0 --- /dev/null +++ b/modules/drawers/Drawers.qml @@ -0,0 +1,49 @@ +import "root:/widgets" +import "root:/config" +import Quickshell + +Variants { + model: Quickshell.screens + + Scope { + id: scope + + required property ShellScreen modelData + + Exclusions { + screen: scope.modelData + } + + StyledWindow { + id: win + + screen: scope.modelData + name: "drawers" + exclusionMode: ExclusionMode.Ignore + + mask: Region { + x: BorderConfig.thickness + y: BorderConfig.thickness + width: scope.modelData.width - BorderConfig.thickness * 2 + height: scope.modelData.height - BorderConfig.thickness * 2 + intersection: Intersection.Xor + } + + anchors.top: true + anchors.bottom: true + anchors.left: true + anchors.right: true + + Border { + id: border + + visible: false + screen: scope.modelData + } + + LayerShadow { + source: border + } + } + } +} diff --git a/modules/drawers/Exclusions.qml b/modules/drawers/Exclusions.qml new file mode 100644 index 0000000..c8b3959 --- /dev/null +++ b/modules/drawers/Exclusions.qml @@ -0,0 +1,39 @@ +pragma ComponentBehavior: Bound + +import "root:/widgets" +import "root:/config" +import Quickshell + +Scope { + id: root + + required property ShellScreen screen + + ExclusionZone { + anchors.left: false + } + + ExclusionZone { + anchors.top: false + } + + ExclusionZone { + anchors.right: false + } + + ExclusionZone { + anchors.bottom: false + } + + component ExclusionZone: StyledWindow { + screen: root.screen + name: "border-exclusion" + width: BorderConfig.thickness + height: BorderConfig.thickness + + anchors.top: true + anchors.left: true + anchors.bottom: true + anchors.right: true + } +} |