diff options
Diffstat (limited to 'DESIGN.md')
| -rw-r--r-- | DESIGN.md | 24 |
1 files changed, 9 insertions, 15 deletions
@@ -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. |
