This commit is contained in:
2026-03-20 11:26:02 -05:00
parent 02d6688a74
commit 8c912861e3
12 changed files with 443 additions and 7 deletions

View File

@@ -21,13 +21,32 @@ PanelWindow {
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
@@ -72,6 +91,18 @@ PanelWindow {
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 {

View File

@@ -189,7 +189,8 @@ Item {
implicitWidth: 40
implicitHeight: 40
radius: root.radius
color: index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color4
property bool use: false
color: use ? Pywal.colors.color13 : Pywal.colors.color4
//Launcher { anchors.centerIn: parent }
Text {
font.pointSize: 14
@@ -219,11 +220,24 @@ Item {
color: Pywal.colors.color0
}
}
onEntered: child.color = Qt.binding(() => index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color12)
onExited: child.color = Qt.binding(() => index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color4)
onEntered: child.color = Qt.binding(() => child.use ? Pywal.colors.color13 : Pywal.colors.color12)
onExited: child.color = Qt.binding(() => child.use ? Pywal.colors.color13 : Pywal.colors.color4)
onClicked: {
selected = index + 9
child.color = Qt.binding(() => index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color12)
child.use = !child.use
switch(index) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
default:
break;
}
}
hoverEnabled: true
}

View File

@@ -0,0 +1,86 @@
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
import Quickshell.Services.Pam
Item {
id: root
property bool locked: false
required property string bg_path
required property LockCtx ctx
LockCtx {
id: ctx
lock: root.lock
}
WlSessionLock {
id: lock
locked: root.locked
WlSessionLockSurface {
color: "transparent"
Image {
anchors.fill: parent
source: Qt.resolvedUrl(bg_path)
ClippingWrapperRectangle {
anchors.centerIn: parent
radius: 10
color: Pywal.special.background
RowLayout {
ClippingWrapperRectangle {
color: Pywal.colors.color1
implicitWidth: 200
TextInput {
text: ""
onTextChanged: {
ctx.pass = text
}
horizontalAlignment: TextInput.AlignHCenter
font.pointSize: 30
//echoMode: TextInput.Password
color: Pywal.special.foreground
}
}
Button {
text: "unlock"
onClicked: {
ctx.unlock()
}
}
Button {
text: "exit"
onClicked: root.locked = false
}
}
}
}
}
}
}

View File

@@ -0,0 +1,58 @@
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
import Quickshell.Services.Pam
Scope {
id: root
property string pass
property bool busy: false
property bool failed: false
required property WlSessionLock lock
onPassChanged: failed = false
function unlock() {
if(pass == "") return;
if(!busy) {
root.busy = true
pam.start()
} else return;
}
PamContext {
id: pam
onPamMessage: {
if (this.responseRequired) {
this.respond(root.pass);
}
}
onCompleted: result => {
if (result == PamResult.Success) {
lock.locked = false
} else {
root.pass = "";
root.failed = true;
}
root.busy = false;
}
config: "aurora-lock.conf"
}
}

View File

@@ -30,7 +30,7 @@ Item {
implicitWidth: 20
implicitHeight: 20
color: Pywal.colors.color1
color: Pywal.colors.color4
MouseArea {
anchors.fill: parent