87 lines
2.1 KiB
QML
87 lines
2.1 KiB
QML
import "root:/widgets"
|
|
import "root:/services"
|
|
import "root:/config"
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import QtQuick
|
|
|
|
Scope {
|
|
id: root
|
|
|
|
property int winHeight
|
|
property bool sessionVisible
|
|
|
|
Connections {
|
|
target: Drawers
|
|
|
|
function onPosChanged(screen: ShellScreen, x: int, y: int): void {
|
|
if (x > screen.width - BorderConfig.thickness && y > (screen.height - root.winHeight) / 2 && y < (screen.height + root.winHeight) / 2)
|
|
root.sessionVisible = true;
|
|
}
|
|
}
|
|
|
|
LazyLoader {
|
|
loading: true
|
|
|
|
StyledWindow {
|
|
id: win
|
|
|
|
name: "osd"
|
|
keyboardFocus: root.sessionVisible ? WlrKeyboardFocus.Exclusive : WlrKeyboardFocus.None
|
|
visible: wrapper.shouldBeVisible
|
|
|
|
mask: Region {
|
|
item: wrapper
|
|
}
|
|
|
|
anchors.left: true
|
|
anchors.right: true
|
|
height: wrapper.height
|
|
|
|
Component.onCompleted: {
|
|
root.winHeight = height;
|
|
Drawers.rightExclusion = Qt.binding(() => bg.width);
|
|
}
|
|
|
|
Background {
|
|
id: bg
|
|
|
|
visible: false
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
|
|
wrapperWidth: Math.min(wrapper.width, content.width)
|
|
wrapperHeight: wrapper.height
|
|
}
|
|
|
|
LayerShadow {
|
|
source: bg
|
|
}
|
|
|
|
Wrapper {
|
|
id: wrapper
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
|
|
implicitHeight: content.height + bg.rounding * 2
|
|
|
|
sessionVisible: root.sessionVisible
|
|
contentWidth: content.width
|
|
|
|
Content {
|
|
id: content
|
|
|
|
session: root
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
CustomShortcut {
|
|
name: "session"
|
|
description: "Toggle session menu"
|
|
onPressed: root.sessionVisible = !root.sessionVisible
|
|
}
|
|
}
|