usable
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
86
config/aurora/modules/Lock.qml
Normal file
86
config/aurora/modules/Lock.qml
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
58
config/aurora/modules/LockCtx.qml
Normal file
58
config/aurora/modules/LockCtx.qml
Normal 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"
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ Item {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
|
||||
color: Pywal.colors.color1
|
||||
color: Pywal.colors.color4
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
Reference in New Issue
Block a user