lock works

This commit is contained in:
2026-03-21 16:17:49 -05:00
parent cecf6df20a
commit 27db5bd480
9 changed files with 285 additions and 16 deletions

View File

@@ -45,7 +45,7 @@ ColumnLayout {
property Item midFO: midFO property Item midFO: midFO
VFlyout { VFlyoutDown {
id: midFO id: midFO
radius: root.radius radius: root.radius

View File

@@ -24,7 +24,7 @@ Item {
property int selected: 0 property int selected: 0
VFlyout { VFlyoutDown {
visible: root.visible visible: root.visible

View File

@@ -15,14 +15,23 @@ Item {
property bool locked: false property bool locked: false
onLockedChanged: lock.locked = locked
required property string bg_path required property string bg_path
required property LockCtx ctx property color fieldColor: ctx.failed ? "red" : Pywal.colors.color1
IpcHandler {
target: "lockscreen"
function lock() { lock.locked = true; }
function unlock() { lock.locked = false; }
}
LockCtx { LockCtx {
id: ctx id: ctx
lock: root.lock onShouldUnlock: lock.locked = false
} }
WlSessionLock { WlSessionLock {
@@ -31,6 +40,10 @@ Item {
locked: root.locked locked: root.locked
onLockedChanged: {
root.locked = locked
}
WlSessionLockSurface { WlSessionLockSurface {
color: "transparent" color: "transparent"
@@ -49,7 +62,7 @@ Item {
RowLayout { RowLayout {
ClippingWrapperRectangle { ClippingWrapperRectangle {
color: Pywal.colors.color1 color: root.fieldColor
implicitWidth: 200 implicitWidth: 200
TextInput { TextInput {
text: "" text: ""
@@ -69,7 +82,7 @@ Item {
Button { Button {
text: "unlock" text: "unlock"
onClicked: { onClicked: {
ctx.unlock() ctx.doUnlock()
} }
} }

View File

@@ -19,17 +19,15 @@ Scope {
property bool failed: false property bool failed: false
required property WlSessionLock lock signal shouldUnlock()
onPassChanged: failed = false onPassChanged: failed = false
function unlock() { function doUnlock() {
if(pass == "") return; if(pass == "") return;
if(!busy) {
root.busy = true root.busy = true
pam.start() pam.start()
} else return;
} }
PamContext { PamContext {
@@ -44,10 +42,13 @@ Scope {
onCompleted: result => { onCompleted: result => {
if (result == PamResult.Success) { if (result == PamResult.Success) {
lock.locked = false root.shouldUnlock()
console.log("auth Success")
root.pass = "";
} else { } else {
root.pass = ""; root.pass = "";
root.failed = true; root.failed = true;
abort()
} }
root.busy = false; root.busy = false;

View File

@@ -0,0 +1,85 @@
import QtQuick
import QtQuick.Shapes
import Quickshell
import Quickshell.Widgets
MouseArea {
id: root
required property real radius
property real pad: 5
property color color
property Item item
hoverEnabled: true
Component.onCompleted: {
item.y = pad
}
width: shape.width
height: shape.height
Shape {
id: shape
//anchors.centerIn: parent
ShapePath {
id: path
strokeWidth: 4
strokeColor: root.color
fillColor: root.color
startX: -root.radius - pad; startY: 0
PathArc {
radiusX: root.radius
radiusY: root.radius
relativeX: root.radius
relativeY: root.radius
}
PathLine { relativeX: 0; relativeY: 2 * pad + item.height - 2 * root.radius }
PathArc {
radiusX: root.radius
radiusY: root.radius
direction: PathArc.Counterclockwise
relativeX: root.radius
relativeY: root.radius
}
PathLine { x: item.width + pad - root.radius; relativeY: 0 }
PathArc {
radiusX: root.radius
radiusY: root.radius
direction: PathArc.Counterclockwise
relativeX: root.radius
relativeY: -root.radius
}
PathLine { relativeX: 0; relativeY: -item.height + 2 * root.radius - 2 * pad }
PathArc {
radiusX: root.radius
radiusY: root.radius
relativeX: root.radius
relativeY: -root.radius
}
PathLine { x: -root.radius - pad; y: 0 }
}
}
}

View File

@@ -0,0 +1,85 @@
import QtQuick
import QtQuick.Shapes
import Quickshell
import Quickshell.Widgets
MouseArea {
id: root
required property real radius
property real pad: 5
property color color
property Item item
hoverEnabled: true
Component.onCompleted: {
item.y = pad
}
width: shape.width
height: shape.height
Shape {
id: shape
//anchors.centerIn: parent
ShapePath {
id: path
strokeWidth: 4
strokeColor: root.color
fillColor: root.color
startX: -root.radius - pad; startY: 0
PathArc {
radiusX: root.radius
radiusY: root.radius
relativeX: root.radius
relativeY: root.radius
}
PathLine { relativeX: 0; relativeY: 2 * pad + item.height - 2 * root.radius }
PathArc {
radiusX: root.radius
radiusY: root.radius
direction: PathArc.Counterclockwise
relativeX: root.radius
relativeY: root.radius
}
PathLine { x: item.width + pad - root.radius; relativeY: 0 }
PathArc {
radiusX: root.radius
radiusY: root.radius
direction: PathArc.Counterclockwise
relativeX: root.radius
relativeY: -root.radius
}
PathLine { relativeX: 0; relativeY: -item.height + 2 * root.radius - 2 * pad }
PathArc {
radiusX: root.radius
radiusY: root.radius
relativeX: root.radius
relativeY: -root.radius
}
PathLine { x: -root.radius - pad; y: 0 }
}
}
}

View File

@@ -0,0 +1,85 @@
import QtQuick
import QtQuick.Shapes
import Quickshell
import Quickshell.Widgets
MouseArea {
id: root
required property real radius
property real pad: 5
property color color
property Item item
hoverEnabled: true
Component.onCompleted: {
item.y = pad
}
width: shape.width
height: shape.height
Shape {
id: shape
//anchors.centerIn: parent
ShapePath {
id: path
strokeWidth: 4
strokeColor: root.color
fillColor: root.color
startX: -root.radius - pad; startY: 0
PathArc {
radiusX: root.radius
radiusY: root.radius
relativeX: root.radius
relativeY: root.radius
}
PathLine { relativeX: 0; relativeY: 2 * pad + item.height - 2 * root.radius }
PathArc {
radiusX: root.radius
radiusY: root.radius
direction: PathArc.Counterclockwise
relativeX: root.radius
relativeY: root.radius
}
PathLine { x: item.width + pad - root.radius; relativeY: 0 }
PathArc {
radiusX: root.radius
radiusY: root.radius
direction: PathArc.Counterclockwise
relativeX: root.radius
relativeY: -root.radius
}
PathLine { relativeX: 0; relativeY: -item.height + 2 * root.radius - 2 * pad }
PathArc {
radiusX: root.radius
radiusY: root.radius
relativeX: root.radius
relativeY: -root.radius
}
PathLine { x: -root.radius - pad; y: 0 }
}
}
}

View File