Write down where all of this came from

Section G, the closeout.

UPSTREAM-INSPIRATION gains the second and largest borrowing round: what
was taken from omarchy, end-4, caelestia, ML4W and HyDE, what was
rebuilt rather than transplanted, and -- the part that matters more --
what was declined and why. Wallpaper-derived colour is declined on
identity, because dynamic colour is how rices end up looking like each
other. Audio visualisers are declined because a continuously repainting
equaliser is the GPU-pegging animation this project avoids. Patching
application internals to theme them is declined because the maintenance
is unbounded and lands on whoever is holding the desktop that day.

DESKTOP-PARITY gains a Portable machines section, which it has never
had, because until yesterday Panama was a desktop configuration in the
code as well as on the machine. Nine rows, one of them honest about not
having run on hardware with a lid. The remaining-gaps list gains the
four things now known to be missing rather than the one.

The README stops describing a desktop from before yesterday: migrations
in the install flow, the welcome and cheatsheet and manual, and laptops
working with every surface hiding itself where the hardware is absent.

The plan records its own outcome per section, including the two places
the work departed from it: D2's template renderer deferred once D1
removed the duplication it existed to fix, and E1 inverted after using
it for an afternoon.
This commit is contained in:
Gabriel Brown
2026-08-22 07:48:24 -04:00
parent 4910bd659c
commit 41dd91eb75
4 changed files with 281 additions and 115 deletions
+31
View File
@@ -39,6 +39,29 @@ Last live audit: 2026-08-17, Fedora 44, Hyprland 0.56.2, Quickshell 0.3.0.
| System settings | The Settings app for display policy, appearance, desktop, sound, focus, shortcuts, and services; labeled GNOME hardware/account handoffs | Live |
| System health and recovery | Settings → System Health, `Check System Health` in Vicinae, a degraded-only bar indicator, redacted reports, and bounded Panama-owned repairs | Live |
## Portable machines
Panama was a desktop configuration until 2026-08-22, in the code as well as on
the machine: there was no reference to a battery, a lid, or a power source
anywhere in it, and `hypridle.conf` said "This is a desktop" in its own header.
| Capability | Panama implementation | Status |
|---|---|---|
| Battery level | `services/Battery.qml` reads sysfs the way Vitals reads procfs; bar indicator hides entirely without a battery | Live |
| Power source | `panama-hw ac`; a machine with no mains supply reports as on wall power, so a desktop is never treated as running out | Live |
| Charge threshold | Power page control, only where the firmware exposes a ceiling; written through `panama-sudo` | Live |
| Idle timings per power source | hypridle holds one set at a time, so `panama-idle` rebuilds its config when the charger comes or goes | Live |
| Lock on lid close | hypridle's `before_sleep_cmd` already locks, so a lid-close suspend is a locked suspend | Live |
| Clamshell / docked | A logind `handle-lid-switch` inhibitor held while an external display is connected. No lid watcher, and a failure returns logind's default | Live, untested on a lid |
| Display arrangement on reconnect | `Displays.plannedRestore()` reapplies a confirmed layout, refusing when the stored mode is not offered | Live |
| Charger and low-battery notices | `StatusEvents`; the charger is ambient so DND quiets it, critical battery is not | Live |
| Hardware predicates | `panama-hw`: laptop, battery, ac, lid-closed, external-monitor, clamshell, touchpad, nvidia | Live |
The clamshell path is the one row that has not run on hardware with a lid.
Everything testable about it is tested; the end-to-end behaviour of closing a
real lid on a docked machine is not, and the helper's header says so rather
than letting silence imply otherwise.
## System health and recovery
Panama stays silent while the desktop is healthy. A compact bar indicator
@@ -91,6 +114,14 @@ a polished general-purpose desktop can go beyond the current shell.
1. A real external RustDesk test while hyprlock is active. Local process state
cannot prove what a remote client sees or whether input is accepted.
2. Closing a real lid on a docked laptop. The inhibitor, the predicates and the
decision are all tested; the physical gesture is not.
3. A keyboard-layout change notice. Hyprland reports the active keymap but not
a change event Quickshell already consumes, so this needs either polling or
new event plumbing, and a single-layout machine cannot test it.
4. Sticky keys, slow keys and bounce keys. AccessX is an X11 server feature
with no Wayland equivalent; GNOME, macOS and Windows all ship these.
5. An on-screen keyboard, for a touch or convertible machine.
KDE Connect, the printer UI, Tesseract, and ZBar are installed and remain
tracked in `setup/packages/hyprland-packages`.