90 lines
2.3 KiB
QML
90 lines
2.3 KiB
QML
import Quickshell
|
|
import Quickshell.Io
|
|
import QtQuick
|
|
import QtQuick.Effects
|
|
|
|
Variants {
|
|
model: Quickshell.screens
|
|
PanelWindow {
|
|
anchors {
|
|
top: true
|
|
right: true
|
|
bottom: true
|
|
left: true
|
|
}
|
|
aboveWindows: false
|
|
property var modelData
|
|
screen: modelData
|
|
color: "#222222"
|
|
|
|
RectangularShadow {
|
|
anchors.fill: imageWrapper
|
|
transform: imageWrapper.transform
|
|
radius: roundMask.radius
|
|
blur: 30
|
|
spread: 10
|
|
color: "#000000"
|
|
}
|
|
Item {
|
|
id: imageWrapper
|
|
anchors.fill: parent
|
|
layer.enabled: true
|
|
Image {
|
|
anchors.fill: parent
|
|
fillMode: Image.PreserveAspectCrop
|
|
source: {
|
|
const _source = path.text()
|
|
return _source.substring(0, _source.length - 1)
|
|
}
|
|
}
|
|
transform: [Scale {
|
|
origin {x: width/2; y: height/2}
|
|
xScale: 0.8
|
|
yScale: xScale
|
|
NumberAnimation on xScale {
|
|
id: scaleAnim
|
|
running: false
|
|
to: 1
|
|
duration: 800
|
|
easing.type: Easing.InOutCubic
|
|
}
|
|
}, Translate {
|
|
NumberAnimation on y {
|
|
from: 100
|
|
to: 0
|
|
duration: 500
|
|
easing.type: Easing.OutQuint
|
|
onFinished: scaleAnim.start()
|
|
}
|
|
}]
|
|
layer.effect: MultiEffect {
|
|
maskSource: roundMask
|
|
maskEnabled: true
|
|
}
|
|
NumberAnimation on opacity {
|
|
from: 0
|
|
to: 1
|
|
duration: 250
|
|
}
|
|
}
|
|
Rectangle {
|
|
id: roundMask
|
|
visible: false
|
|
antialiasing: true
|
|
anchors.fill: imageWrapper
|
|
radius: 40
|
|
layer.enabled: true
|
|
NumberAnimation on radius {
|
|
running: scaleAnim.running
|
|
to: 0
|
|
duration: 800
|
|
}
|
|
}
|
|
|
|
FileView {
|
|
id: path
|
|
path: Qt.resolvedUrl("wall.txt")
|
|
}
|
|
}
|
|
}
|