quickshell/modules/corners/ScreenCorners.qml

197 lines
6.1 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Shapes
import Quickshell
import Quickshell.Wayland
import qs
import qs.settings
Item {
Variants {
model: Quickshell.screens
delegate: WlrLayershell {
id: tlWin
required property var modelData
screen: modelData
visible: Config.rounding > 0
layer: WlrLayer.Top
anchors {
top: true
left: true
}
// margins.top: Config.barHeight
implicitWidth: Config.rounding
implicitHeight: Config.rounding
color: "transparent"
Shape {
anchors.fill: parent
preferredRendererType: Shape.CurveRenderer
ShapePath {
fillColor: Qt.rgba(Colors.base00.r, Colors.base00.g, Colors.base00.b, Config.opacity)
strokeWidth: -1
startX: 0
startY: 0
PathLine {
x: tlWin.implicitWidth
y: 0
}
PathArc {
x: 0
y: tlWin.implicitHeight
radiusX: tlWin.implicitWidth
radiusY: tlWin.implicitHeight
direction: PathArc.Counterclockwise
}
PathLine {
x: 0
y: 0
}
}
}
}
}
// Top-right corners
Variants {
model: Quickshell.screens
delegate: WlrLayershell {
id: trWin
required property var modelData
screen: modelData
visible: Config.rounding > 0
exclusionMode: ExclusionMode.Ignore
layer: WlrLayer.Overlay
anchors {
top: true
right: true
}
margins.top: Config.barHeight
implicitWidth: Config.rounding
implicitHeight: Config.rounding
color: "transparent"
Shape {
anchors.fill: parent
preferredRendererType: Shape.CurveRenderer
ShapePath {
fillColor: Qt.rgba(Colors.base00.r, Colors.base00.g, Colors.base00.b, Config.opacity)
strokeWidth: -1
startX: 0
startY: 0
PathLine {
x: trWin.implicitWidth
y: 0
}
PathLine {
x: trWin.implicitWidth
y: trWin.implicitHeight
}
PathArc {
x: 0
y: 0
radiusX: trWin.implicitWidth
radiusY: trWin.implicitHeight
direction: PathArc.Counterclockwise
}
PathLine {
x: 0
y: 0
}
}
}
}
}
// Bottom-left corners
Variants {
model: Quickshell.screens
delegate: WlrLayershell {
id: blWin
required property var modelData
screen: modelData
visible: Config.rounding > 0
exclusionMode: ExclusionMode.Ignore
layer: WlrLayer.Overlay
anchors {
bottom: true
left: true
}
implicitWidth: Config.rounding
implicitHeight: Config.rounding
color: "transparent"
Shape {
anchors.fill: parent
preferredRendererType: Shape.CurveRenderer
ShapePath {
fillColor: Qt.rgba(Colors.base00.r, Colors.base00.g, Colors.base00.b, Config.opacity)
strokeWidth: -1
startX: 0
startY: 0
PathArc {
x: blWin.implicitWidth
y: blWin.implicitHeight
radiusX: blWin.implicitWidth
radiusY: blWin.implicitHeight
direction: PathArc.Counterclockwise
}
PathLine {
x: 0
y: blWin.implicitHeight
}
PathLine {
x: 0
y: 0
}
}
}
}
}
// Bottom-right corners
Variants {
model: Quickshell.screens
delegate: WlrLayershell {
id: brWin
required property var modelData
screen: modelData
visible: Config.rounding > 0
exclusionMode: ExclusionMode.Ignore
layer: WlrLayer.Overlay
anchors {
bottom: true
right: true
}
implicitWidth: Config.rounding
implicitHeight: Config.rounding
color: "transparent"
Shape {
anchors.fill: parent
preferredRendererType: Shape.CurveRenderer
ShapePath {
fillColor: Qt.rgba(Colors.base00.r, Colors.base00.g, Colors.base00.b, Config.opacity)
strokeWidth: -1
startX: brWin.implicitWidth
startY: brWin.implicitHeight
PathLine {
x: 0
y: brWin.implicitHeight
}
PathArc {
x: brWin.implicitWidth
y: 0
radiusX: brWin.implicitWidth
radiusY: brWin.implicitHeight
direction: PathArc.Counterclockwise
}
PathLine {
x: brWin.implicitWidth
y: brWin.implicitHeight
}
}
}
}
}
}