Add global rounded corners

This commit is contained in:
2026-06-03 19:59:23 -07:00
parent 1c97d6166d
commit f4da4d479e
4 changed files with 99 additions and 2 deletions

52
Widgets/Corner.qml Normal file
View File

@@ -0,0 +1,52 @@
import QtQuick
import QtQuick.Shapes
import Quickshell
import Quickshell.Hyprland
import Quickshell.Wayland
PanelWindow {
id: corner
required property real radius
required property int angle
required property color fillColor
WlrLayershell.layer: WlrLayer.Overlay
color: "transparent"
implicitWidth: corner.radius
implicitHeight: corner.radius
function anglePointX(angle) {
return (corner.radius * Math.sqrt(2) * 1/2 * Math.sin(angle)) + corner.radius/2
}
function anglePointY(angle) {
return (corner.radius * Math.sqrt(2) * 1/2 * Math.cos(angle)) + corner.radius/2
}
Shape {
anchors.fill: parent
preferredRendererType: Shape.CurveRenderer
ShapePath {
fillColor: corner.fillColor
strokeColor: "transparent"
startX: anglePointX(Math.PI * 5/4 + corner.angle * Math.PI/180)
startY: anglePointY(Math.PI * 5/4 + corner.angle * Math.PI/180)
PathLine {
x: anglePointX(Math.PI * 3/4 + corner.angle * Math.PI/180)
y: anglePointY(Math.PI * 3/4 + corner.angle * Math.PI/180)
}
PathAngleArc {
radiusX: corner.radius
radiusY: corner.radius
startAngle: 270 - corner.angle
sweepAngle: -90
centerX: anglePointX(Math.PI * 1/4 + corner.angle * Math.PI/180)
centerY: anglePointY(Math.PI * 1/4 + corner.angle * Math.PI/180)
}
PathLine {
x: anglePointX(Math.PI * 5/4 + corner.angle * Math.PI/180)
y: anglePointY(Math.PI * 5/4 + corner.angle * Math.PI/180)
}
}
}
}