diff options
Diffstat (limited to 'services/Audio.qml')
| -rw-r--r-- | services/Audio.qml | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/services/Audio.qml b/services/Audio.qml index 95990c5..bc87d46 100644 --- a/services/Audio.qml +++ b/services/Audio.qml @@ -2,12 +2,17 @@ pragma Singleton import qs.config import Caelestia.Services +import Caelestia import Quickshell import Quickshell.Services.Pipewire +import QtQuick Singleton { id: root + property string previousSinkName: "" + property string previousSourceName: "" + readonly property var nodes: Pipewire.nodes.values.reduce((acc, node) => { if (!node.isStream) { if (node.isSink) @@ -74,6 +79,35 @@ Singleton { Pipewire.preferredDefaultAudioSource = newSource; } + onSinkChanged: { + if (!sink?.ready) + return; + + const newSinkName = sink.description || sink.name || qsTr("Unknown Device"); + + if (previousSinkName && previousSinkName !== newSinkName && Config.utilities.toasts.audioOutputChanged) + Toaster.toast(qsTr("Audio output changed"), qsTr("Now using: %1").arg(newSinkName), "volume_up"); + + previousSinkName = newSinkName; + } + + onSourceChanged: { + if (!source?.ready) + return; + + const newSourceName = source.description || source.name || qsTr("Unknown Device"); + + if (previousSourceName && previousSourceName !== newSourceName && Config.utilities.toasts.audioInputChanged) + Toaster.toast(qsTr("Audio input changed"), qsTr("Now using: %1").arg(newSourceName), "mic"); + + previousSourceName = newSourceName; + } + + Component.onCompleted: { + previousSinkName = sink?.description || sink?.name || qsTr("Unknown Device"); + previousSourceName = source?.description || source?.name || qsTr("Unknown Device"); + } + PwObjectTracker { objects: [...root.sinks, ...root.sources] } |