gate cava on panel open, kill 30s after panel closes

This commit is contained in:
Damocles 2026-04-16 00:50:02 +02:00
parent 0923596b4b
commit 0ff19a7b84

View file

@ -41,9 +41,26 @@ M.BarSection {
// Cava visualizer 16 bars, raw output mode // Cava visualizer 16 bars, raw output mode
property var _cavaBars: Array(16).fill(0) property var _cavaBars: Array(16).fill(0)
property bool _cavaActive: false
on_ShowPanelChanged: {
if (_showPanel) {
_cavaKillTimer.stop();
_cavaActive = true;
} else {
_cavaKillTimer.restart();
}
}
Timer {
id: _cavaKillTimer
interval: 30000
onTriggered: root._cavaActive = false
}
Process { Process {
id: cavaProc id: cavaProc
running: root.playing && root.visible running: root.playing && root._cavaActive
command: ["sh", "-c", "cfg=$(mktemp /tmp/nova-cava-XXXXXX.conf);" + "cat > \"$cfg\" << 'CAVAEOF'\n" + "[general]\nbars=16\nframerate=30\n[output]\nmethod=raw\nraw_target=/dev/stdout\ndata_format=ascii\nascii_max_range=100\n" + "CAVAEOF\n" + "trap 'rm -f \"$cfg\"' EXIT;" + "exec cava -p \"$cfg\""] command: ["sh", "-c", "cfg=$(mktemp /tmp/nova-cava-XXXXXX.conf);" + "cat > \"$cfg\" << 'CAVAEOF'\n" + "[general]\nbars=16\nframerate=30\n[output]\nmethod=raw\nraw_target=/dev/stdout\ndata_format=ascii\nascii_max_range=100\n" + "CAVAEOF\n" + "trap 'rm -f \"$cfg\"' EXIT;" + "exec cava -p \"$cfg\""]
stdout: SplitParser { stdout: SplitParser {
splitMarker: "\n" splitMarker: "\n"