diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-04 20:45:34 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-05-04 20:45:34 +1000 |
| commit | fb471f1023ab4991c124d0bc432028d95d7b7300 (patch) | |
| tree | 6e46278fabc8f4b584cd668703bfe28e3d78ec8d /modules/osd/Osd.qml | |
| parent | appearance: better on colours (diff) | |
| download | caelestia-shell-fb471f1023ab4991c124d0bc432028d95d7b7300.tar.gz caelestia-shell-fb471f1023ab4991c124d0bc432028d95d7b7300.tar.bz2 caelestia-shell-fb471f1023ab4991c124d0bc432028d95d7b7300.zip | |
feat: audio osd
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 + } + } + } + } + } +} |