summaryrefslogtreecommitdiff
path: root/modules/osd/Osd.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-04 20:45:34 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-04 20:45:34 +1000
commitfb471f1023ab4991c124d0bc432028d95d7b7300 (patch)
tree6e46278fabc8f4b584cd668703bfe28e3d78ec8d /modules/osd/Osd.qml
parentappearance: better on colours (diff)
downloadcaelestia-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.qml89
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
+ }
+ }
+ }
+ }
+ }
+}