diff options
Diffstat (limited to 'modules/osd/Osd.qml')
| -rw-r--r-- | modules/osd/Osd.qml | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/modules/osd/Osd.qml b/modules/osd/Osd.qml new file mode 100644 index 0000000..4d744f6 --- /dev/null +++ b/modules/osd/Osd.qml @@ -0,0 +1,89 @@ +import "root:/widgets" +import "root:/services" +import "root:/config" +import Quickshell +import QtQuick + +Scope { + id: root + + property bool osdVisible + + function show(): void { + root.osdVisible = true; + timer.restart(); + } + + Connections { + target: Audio + + function onMutedChanged(): void { + root.show(); + } + + function onVolumeChanged(): void { + root.show(); + } + } + + Timer { + id: timer + + interval: OsdConfig.hideDelay + onTriggered: root.osdVisible = false + } + + Variants { + model: Quickshell.screens + + LazyLoader { + loading: true + + required property ShellScreen modelData + + StyledWindow { + id: win + + screen: parent.modelData + name: "osd" + visible: wrapper.shouldBeVisible + + mask: Region { + item: wrapper + } + + anchors.left: true + anchors.right: true + height: wrapper.height + + Background { + id: bg + + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + + wrapperHeight: wrapper.height + realWrapperWidth: Math.min(wrapper.width, content.width) + } + + Wrapper { + id: wrapper + + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + + implicitHeight: content.height + bg.rounding * 2 + + osdVisible: root.osdVisible + contentWidth: content.width + + Content { + id: content + + screen: parent.modelData + } + } + } + } + } +} |