mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-03 20:32:07 -04:00
84 lines
2.1 KiB
QML
84 lines
2.1 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import qs.Common
|
|
|
|
Scope {
|
|
id: root
|
|
|
|
required property ShellScreen screen
|
|
|
|
readonly property var barEdges: {
|
|
SettingsData.barConfigs; // force re-eval when bar configs change
|
|
return SettingsData.getActiveBarEdgesForScreen(screen);
|
|
}
|
|
|
|
// One thin invisible PanelWindow per edge.
|
|
// Skips any edge where a bar already provides its own exclusiveZone.
|
|
|
|
Loader {
|
|
active: !root.barEdges.includes("top")
|
|
sourceComponent: EdgeExclusion {
|
|
screen: root.screen
|
|
anchorTop: true
|
|
anchorLeft: true
|
|
anchorRight: true
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: !root.barEdges.includes("bottom")
|
|
sourceComponent: EdgeExclusion {
|
|
screen: root.screen
|
|
anchorBottom: true
|
|
anchorLeft: true
|
|
anchorRight: true
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: !root.barEdges.includes("left")
|
|
sourceComponent: EdgeExclusion {
|
|
screen: root.screen
|
|
anchorLeft: true
|
|
anchorTop: true
|
|
anchorBottom: true
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: !root.barEdges.includes("right")
|
|
sourceComponent: EdgeExclusion {
|
|
screen: root.screen
|
|
anchorRight: true
|
|
anchorTop: true
|
|
anchorBottom: true
|
|
}
|
|
}
|
|
|
|
component EdgeExclusion: PanelWindow {
|
|
required property ShellScreen screen
|
|
property bool anchorTop: false
|
|
property bool anchorBottom: false
|
|
property bool anchorLeft: false
|
|
property bool anchorRight: false
|
|
|
|
WlrLayershell.namespace: "dms:frame-exclusion"
|
|
WlrLayershell.layer: WlrLayer.Top
|
|
exclusiveZone: SettingsData.frameThickness
|
|
color: "transparent"
|
|
mask: Region {}
|
|
implicitWidth: 1
|
|
implicitHeight: 1
|
|
|
|
anchors {
|
|
top: anchorTop
|
|
bottom: anchorBottom
|
|
left: anchorLeft
|
|
right: anchorRight
|
|
}
|
|
}
|
|
}
|