From 3943e08dabe684b409a3ac99c9371fbeb5df5cdb Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Tue, 13 Oct 2026 11:35:00 +0200 Subject: feat: system, gpu, disks and network move to the quickshell island The quickshell island's performance panel now shows CPU, RAM, temperatures, the GPU, disks and network, and warns from the status pill when something runs hot, fills up, or the public IP drifts from the pinned one. Two dashboards drawing the same numbers would drift apart, so the four widgets go, with the disks and public IP samplers. The island keeps writing ~/.cache/udt/pubip.txt in the same format. The freed space is left empty for the user to rearrange. Co-Authored-By: Claude Sonnet 5.5 --- DESIGN.md | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'DESIGN.md') 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. -- cgit v1.2.3