1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-03 20:32:07 -04:00
Files
DankMaterialShell/quickshell/Modules/Frame/FrameExclusions.qml
2026-03-31 15:31:43 -04:00

84 lines
2.2 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: SettingsData.frameEnabled && !root.barEdges.includes("top")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorTop: true
anchorLeft: true
anchorRight: true
}
}
Loader {
active: SettingsData.frameEnabled && !root.barEdges.includes("bottom")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorBottom: true
anchorLeft: true
anchorRight: true
}
}
Loader {
active: SettingsData.frameEnabled && !root.barEdges.includes("left")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorLeft: true
anchorTop: true
anchorBottom: true
}
}
Loader {
active: SettingsData.frameEnabled && !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
}
}
}