Research 027/03: the laptop's power management; 026/04: fonts
This commit is contained in:
@@ -60,5 +60,5 @@ desktops. Measured in [01](01-what-the-workstations-run.md):
|
|||||||
|
|
||||||
- [01 — What the workstations run](01-what-the-workstations-run.md): evidence.
|
- [01 — What the workstations run](01-what-the-workstations-run.md): evidence.
|
||||||
- [02 — The questions and the options](02-the-questions-and-the-options.md)
|
- [02 — The questions and the options](02-the-questions-and-the-options.md)
|
||||||
- [04 — Screensaver, displays and menus](04-screensaver-displays-and-menus.md): the lock and idle module, monitor layouts by the monitors' identity, rofi and dmenu behind one launcher seat, the clipboard
|
- [04 — Screensaver, displays and menus](04-screensaver-displays-and-menus.md): the lock and idle module, monitor layouts by the monitors' identity, rofi and dmenu behind one launcher seat, the clipboard, fonts
|
||||||
- [03 — What the predecessor taught](03-what-the-predecessor-taught.md): its 128 modules and 3,395 commits, as patterns to keep and failures not to repeat; shared with research 027.
|
- [03 — What the predecessor taught](03-what-the-predecessor-taught.md): its 128 modules and 3,395 commits, as patterns to keep and failures not to repeat; shared with research 027.
|
||||||
|
|||||||
@@ -92,3 +92,26 @@ Three areas the operator named on 2026-10-04, as their own modules. Each sharpen
|
|||||||
- or `clipmenu` (official), which feeds the same dmenu-compatible command as the launcher seat above,
|
- or `clipmenu` (official), which feeds the same dmenu-compatible command as the launcher seat above,
|
||||||
and needs no archive.
|
and needs no archive.
|
||||||
- **On Wayland** the same seat is held by `cliphist` with `wl-clipboard`, both official.
|
- **On Wayland** the same seat is held by `cliphist` with `wl-clipboard`, both official.
|
||||||
|
|
||||||
|
## Fonts
|
||||||
|
|
||||||
|
**Measured:**
|
||||||
|
|
||||||
|
- The fonts the desktop uses are **hand-copied files** in the account's font directory, not packages:
|
||||||
|
- a Nerd font for the window manager, the bar and the terminal;
|
||||||
|
- a second one for the prompt;
|
||||||
|
- on one workstation, the same four files twice, once under URL-encoded names;
|
||||||
|
- on the other, a different build of the same font and three more copied from a theme's repository.
|
||||||
|
- The system's default monospace is a different font (`Noto Sans Mono`), so anything that asks for
|
||||||
|
`monospace` gets another face than the terminal.
|
||||||
|
- The DPI is fixed in an X resource.
|
||||||
|
- **Every Nerd font in use is in the official repositories** (Hack, Meslo, Iosevka, JetBrains Mono).
|
||||||
|
|
||||||
|
**Starting position:**
|
||||||
|
|
||||||
|
- **A `fonts` module:** the official packages, and a fontconfig file it owns that maps `monospace` (and
|
||||||
|
the emoji and symbol fallbacks) to the chosen faces, so every program agrees.
|
||||||
|
- The terminal, bar, launcher and prompt modules name the family, not a file.
|
||||||
|
- The DPI becomes the display server's setting (issue 168).
|
||||||
|
- The copied files are removed by the operator once the packages are in (ADR 0182).
|
||||||
|
- Fonts are not a seat: several coexist. The module owns the one place where *the* default is said.
|
||||||
|
|||||||
@@ -51,5 +51,5 @@ matters on their own.
|
|||||||
|
|
||||||
- [01 — What the machines run](01-what-the-machines-run.md): evidence.
|
- [01 — What the machines run](01-what-the-machines-run.md): evidence.
|
||||||
- [02 — Candidates and questions](02-candidates-and-questions.md)
|
- [02 — Candidates and questions](02-candidates-and-questions.md)
|
||||||
- [03 — The account's own tools](03-the-accounts-own-tools.md): `~/.ssh` as one module's, scripts on every machine, the keyring, mail as events
|
- [03 — The account's own tools](03-the-accounts-own-tools.md): `~/.ssh` as one module's, scripts on every machine, the keyring, the laptop's power management, mail as events
|
||||||
- The predecessor's lessons, shared with research 026: [026/03](../026-the-graphical-session-as-modules/03-what-the-predecessor-taught.md)
|
- The predecessor's lessons, shared with research 026: [026/03](../026-the-graphical-session-as-modules/03-what-the-predecessor-taught.md)
|
||||||
|
|||||||
@@ -126,3 +126,44 @@ The second unlock prompt and the second daemon start go away.
|
|||||||
- **Where it runs:** one long-running module, not per machine (ADR 0198).
|
- **Where it runs:** one long-running module, not per machine (ADR 0198).
|
||||||
|
|
||||||
The obvious first step is the mail server the mesh already runs.
|
The obvious first step is the mail server the mesh already runs.
|
||||||
|
|
||||||
|
## Power management on the laptop
|
||||||
|
|
||||||
|
*"Power management for the laptop."*
|
||||||
|
|
||||||
|
**Measured on the laptop** (a gaming model with a hybrid GPU):
|
||||||
|
|
||||||
|
- **The platform profile is driven by a vendor daemon** (`asusd`) and its CLI. The vendor CLI is
|
||||||
|
now in the official repositories; the copy installed came from elsewhere. A predecessor script
|
||||||
|
runs as a user unit and switches the profile every five seconds: quiet on battery, balanced on
|
||||||
|
mains, performance above 50 % CPU.
|
||||||
|
- **The hybrid GPU's mode** (now hybrid) is held by a second vendor daemon (`supergfxd`), which is
|
||||||
|
**not** in the official repositories. Kernel-module options for the discrete GPU's power state
|
||||||
|
and its suspend, hibernate and resume units are set by hand. Its own power daemon is masked.
|
||||||
|
- **The battery charge limit is 80 %,** set by the vendor daemon.
|
||||||
|
- **The lid and power key suspend.** The brightness key is ignored by logind and handled by the
|
||||||
|
vendor-key path. Both are logind drop-ins.
|
||||||
|
- **Memory pressure:** compressed swap in RAM (`zram`) beside a swap file and a partition;
|
||||||
|
`systemd-oomd` with drop-ins; a predecessor *memory guard* user unit that notifies before the OOM
|
||||||
|
killer acts.
|
||||||
|
- `upower` runs. There is no `power-profiles-daemon`, `tlp`, `auto-cpufreq` or `thermald`, so nothing
|
||||||
|
competes with the vendor daemon, by design.
|
||||||
|
|
||||||
|
All of it came from two predecessor modules, one of which was a laptop-model *flavor*. A desktop
|
||||||
|
received part of it (research 026/01).
|
||||||
|
|
||||||
|
**Starting position:**
|
||||||
|
|
||||||
|
- **A hardware module per machine model** (here, the laptop's model). It holds the vendor daemon and
|
||||||
|
its profile configuration, the GPU mode daemon (ADR 0205's case, or the build machine's package
|
||||||
|
repository of research 027 question 1), the discrete GPU's module options and suspend units, the
|
||||||
|
logind drop-ins, the battery charge limit, and the vendor keys and brightness. It is assigned to
|
||||||
|
the one machine of that model, and to any second one later.
|
||||||
|
- **The profile switching** moves from a polling script to the module's own long-running code
|
||||||
|
(ADR 0198). It reacts to the power-supply change event instead of polling, and its thresholds
|
||||||
|
become settings (issue 168).
|
||||||
|
- **Memory pressure is not the laptop's alone.** `zram` and `systemd-oomd` with the notifier are a
|
||||||
|
`memory-pressure` module, assigned wherever wanted. The swap layout stays the machine's (`kernel`
|
||||||
|
module, question 3).
|
||||||
|
- A **`node-power-profile`** seat (vendor daemon, or `power-profiles-daemon` on other hardware)
|
||||||
|
gives the mesh one verb, `profile`, the same on every machine that has one.
|
||||||
|
|||||||
Reference in New Issue
Block a user