fedora
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
pragma Singleton
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Services.Pipewire
|
||||
import qs.Commons
|
||||
import qs.Services.UI
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
// TODO Remove in may 2026
|
||||
Component.onCompleted: {
|
||||
_setBandsCount();
|
||||
}
|
||||
|
||||
// Register a component that needs audio data, call this when a visualizer becomes active.
|
||||
// Pass a unique identifier (e.g., "lockscreen", "controlcenter:screen1", "plugin:fancy-audiovisualizer")
|
||||
function registerComponent(componentId) {
|
||||
root._registeredComponents[componentId] = true;
|
||||
root._registeredComponents = Object.assign({}, root._registeredComponents);
|
||||
Logger.d("Spectrum", "Component registered:", componentId, "- total:", root._registeredCount);
|
||||
}
|
||||
|
||||
// Unregister a component when it no longer needs audio data.
|
||||
function unregisterComponent(componentId) {
|
||||
delete root._registeredComponents[componentId];
|
||||
root._registeredComponents = Object.assign({}, root._registeredComponents);
|
||||
Logger.d("Spectrum", "Component unregistered:", componentId, "- total:", root._registeredCount);
|
||||
}
|
||||
|
||||
// Check if a component is registered
|
||||
function isRegistered(componentId) {
|
||||
return root._registeredComponents[componentId] === true;
|
||||
}
|
||||
|
||||
// Component registration - any component needing audio data registers here
|
||||
property var _registeredComponents: ({})
|
||||
readonly property int _registeredCount: Object.keys(_registeredComponents).length
|
||||
property bool _shouldRun: _registeredCount > 0
|
||||
|
||||
property var values: []
|
||||
property bool isIdle: true
|
||||
|
||||
PwAudioSpectrum {
|
||||
id: spectrum
|
||||
node: Pipewire.defaultAudioSink
|
||||
enabled: root._shouldRun
|
||||
// TODO Uncomment this in may 2026
|
||||
// bandCount: Settings.data.audio.spectrumMirrored ? 32 : 64
|
||||
frameRate: Settings.data.audio.spectrumFrameRate
|
||||
lowerCutoff: 50
|
||||
upperCutoff: 12000
|
||||
noiseReduction: 0.77
|
||||
smoothing: true
|
||||
|
||||
onValuesChanged: {
|
||||
root.values = spectrum.values;
|
||||
}
|
||||
|
||||
onIdleChanged: {
|
||||
root.isIdle = spectrum.idle;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO Remove in may 2026 - temporary until noctalia-qs is fully propagated
|
||||
Connections {
|
||||
target: Settings.data.audio
|
||||
function onSpectrumMirroredChanged() {
|
||||
_setBandsCount();
|
||||
}
|
||||
}
|
||||
function _setBandsCount() {
|
||||
const bandCount = Settings.data.audio.spectrumMirrored ? 32 : 64;
|
||||
if (spectrum.bandCount !== undefined) {
|
||||
spectrum.bandCount = bandCount;
|
||||
} else if (spectrum.barCount !== undefined) {
|
||||
spectrum.barCount = bandCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user