aboutsummaryrefslogtreecommitdiffstats
path: root/desktop
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-07 18:46:27 +0200
committerDanilo M. <danix@danix.xyz>2026-10-07 18:46:27 +0200
commit3ad0c126ff287cc66b8532196a897d65d114b4a8 (patch)
treeb6b3ad17a8470bc615444a701cf6f4a77be040ca /desktop
parent0ea72748e5908e9522566e251e9d8940a5ff765a (diff)
downloadquickshell-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>
Diffstat (limited to 'desktop')
-rw-r--r--desktop/island/Logic.js4
-rw-r--r--desktop/island/test_logic.js3
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");