mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 17:47:09 +00:00
50 lines
1.4 KiB
QML
Executable File
50 lines
1.4 KiB
QML
Executable File
pragma Singleton
|
|
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Services.Pipewire
|
|
|
|
|
|
Singleton {
|
|
PwObjectTracker {
|
|
objects: [
|
|
Pipewire.defaultAudioSource,
|
|
Pipewire.defaultAudioSink,
|
|
Pipewire.nodes,
|
|
Pipewire.links
|
|
]
|
|
}
|
|
|
|
property var sinks: Pipewire.nodes.values.filter(node => node.isSink && !node.isStream && node.audio)
|
|
property PwNode defaultSink: Pipewire.defaultAudioSink
|
|
|
|
property var sources: Pipewire.nodes.values.filter(node => !node.isSink && !node.isStream && node.audio)
|
|
property PwNode defaultSource: Pipewire.defaultAudioSource
|
|
|
|
property real volume: defaultSink?.audio?.volume ?? 0
|
|
property bool muted: defaultSink?.audio?.muted ?? false
|
|
|
|
function setVolume(to: real): void {
|
|
if (defaultSink?.ready && defaultSink?.audio) {
|
|
defaultSink.audio.muted = false;
|
|
defaultSink.audio.volume = Math.max(0, Math.min(1, to));
|
|
}
|
|
}
|
|
|
|
function setSourceVolume(to: real): void {
|
|
if (defaultSource?.ready && defaultSource?.audio) {
|
|
defaultSource.audio.muted = false;
|
|
defaultSource.audio.volume = Math.max(0, Math.min(1, to));
|
|
}
|
|
}
|
|
|
|
function setDefaultSink(sink: PwNode): void {
|
|
Pipewire.preferredDefaultAudioSink = sink;
|
|
}
|
|
|
|
function setDefaultSource(source: PwNode): void {
|
|
Pipewire.preferredDefaultAudioSource = source;
|
|
}
|
|
|
|
function init() {
|
|
}
|
|
} |