85 lines
2.4 KiB
QML
85 lines
2.4 KiB
QML
pragma Singleton
|
|
|
|
import qs.config
|
|
import qs.custom
|
|
import Quickshell
|
|
import Quickshell.Services.Pipewire
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
readonly property PwNode sink: Pipewire.defaultAudioSink
|
|
readonly property PwNode source: Pipewire.defaultAudioSource
|
|
|
|
PwObjectTracker {
|
|
objects: [root.sink, root.source]
|
|
}
|
|
|
|
readonly property bool muted: !!sink?.audio?.muted
|
|
readonly property real volume: sink?.audio?.volume ?? 0
|
|
|
|
readonly property bool sourceMuted: !!source?.audio?.muted
|
|
readonly property real sourceVolume: source?.audio?.volume ?? 0
|
|
|
|
function setVolume(newVolume: real, s: PwNode): void {
|
|
if (!s) s = sink;
|
|
if (s?.ready && s?.audio) {
|
|
s.audio.volume = Math.max(0, Math.min(1, newVolume));
|
|
}
|
|
}
|
|
|
|
function increaseVolume(amount: real, s: PwNode): void {
|
|
setVolume(volume + (amount || Config.osd.volumeIncrement), s);
|
|
}
|
|
|
|
function decreaseVolume(amount: real, s: PwNode): void {
|
|
setVolume(volume - (amount || Config.osd.volumeIncrement), s);
|
|
}
|
|
|
|
CustomShortcut {
|
|
name: "volumeUp"
|
|
description: "Increase volume"
|
|
onPressed: root.increaseVolume()
|
|
}
|
|
|
|
CustomShortcut {
|
|
name: "volumeDown"
|
|
description: "Decrease volume"
|
|
onPressed: root.decreaseVolume()
|
|
}
|
|
|
|
CustomShortcut {
|
|
name: "mute"
|
|
description: "Toggle muting of output (Pipewire default audio sink)"
|
|
onPressed: root.sink.audio.muted = !root.muted
|
|
}
|
|
|
|
CustomShortcut {
|
|
name: "muteMic"
|
|
description: "Toggle muting of input (Pipewire default audio source)"
|
|
onPressed: root.source.audio.muted = !root.sourceMuted
|
|
}
|
|
|
|
function setSourceVolume(newVolume: real, s: PwNode): void {
|
|
if (!s) s = source;
|
|
if (s?.ready && s?.audio) {
|
|
s.audio.volume = Math.max(0, Math.min(1, newVolume));
|
|
}
|
|
}
|
|
|
|
function incrementSourceVolume(amount: real, s: PwNode): void {
|
|
setSourceVolume(sourceVolume + (amount || Config.osd.micIncrement), s);
|
|
}
|
|
|
|
function decrementSourceVolume(amount: real, s: PwNode): void {
|
|
setSourceVolume(sourceVolume - (amount || Config.osd.micIncrement), s);
|
|
}
|
|
|
|
function setAudioSink(newSink: PwNode): void {
|
|
Pipewire.preferredDefaultAudioSink = newSink;
|
|
}
|
|
|
|
function setAudioSource(newSource: PwNode): void {
|
|
Pipewire.preferredDefaultAudioSource = newSource;
|
|
}
|
|
}
|