lockscreen background

This commit is contained in:
Zacharias-Brohn
2025-12-05 19:45:15 +01:00
parent 563d881d6f
commit 64fc68cc3a
11 changed files with 211 additions and 168 deletions
+20 -11
View File
@@ -21,7 +21,7 @@ WlSessionLockSurface {
property string buffer
color: overlay.visible ? "black" : "transparent"
color: "transparent"
Connections {
target: root.pam
@@ -38,7 +38,7 @@ WlSessionLockSurface {
}
Timer {
interval: 100
interval: 5
running: true
repeat: false
onTriggered: {
@@ -62,6 +62,7 @@ WlSessionLockSurface {
onTextChanged: text = ""
}
ScreencopyView {
id: background
@@ -70,23 +71,31 @@ WlSessionLockSurface {
anchors.fill: parent
captureSource: root.screen
opacity: 1
visible: !Config.lock.useWallpaper
layer.enabled: true
layer.effect: MultiEffect {
autoPaddingEnabled: false
blurEnabled: true
blur: 2
blurMax: 32
blurMultiplier: 0
blur: 0.8
blurMax: 64
blurMultiplier: 1
brightness: 0
}
}
// Image {
// id: backgroundImage
// anchors.fill: parent
// asynchronous: true
// source: root.backgroundImage
// }
Image {
id: backgroundImage
anchors.fill: parent
asynchronous: false
cache: false
source: WallpaperPath.lockscreenBg
visible: Config.lock.useWallpaper
Component.onCompleted: {
console.log(source);
}
}
Rectangle {
id: overlay
+2 -1
View File
@@ -1,3 +1,4 @@
import Quickshell.Hyprland
import QtQuick
import qs.Config
import qs.Helpers
@@ -32,7 +33,7 @@ Item {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
ncProcess.running = true
Hyprland.dispatch("global zshell-nc:toggle-nc");
}
}
}
+145 -134
View File
@@ -12,163 +12,174 @@ import qs.Daemons
import qs.Effects
PanelWindow {
id: root
color: "transparent"
anchors {
top: true
right: true
left: true
bottom: true
}
id: root
color: "transparent"
anchors {
top: true
right: true
left: true
bottom: true
}
WlrLayershell.namespace: "ZShell-Notifs"
WlrLayershell.layer: WlrLayer.Overlay
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
required property PanelWindow bar
property bool centerShown: false
property alias posX: backgroundRect.x
visible: false
WlrLayershell.layer: WlrLayer.Overlay
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
property bool centerShown: false
property alias posX: backgroundRect.x
visible: false
mask: Region { item: backgroundRect }
mask: Region { item: backgroundRect }
IpcHandler {
id: ipcHandler
target: "root"
Connections {
target: Hypr
function showCenter(): void { root.centerShown = !root.centerShown; }
}
function onFocusedMonitorChanged(): void {
if ( !root.centerShown ) {
root.screen = Hypr.getActiveScreen();
}
}
}
onVisibleChanged: {
if ( root.visible ) {
showAnimation.start();
}
}
GlobalShortcut {
appid: "zshell-nc"
name: "toggle-nc"
onPressed: {
root.screen = Hypr.getActiveScreen();
root.centerShown = !root.centerShown;
}
}
onCenterShownChanged: {
if ( !root.centerShown ) {
closeAnimation.start();
closeTimer.start();
} else {
root.visible = true;
}
}
onVisibleChanged: {
if ( root.visible ) {
showAnimation.start();
}
}
Keys.onPressed: {
if ( event.key === Qt.Key_Escape ) {
root.centerShown = false;
event.accepted = true;
}
}
onCenterShownChanged: {
if ( !root.centerShown ) {
closeAnimation.start();
closeTimer.start();
} else {
root.visible = true;
}
}
Timer {
id: closeTimer
interval: 300
onTriggered: {
root.visible = false;
}
}
Keys.onPressed: {
if ( event.key === Qt.Key_Escape ) {
root.centerShown = false;
event.accepted = true;
}
}
NumberAnimation {
id: showAnimation
target: backgroundRect
property: "x"
to: Math.round(root.bar.screen.width - backgroundRect.implicitWidth - 10)
from: root.bar.screen.width
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
onStopped: {
focusGrab.active = true;
}
}
Timer {
id: closeTimer
interval: 300
onTriggered: {
root.visible = false;
}
}
NumberAnimation {
id: closeAnimation
target: backgroundRect
property: "x"
from: root.bar.screen.width - backgroundRect.implicitWidth - 10
to: root.bar.screen.width
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
}
NumberAnimation {
id: showAnimation
target: backgroundRect
property: "x"
to: Math.round(root.screen.width - backgroundRect.implicitWidth - 10)
from: root.screen.width
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
onStopped: {
focusGrab.active = true;
}
}
HyprlandFocusGrab {
id: focusGrab
active: false
windows: [ root ]
onCleared: {
root.centerShown = false;
}
}
NumberAnimation {
id: closeAnimation
target: backgroundRect
property: "x"
from: root.screen.width - backgroundRect.implicitWidth - 10
to: root.screen.width
duration: MaterialEasing.expressiveEffectsTime
easing.bezierCurve: MaterialEasing.expressiveEffects
}
TrackedNotification {
centerShown: root.centerShown
bar: root.bar
}
HyprlandFocusGrab {
id: focusGrab
active: false
windows: [ root ]
onCleared: {
root.centerShown = false;
}
}
ShadowRect {
anchors.fill: backgroundRect
radius: backgroundRect.radius
}
TrackedNotification {
centerShown: root.centerShown
screen: root.screen
}
Rectangle {
id: backgroundRect
y: 10
x: Screen.width
z: 1
ShadowRect {
anchors.fill: backgroundRect
radius: backgroundRect.radius
}
property color backgroundColor: Config.useDynamicColors ? DynamicColors.tPalette.m3surface : Config.baseBgColor
Rectangle {
id: backgroundRect
y: 10
x: Screen.width
z: 1
implicitWidth: 400
implicitHeight: root.height - 20
color: backgroundColor
radius: 8
border.color: "#555555"
border.width: Config.useDynamicColors ? 0 : 1
ColumnLayout {
anchors.fill: parent
anchors.margins: 10
spacing: 10
property color backgroundColor: Config.useDynamicColors ? DynamicColors.tPalette.m3surface : Config.baseBgColor
NotificationCenterHeader { }
implicitWidth: 400
implicitHeight: root.height - 20
color: backgroundColor
radius: 8
border.color: "#555555"
border.width: Config.useDynamicColors ? 0 : 1
ColumnLayout {
anchors.fill: parent
anchors.margins: 10
spacing: 10
Rectangle {
color: "#333333"
Layout.preferredHeight: Config.useDynamicColors ? 0 : 1
Layout.fillWidth: true
}
NotificationCenterHeader { }
Flickable {
Layout.fillWidth: true
Layout.fillHeight: true
pixelAligned: true
contentHeight: notificationColumn.implicitHeight
clip: true
Rectangle {
color: "#333333"
Layout.preferredHeight: Config.useDynamicColors ? 0 : 1
Layout.fillWidth: true
}
Column {
id: notificationColumn
width: parent.width
spacing: 10
Flickable {
Layout.fillWidth: true
Layout.fillHeight: true
pixelAligned: true
contentHeight: notificationColumn.implicitHeight
clip: true
add: Transition {
NumberAnimation {
properties: "x";
duration: 300;
easing.type: Easing.OutCubic
}
}
Column {
id: notificationColumn
width: parent.width
spacing: 10
move: Transition {
NumberAnimation {
properties: "x";
duration: 200;
easing.type: Easing.OutCubic
}
}
add: Transition {
NumberAnimation {
properties: "x";
duration: 300;
easing.type: Easing.OutCubic
}
}
GroupListView { }
move: Transition {
NumberAnimation {
properties: "x";
duration: 200;
easing.type: Easing.OutCubic
}
}
}
}
}
}
GroupListView { }
}
}
}
}
}
+8 -8
View File
@@ -4,10 +4,10 @@ import Quickshell
import QtQuick
Singleton {
id: root
readonly property string time: {
Qt.formatDateTime(clock.date, "ddd d MMM - hh:mm:ss")
}
id: root
readonly property string time: {
Qt.formatDateTime(clock.date, "ddd d MMM - hh:mm:ss")
}
readonly property string shortTime: {
Qt.formatDateTime(clock.date, "hh:mm")
@@ -17,8 +17,8 @@ Singleton {
Qt.formatDateTime(clock.date, "hh:mm:ss")
}
SystemClock {
id: clock
precision: SystemClock.Seconds
}
SystemClock {
id: clock
precision: SystemClock.Seconds
}
}
+2 -4
View File
@@ -12,7 +12,6 @@ import qs.Effects
PanelWindow {
id: root
color: "transparent"
screen: root.bar.screen
anchors {
top: true
@@ -28,10 +27,9 @@ PanelWindow {
exclusionMode: ExclusionMode.Ignore
property list<Region> notifRegions: []
required property bool centerShown
required property PanelWindow bar
property color textColor: Config.useDynamicColors ? DynamicColors.palette.m3onSurface : "white"
property color backgroundColor: Config.useDynamicColors ? DynamicColors.tPalette.m3surface : Config.baseBgColor
visible: Hyprland.monitorFor(screen).focused
// visible: Hyprland.monitorFor(screen).focused
ListView {
id: notifListView
@@ -44,7 +42,7 @@ PanelWindow {
}
anchors.top: parent.top
anchors.bottom: parent.bottom
x: root.centerShown ? root.bar.width - width - 420 : root.bar.width - width - 20
x: root.centerShown ? root.screen.width - width - 420 : root.screen.width - width - 20
z: 0
anchors.topMargin: 54
width: 400