Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Model.js
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,9 @@ function summary(status) {
parts.push("↓" + fmtMbps(live.downMbps) + " ↑" + fmtMbps(live.upMbps))
if (live.typicalDownMbps !== null && live.typicalDownMbps !== undefined)
parts.push("typ ↓" + fmtMbps(live.typicalDownMbps))
if (live.powerW !== null && live.powerW !== undefined) parts.push(fmtW(live.powerW))
// 0 means the dish does not meter draw (see Panel.qml hasPower): leave it
// out of the tooltip rather than reporting a false 0.0 W.
if (live.powerW > 0) parts.push(fmtW(live.powerW))
var alerts = allAlertLabels(status)
for (var i = 0; i < alerts.length; i++) parts.push("⚠ " + alerts[i])
var det = String(status.stateDetail || "")
Expand Down
8 changes: 7 additions & 1 deletion Panel.qml
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,15 @@ Panel {
return m
}

// True only when the dish actually meters draw. Hardware that does not
// report power fills the ring with 0s (rev1 pre-production firmware does),
// which presence alone cannot tell apart from a real reading — so treat
// all-zero as "not reported" and hide the block instead of claiming 0.0 W
// beside an empty plot. A live idle draw is tens of watts, so a positive
// test can never hide a dish that does measure.
readonly property bool hasPower: {
var p = h ? h.powerW : []
for (var i = 0; i < p.length; i++) if (p[i] !== null && p[i] !== undefined) return true
for (var i = 0; i < p.length; i++) if (p[i] > 0) return true
return false
}

Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ pick up dashboard changes — the shell caches QML until restart.

- A Starlink dish reachable at `192.168.100.1` (default; any router setup that
lets the Starlink app work also lets Dishy work)
- A dish that reports power draw (optional; the power block is hidden when
every sample is 0 W, since such hardware does not meter draw)
- Omarchy's shell (Quickshell) — this is a `bar-widget` plugin
- `systemd` user session for the backend service
- `notify-send` for notifications (optional; already part of Omarchy)
Expand Down