diff --git a/ryoku/shell/CHANGELOG.md b/ryoku/shell/CHANGELOG.md index 7a48e990a..087f7d22c 100644 --- a/ryoku/shell/CHANGELOG.md +++ b/ryoku/shell/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog: ryoku/shell/ ## Unreleased +- **The shell starts again after the visualizer sink fix.** `services/Audio.qml` + declared `onSinkChanged` twice, which QML rejects as "Property value set + multiple times", so the shell died at launch. The two handlers are now one. - **Visualizers follow newly connected audio outputs.** Bar and desktop visualizers retarget when the default output changes without a shell reload. - **A crashed lock screen comes back after display-link churn.** Once qylock has diff --git a/ryoku/shell/quickshell/shell/services/Audio.qml b/ryoku/shell/quickshell/shell/services/Audio.qml index 119340ac4..75688ba27 100644 --- a/ryoku/shell/quickshell/shell/services/Audio.qml +++ b/ryoku/shell/quickshell/shell/services/Audio.qml @@ -162,7 +162,11 @@ Singleton { onLiveCaptureStreamsChanged: listSettle.restart() onLiveLinksChanged: listSettle.restart() - onSinkChanged: listSettle.restart() + onSinkChanged: { + listSettle.restart(); + if (root.sinkIsBluez) + root.refreshBtCard(); + } Component.onCompleted: root.syncAudioLists() function setOutput(n) { if (n) Pipewire.preferredDefaultAudioSink = n; } @@ -235,7 +239,6 @@ Singleton { readonly property bool sinkIsBluez: root.isBluez(root.sink) onSinkIsBluezChanged: root.refreshBtCard() - onSinkChanged: if (root.sinkIsBluez) root.refreshBtCard() // MAC from a bluez node name (bluez_output..), colon-formatted. function btMac(n) {