diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-07 18:46:27 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-07 18:46:27 +0200 |
| commit | 3ad0c126ff287cc66b8532196a897d65d114b4a8 (patch) | |
| tree | b6b3ad17a8470bc615444a701cf6f4a77be040ca | |
| parent | 0ea72748e5908e9522566e251e9d8940a5ff765a (diff) | |
| download | quickshell-3ad0c126ff287cc66b8532196a897d65d114b4a8.tar.gz quickshell-3ad0c126ff287cc66b8532196a897d65d114b4a8.zip | |
fix(island): an unpopulated volume reads as muted, not high
NaN and undefined fail every comparison, so they fell through to the high
icon. A node can report before its volume is populated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| -rw-r--r-- | desktop/island/Logic.js | 4 | ||||
| -rw-r--r-- | desktop/island/test_logic.js | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/desktop/island/Logic.js b/desktop/island/Logic.js index 8df35de..e79625c 100644 --- a/desktop/island/Logic.js +++ b/desktop/island/Logic.js @@ -13,7 +13,9 @@ // The default sink's icon name. Thresholds in thirds, as waybar's wb-icon did. function volumeIcon(volume, muted) { - if (muted || volume <= 0) return "audio-volume-muted"; + // !(> 0) also catches a volume not populated yet (undefined, NaN), which + // would otherwise fall through every test and read as high. + if (muted || !(volume > 0)) return "audio-volume-muted"; if (volume < 0.33) return "audio-volume-low"; if (volume < 0.66) return "audio-volume-medium"; return "audio-volume-high"; diff --git a/desktop/island/test_logic.js b/desktop/island/test_logic.js index 44e7a73..5932991 100644 --- a/desktop/island/test_logic.js +++ b/desktop/island/test_logic.js @@ -14,6 +14,9 @@ const L = new Function(src + assert.strictEqual(L.volumeIcon(0.5, true), "audio-volume-muted"); assert.strictEqual(L.volumeIcon(0, false), "audio-volume-muted"); assert.strictEqual(L.volumeIcon(0.2, false), "audio-volume-low"); +assert.strictEqual(L.volumeIcon(undefined, false), "audio-volume-muted"); +assert.strictEqual(L.volumeIcon(NaN, false), "audio-volume-muted"); +assert.strictEqual(L.volumeIcon(0.33, false), "audio-volume-medium"); assert.strictEqual(L.volumeIcon(0.5, false), "audio-volume-medium"); assert.strictEqual(L.volumeIcon(0.66, false), "audio-volume-high"); assert.strictEqual(L.volumeIcon(1.2, false), "audio-volume-high"); |
