mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
151 lines
4.2 KiB
QML
151 lines
4.2 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import QtQuick.Effects
|
|
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
|
|
import qs.config
|
|
import qs.services
|
|
import qs.modules.components
|
|
|
|
PanelWindow {
|
|
id: window
|
|
property bool isClosing: false
|
|
default property alias content: contentContainer.data
|
|
signal fadeOutFinished()
|
|
|
|
anchors {
|
|
top: true
|
|
left: true
|
|
right: true
|
|
bottom: true
|
|
}
|
|
WlrLayershell.layer: WlrLayer.Overlay
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
|
|
color: "transparent"
|
|
WlrLayershell.namespace: "nucleus:prompt"
|
|
|
|
function closeWithAnimation() {
|
|
if (isClosing) return
|
|
isClosing = true
|
|
fadeOutAnim.start()
|
|
}
|
|
|
|
Item {
|
|
anchors.fill: parent
|
|
|
|
Keys.onPressed: {
|
|
if (event.key === Qt.Key_Escape) {
|
|
window.closeWithAnimation()
|
|
}
|
|
}
|
|
|
|
ScreencopyView {
|
|
id: screencopy
|
|
visible: hasContent
|
|
captureSource: window.screen
|
|
anchors.fill: parent
|
|
opacity: 0
|
|
scale: 1
|
|
layer.enabled: true
|
|
layer.effect: MultiEffect {
|
|
blurEnabled: true
|
|
blur: 1
|
|
blurMax: 32
|
|
brightness: -0.05
|
|
layer.enabled: true
|
|
layer.effect: MultiEffect {
|
|
autoPaddingEnabled: false
|
|
blurEnabled: true
|
|
blur: 1
|
|
blurMax: 32
|
|
}
|
|
}
|
|
}
|
|
|
|
NumberAnimation {
|
|
id: fadeInAnim
|
|
target: screencopy
|
|
property: "opacity"
|
|
from: 0
|
|
to: 1
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
running: screencopy.visible && !window.isClosing
|
|
}
|
|
|
|
ParallelAnimation {
|
|
id: scaleInAnim
|
|
running: screencopy.visible && !window.isClosing
|
|
NumberAnimation {
|
|
target: contentContainer
|
|
property: "scale"
|
|
from: 0.9
|
|
to: 1
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
ColorAnimation {
|
|
target: window
|
|
property: "color"
|
|
from: "transparent"
|
|
to: Appearance.m3colors.m3surface
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
NumberAnimation {
|
|
target: contentContainer
|
|
property: "opacity"
|
|
from: 0
|
|
to: 1
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
}
|
|
|
|
ParallelAnimation {
|
|
id: fadeOutAnim
|
|
NumberAnimation {
|
|
target: screencopy
|
|
property: "opacity"
|
|
to: 0
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
ColorAnimation {
|
|
target: window
|
|
property: "color"
|
|
to: "transparent"
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
NumberAnimation {
|
|
target: contentContainer
|
|
property: "opacity"
|
|
to: 0
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
NumberAnimation {
|
|
target: contentContainer
|
|
property: "scale"
|
|
to: 0.9
|
|
duration: Metrics.chronoDuration("normal")
|
|
easing.type: Appearance.animation.easing
|
|
}
|
|
onFinished: {
|
|
window.visible = false
|
|
window.fadeOutFinished()
|
|
}
|
|
}
|
|
|
|
Item {
|
|
id: contentContainer
|
|
anchors.fill: parent
|
|
opacity: 0
|
|
scale: 0.9
|
|
}
|
|
}
|
|
} |