mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
53 lines
1.3 KiB
QML
53 lines
1.3 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import qs.Commons
|
|
import qs.Services.Power
|
|
|
|
/**
|
|
* IdleFadeOverlay — full-screen fade-to-black shown before each idle action.
|
|
*
|
|
* A single Loader wraps a Variants so per-screen windows only exist while
|
|
* a fade is in progress, keeping VRAM usage at zero at rest.
|
|
*
|
|
* Any mouse movement cancels the fade and unloads the windows immediately.
|
|
*/
|
|
Item {
|
|
id: root
|
|
|
|
Loader {
|
|
active: IdleService.fadePending !== ""
|
|
asynchronous: false
|
|
|
|
sourceComponent: Variants {
|
|
model: Quickshell.screens
|
|
delegate: PanelWindow {
|
|
id: overlay
|
|
required property ShellScreen modelData
|
|
screen: modelData
|
|
|
|
color: Qt.rgba(0, 0, 0, 0)
|
|
|
|
WlrLayershell.layer: WlrLayer.Overlay
|
|
WlrLayershell.namespace: "noctalia-fade-overlay"
|
|
WlrLayershell.keyboardFocus: WlrKeyboardFocus.None
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
WlrLayershell.anchors {
|
|
top: true
|
|
bottom: true
|
|
left: true
|
|
right: true
|
|
}
|
|
|
|
ColorAnimation on color {
|
|
running: true
|
|
from: Qt.rgba(0, 0, 0, 0)
|
|
to: Qt.rgba(0, 0, 0, 1)
|
|
duration: IdleService.fadeDuration * 1000
|
|
easing.type: Easing.InQuad
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|