diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-17 12:15:49 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-17 12:15:49 +0200 |
| commit | 59fc42e0e23911abeec84fb3bc6c2fcf77ae08c6 (patch) | |
| tree | 1780c3430649c0e24924be241d62a76b9085e64b /desktop | |
| parent | 65c664e716a17fa3e200cc86131f514f5a817d60 (diff) | |
| download | quickshell-59fc42e0e23911abeec84fb3bc6c2fcf77ae08c6.tar.gz quickshell-59fc42e0e23911abeec84fb3bc6c2fcf77ae08c6.zip | |
island: elapsed-time helper for the OBS pill
Diffstat (limited to 'desktop')
| -rw-r--r-- | desktop/island/Logic.js | 9 | ||||
| -rw-r--r-- | desktop/island/test_logic.js | 9 |
2 files changed, 17 insertions, 1 deletions
diff --git a/desktop/island/Logic.js b/desktop/island/Logic.js index e79625c..24458cd 100644 --- a/desktop/island/Logic.js +++ b/desktop/island/Logic.js @@ -62,3 +62,12 @@ function parseOpenWindow(data) { const p = String(data || "").split(","); return { address: p[0] || "", workspace: p[1] || "", appClass: p[2] || "" }; } + +// OBS's outputDuration (ms) as mm:ss, or h:mm:ss past an hour. +function obsElapsed(ms) { + const s = Math.floor((ms > 0 ? ms : 0) / 1000); + const two = n => String(n).padStart(2, "0"); + const h = Math.floor(s / 3600); + const mmss = `${two(Math.floor(s / 60) % 60)}:${two(s % 60)}`; + return h ? `${h}:${mmss}` : mmss; +} diff --git a/desktop/island/test_logic.js b/desktop/island/test_logic.js index 5932991..ee237cc 100644 --- a/desktop/island/test_logic.js +++ b/desktop/island/test_logic.js @@ -8,7 +8,7 @@ const assert = require("assert"); const src = fs.readFileSync(__dirname + "/Logic.js", "utf8") .replace(/^\.pragma library$/m, ""); const L = new Function(src + - "\nreturn { volumeIcon, vmRole, flagFor, privacyRoles, parseOpenWindow };")(); + "\nreturn { volumeIcon, vmRole, flagFor, privacyRoles, parseOpenWindow, obsElapsed };")(); // Volume: muted or zero is muted, then thirds. assert.strictEqual(L.volumeIcon(0.5, true), "audio-volume-muted"); @@ -52,4 +52,11 @@ assert.deepStrictEqual(L.parseOpenWindow("55d1a0,3,kitty,a, b, c"), assert.deepStrictEqual(L.parseOpenWindow(""), { address: "", workspace: "", appClass: "" }); +// OBS elapsed: mm:ss under an hour, h:mm:ss past it. +assert.strictEqual(L.obsElapsed(0), "00:00"); +assert.strictEqual(L.obsElapsed(61000), "01:01"); +assert.strictEqual(L.obsElapsed(3599999), "59:59"); +assert.strictEqual(L.obsElapsed(3661000), "1:01:01"); +assert.strictEqual(L.obsElapsed(undefined), "00:00"); + console.log("ok"); |
