aboutsummaryrefslogtreecommitdiffstats
path: root/DESIGN.md
diff options
context:
space:
mode:
Diffstat (limited to 'DESIGN.md')
-rw-r--r--DESIGN.md24
1 files changed, 9 insertions, 15 deletions
diff --git a/DESIGN.md b/DESIGN.md
index b463c1f..cd7a8a5 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -12,15 +12,13 @@ bottom:
- **Header.** The title, or the glyph that stands in for it, sits top-left in
the `label` colour. The card's **big number** sits at the right edge, on the
same line, in `FONT_HEAVY`. Nothing else shares that line. A card whose data
- lives entirely in its variable band drops the big number: `disks` has no
- headline, the rings are the value.
+ lives entirely in its variable band drops the big number and lets that band be the value.
- **Body.** Rows follow one pattern: **label left, value right**
(`card.text` and `card.text_right`), so the eye runs down the right edge for
numbers. A row's value takes the `threshold` colour when it is a measured
quantity, and stays in `value` when it is not (a fan RPM, a total).
- **Variable band.** One element may absorb the height left over, chosen per
- card: the equaliser in `system`, the daylight arc in `weather`, the ring row
- in `disks`. Or the type itself fills the cell.
+ card: the daylight arc in `weather`. Or the type itself fills the cell.
Failure states keep the chrome and draw a notice in it ("no cache data", `--`
for a missing sensor). An empty cell is indistinguishable from a crashed
@@ -40,7 +38,7 @@ Everything else exists to keep those two readable at any cell size.
of a width fit and a height budget. `card.fit_unit` measures candidate rows
and returns the largest base size that fits the width, and a row that would
collide pulls the size down. Bigger cell, bigger type instead of empty space.
- The `system`, `gpu` and `cache` cards do this; a card that cannot afford the
+ The `cache` card does this; a card that cannot afford the
measuring pass may key off width with a clamped factor.
- **Roles.** `FONT_MONO` for labels and row text, `FONT_HEAVY` for the big
number, `FONT_UI` for prose (a condition description, a notice). Sizes within
@@ -54,14 +52,11 @@ One language for every measured quantity, so state is read rather than decoded:
| State | Role | Example |
|---|---|---|
-| fine | `ok` | a cool sensor, an empty filesystem |
-| busy | `warning` | a core under load, a filesystem past 25% |
-| hot / full | `critical` | a sensor at its ceiling, a nearly full disk |
-
-- Proportions (CPU load, filesystem and cache usage) use **25% / 75%**.
-- Temperatures use a **per-sensor pair**, because 70C is unremarkable on a CPU
- and alarming on an NVMe. The pairs live beside the hwmon bindings in the
- widget.
+| fine | `ok` | a fresh cache, a current changelog |
+| busy | `warning` | a cache past 25% |
+| hot / full | `critical` | a cache past 75%, a stale changelog |
+
+- Proportions (cache usage) use **25% / 75%**.
- `warning` is the palette's middle role. The board should show all three
states in normal use, or the language is not earning its place.
- The big value's colour follows what it is: `body` for a plain number, the
@@ -72,8 +67,7 @@ One language for every measured quantity, so state is read rather than decoded:
## Glyphs
Nerd Font glyphs stand in for labels where an icon reads faster than a word:
-the disks rings put a distro / house / disk / network glyph at each ring's
-centre, weather puts the condition glyph in its header, and every card title
+weather puts the condition glyph in its header, and every card title
carries one in `highlight` before its label (the codepoints live in
`card.ICON`). A wrong-but-present codepoint draws a plausible neighbour rather
than failing, so render a new glyph and look at it before trusting it.