Files
monoshell/Thin.qml

138 lines
3.5 KiB
QML

import Quickshell
import Quickshell.Wayland
import Quickshell.Widgets
import Quickshell.Io
import QtQuick
import QtQuick.Effects
Item {
id: thin
property bool open: false
property real pos: 0
PropertyAnimation on pos {
id: entry
running: false
to: 1
duration: 400
easing.type: Easing.OutQuint
}
PropertyAnimation on pos {
id: exit
running: false
to: 0
duration: 350
easing.type: Easing.OutQuint
onFinished: thin.open = false
}
IpcHandler {
target: "thin"
function open() {
thin.open = true
exit.stop()
entry.start()
}
function close() {
entry.stop()
exit.start()
}
}
PanelWindow {
visible: thin.open
anchors {
right: true
bottom: true
}
implicitHeight: 430
implicitWidth: 1080
color: "transparent"
WlrLayershell.layer: WlrLayer.Overlay
RectangularShadow {
anchors.fill: pie_wrapper
radius: pie_wrapper.radius
blur: 10
spread: 2
}
ClippingRectangle {
id: pie_wrapper
anchors {
left: parent.left
top: parent.top
margins: 12
leftMargin: 1080 * (1 - thin.pos) + 12
}
width: 210
height: 210
color: "white"
radius: 12
Item {
anchors.fill: parent
layer.enabled: true
layer.smooth: false
ScreencopyView {
width: Quickshell.screens[0].width
height: Quickshell.screens[0].height
live: true
captureSource: Quickshell.screens[0]
x: -1386
y: -1208
}
transform: Scale {
origin: {x: 0; y: 0}
xScale: 6
yScale: xScale
}
}
}
}
PanelWindow {
visible: thin.open
anchors {
top: true
left: true
}
implicitWidth: 1080
implicitHeight: 120
color: "transparent"
WlrLayershell.layer: WlrLayer.Overlay
RectangularShadow {
anchors.fill: e_wrapper
radius: e_wrapper.radius
blur: 10
spread: 2
}
ClippingRectangle {
id: e_wrapper
anchors {
right: parent.right
bottom: parent.bottom
margins: 12
rightMargin: 1080 * (1 - thin.pos) + 12
}
width: 240
height: 48
color: "white"
radius: 12
Item {
anchors.fill: parent
ScreencopyView {
layer.enabled: true
layer.smooth: false
width: Quickshell.screens[0].width
height: Quickshell.screens[0].height
live: true
captureSource: Quickshell.screens[0]
x: -1080
y: -47
}
transform: Scale {
origin: {x: 0; y: 0}
xScale: 5
yScale: xScale
}
}
}
}
}