import Quickshell // for PanelWindow import QtQuick // for Text import QtQuick.Shapes import QtQuick.Controls import QtQuick.Layouts import Quickshell.Io import Quickshell.Widgets import Quickshell.Wayland import Quickshell.Hyprland PanelWindow { property real radius: 10 onRadiusChanged: Hyprland.dispatch("exec hyprctl keyword decoration:rounding " + radius) anchors { top: true left: true right: true bottom: true } Lock { id: lock bg_path: "/tmp/nathan/tmp.jpg" //locked: true } Timer { id: lt interval: 30000 running: false repeat: false onTriggered: lock.locked = false } Component.onCompleted: { Hyprland.dispatch("exec hyprctl keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx) Hyprland.dispatch("exec hyprctl keyword decoration:rounding " + radius) for(let toplv = 0; toplv < Hyprland.toplevels.values.length; toplv++) { //console.log(Hyprland.toplevels.values[toplv].title) } } property int topEx: topRect.reserve property int botEx: botRect.reserve property int leftEx: leftRect.reserve property int rightEx: rightRect.reserve id: root exclusionMode: ExclusionMode.Ignore WlrLayershell.layer: WlrLayer.Top //color: Pywal.special.background color: "transparent" mask: Region { Region { item: topRect.topRectArea } Region { item: leftRect } Region { item: topRect.midFO.visible ? topRect.midFO : leftRect } Region { item: dash.visible ? dash : leftRect } } BarBottom { id: botRect } BarLeft { id: leftRect window: root Button { implicitWidth: 30 implicitHeight: 30 x: leftRect.x + leftRect.width / 2 - width / 2 y: 200 onClicked: { lock.locked = true lt.running = true } } } BarRight { id: rightRect } Shape { x: leftRect.x + leftRect.width - 1 y: topRect.cornerY ShapePath { strokeWidth: 4 strokeColor: Pywal.special.background fillColor: Pywal.special.background startX: 0; startY: 0 PathLine { relativeX: 0; relativeY: radius } PathArc { radiusX: radius radiusY: -radius relativeX: radius relativeY: -radius } PathLine { relativeX: -radius; relativeY: 0 } } } Shape { x: rightRect.x + 1 y: topRect.cornerY ShapePath { strokeWidth: 4 strokeColor: Pywal.special.background fillColor: Pywal.special.background startX: 0; startY: 0 PathLine { relativeX: 0; relativeY: radius } PathArc { direction: PathArc.Counterclockwise radiusX: radius radiusY: radius relativeX: -radius relativeY: -radius } PathLine { relativeX: radius; relativeY: 0 } } } Shape { x: leftRect.x + leftRect.width - 1 y: botRect.y + 1 ShapePath { strokeWidth: 4 strokeColor: Pywal.special.background fillColor: Pywal.special.background startX: 0; startY: 0 PathLine { relativeX: 0; relativeY: -radius } PathArc { direction: PathArc.Counterclockwise radiusX: radius radiusY: radius relativeX: radius relativeY: radius } PathLine { relativeX: -radius; relativeY: 0 } } } Shape { x: rightRect.x + 1 y: botRect.y + 1 ShapePath { strokeWidth: 4 strokeColor: Pywal.special.background fillColor: Pywal.special.background startX: 0; startY: 0 PathLine { relativeX: 0; relativeY: -radius } PathArc { radiusX: radius radiusY: -radius relativeX: -radius relativeY: radius } PathLine { relativeX: radius; relativeY: 0 } } } BarTop { id: topRect x: leftRect.x + leftRect.width width: rightRect.x - x //y: topRect.y + topRect.height - 1 window: root radius: root.radius onShowDashChanged: dash.visible = showDash } onTopExChanged: Hyprland.dispatch("exec hyprctl keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx) onBotExChanged: Hyprland.dispatch("exec hyprctl keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx) onRightExChanged: Hyprland.dispatch("exec hyprctl keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx) onLeftExChanged: Hyprland.dispatch("exec hyprctl keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx) Dashboard { id: dash x: root.screen.width / 2 - width / 2 y: topRect.reserve - 1 onVisibleChanged: topRect.showDash = visible //onEntered: topRect.midFO.visible = true onHoveredChanged: topRect.midFO.visible = !hovered radius: root.radius } }