refactor: move drawers into separate module

This commit is contained in:
2 * r + 2 * t 2025-05-08 13:32:27 +10:00
parent 803ed74912
commit ac2ef10d3f
6 changed files with 154 additions and 128 deletions

View file

@ -5,30 +5,22 @@ import Quickshell.Wayland
Variants { Variants {
model: Quickshell.screens model: Quickshell.screens
Scope { StyledWindow {
id: scope id: win
required property ShellScreen modelData required property ShellScreen modelData
Border { screen: modelData
screen: scope.modelData name: "background"
} exclusionMode: ExclusionMode.Ignore
layer: WlrLayer.Background
color: "black"
StyledWindow { anchors.top: true
id: win anchors.bottom: true
anchors.left: true
anchors.right: true
screen: scope.modelData Wallpaper {}
name: "background"
exclusionMode: ExclusionMode.Ignore
layer: WlrLayer.Background
color: "black"
anchors.top: true
anchors.bottom: true
anchors.left: true
anchors.right: true
Wallpaper {}
}
} }
} }

View file

@ -1,108 +0,0 @@
pragma ComponentBehavior: Bound
import "root:/widgets"
import "root:/services"
import "root:/config"
import Quickshell
import QtQuick
import QtQuick.Effects
Scope {
id: root
required property ShellScreen screen
StyledWindow {
id: win
screen: root.screen
name: "border"
exclusionMode: ExclusionMode.Ignore
mask: Region {
x: BorderConfig.thickness
y: BorderConfig.thickness
width: win.screen.width - BorderConfig.thickness * 2
height: win.screen.height - BorderConfig.thickness * 2
intersection: Intersection.Xor
}
anchors.top: true
anchors.bottom: true
anchors.left: true
anchors.right: true
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 {
id: effect
visible: false
anchors.fill: parent
maskEnabled: true
maskInverted: true
maskSource: mask
source: rect
maskThresholdMin: 0.5
maskSpreadAtMin: 1
}
LayerShadow {
source: effect
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPositionChanged: event => Drawers.setPosForScreen(root.screen, event.x, event.y)
}
}
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
}
}

View file

@ -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)
}
}

View file

@ -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
}
}
}
}

View file

@ -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
}
}

View file

@ -2,6 +2,7 @@ import "modules/bar"
import "modules/launcher" import "modules/launcher"
import "modules/osd" import "modules/osd"
import "modules/background" import "modules/background"
import "modules/drawers"
import Quickshell import Quickshell
ShellRoot { ShellRoot {
@ -9,4 +10,5 @@ ShellRoot {
Launcher {} Launcher {}
Osd {} Osd {}
Background {} Background {}
Drawers {}
} }