mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
quickshell and hyprland additions
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user