Skip to content

zbook-batch-6: the lock's pointer and scale, power.sh without programs, intel_pstate, key pages with no key - #677

Draft
DevomB wants to merge 24 commits into
zbook-batch-5from
zbook-batch-6
Draft

DevomB wants to merge 24 commits into
zbook-batch-5from
zbook-batch-6

Conversation

@DevomB

@DevomB DevomB commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

The batch after #670, stacked on zbook-batch-5. It is proved on its own Distro run before main moves.

Every member was read by someone other than its author, at the head merged here (see the ledger):

PR Head What
#672 587e658 power.sh's look starts no program: read, [[ ]], the loadable sleep, and state written in place while sealed.
#671 c29fb11 The pointer leaves every window at the lock, as the keyboard does, so a click or wheel turn under the lock reaches no zone.
#675 c81d963 The lock draws at each output's scale through wp_viewporter and wp_fractional_scale_v1, so its lettering is sharp at 1.5 or 2.
#680 3f849c8 At a fractional scale dwl starts each window on a whole pixel of its screen, so a buffer drawn at the exact scale is not resampled.
#673 5a61188 A key page that answers with no OpenPGP data at all is unread, not a changed key. --strict still fails it.
#676 1802893 intel_pstate is built beside #650's amd-pstate, with amd-pstate's dynamic EPP stated off, and both drivers are critical options.
#674 da8411b A built-in camera's USB device may sleep from boot, until its first grant.
#678 4adb01d Guide, status and hardware: a Thunderbolt or USB4 dock on such a port may leave its monitors dark, as no USB4 driver is built.
#679 4f8225b The committed slot's firmware entry keeps its place in BootOrder, where efiboot appended it last on every trial.

#671's and #673's own Source manifest failed only on zstd's key at facebook.github.io, which #663 (in zbook-batch-5) fixes.

Effect on the caches: #676 rebuilds the kernel (stage 05). No stage 04 row changes, so no image rebuilds because of this batch; the images rebuild only because a new branch has no cache of its own.

DevomB added 24 commits October 29, 2026 04:51
dwl clears the keyboard's focus at the lock but moves the pointer's only
with the pointer. Until it moved, the window it rested on took a click or a
wheel turn under the lock, and a window a button was held down on kept the
pointer through dwl's pressed-button rule: its moves and its release
reached a zone's window under the lock. locksession now clears the seat's
pointer focus and ends a move or resize by hand; the button's own release
comes later and goes to no window. The unlock gives the pointer back as
before (destroylock's motionnotify).

The GUI suite checks both: a click and a wheel turn under the lock with the
pointer unmoved on a zone's window, and a button held on it into the lock,
then moved and let go; the window must be sent no pointer event after the
lock, with the held press reaching it beforehand as the control. vm-drive
gains button:, button-down: and button-up: (QMP btn events), with tests,
and wlprobe's cursor mode says each leave, motion and wheel event.
While the state partition waits for its passphrase, a program started
waits on it: its loader reads /etc, whose upper layer is there. power.sh
started cat, sed, grep and mv on every look and sleep(1) every round, so
from a wake to the prompt it stalled on its first look, and the state
the chrome reads stopped changing. The 3% power-off was already
kryptikd's then.

A look now reads /sys and the last state with bash's own read, matches
with [[ ]], and keeps its results in variables, not command output. The
rounds wait in bash's loadable sleep, as the watchdog's do. The state is
still renamed into place, but written in place while the partition
waits, as mv is a program.

The fixture test runs one look with PATH leading nowhere under a stand-in
sealed partition: any program started would fail and show.
An origin row's page that answers 200 with no OpenPGP key at all, as an
error page does, was refused as published-key-changed and failed CI's
Source manifest on a pull request (zlib against madler.net, once, cleared
by a re-run). It now counts as not read, as a page that does not answer:
--strict still fails it, so main and Distro read every copy, and a pull
request's --unread-warns checks the source against the key held. A page
that serves another key is still refused.
The USB core keeps every new device awake until its driver allows
autosuspend. For a camera that is uvcvideo's probe, and uvcvideo here
binds only for a grant, so a built-in camera stayed awake from boot until
its first grant, unlike on a stock system. An eudev rule sets
power/control to auto for a USB device with a video control interface on
a port the hub calls fixed. Webcams keep the core's default, since
uvcvideo keeps a few awake that fail when they sleep.

The hardware report gains a "camera usb" line per camera device, giving
its port, power/control and runtime status, so the unit's own report
shows whether the rule applied; hardware.md gains the row that reads it.
A bare revocation, a key gpg cannot parse or one with no valid user ID
lists no primary key either, and these stay refused as a changed key:
they are something published there, not an error page. The test is an
armor header, or a binary packet's first byte with its top bit set.
kryptik-lock drew every lock surface at its logical size with a buffer
scale of 1, so at scale 2 or a fraction the compositor enlarged it and its
5x7 lettering came out soft, unevenly so at 1.25 and 1.5. It now binds
wp_viewporter and wp_fractional_scale_v1 where the compositor offers them,
draws each output's picture at the surface's size times the scale that
output's preferred_scale gives, and shows it at the surface's size through
a viewport, as havoc's 0003 does for the terminals. The letter size follows
the picture's height in the output's own pixels, so the words keep their
size on the screen. Without the two protocols it draws as before.

The recipe and desktop-compile.sh generate the two protocols' code for it.
The GUI suite locks while the second monitor is at scale 2 and finds a
buffer twice its surface's size, then types the password to unlock. Only
the scale lines of libwayland's log are kept, as the rest would hold the
password's keys.
Neither X86_INTEL_PSTATE nor X86_AMD_PSTATE has a Kconfig default, and
x86_64_defconfig names neither, so every machine ran acpi-cpufreq under
defconfig's userspace governor, which holds the clock where the firmware
left it, and power.sh found no energy_performance_preference to set.

Both are built in. amd-pstate starts in active mode with its dynamic EPP
off, so the kernel does not override what power.sh sets from the charger.
A processor neither takes falls back to acpi-cpufreq under schedutil. Both
drivers join the critical options, so a fragment that loses one fails.
…hedutil there, so this adds intel_pstate and the dynamic EPP line to its block
A locale's collation may sort 1-11:1.0 between 1-1:1.1 and 1-1:1.2, and
comparing with the last device printed then printed port 1's camera
twice. The devices printed are kept instead, and the fixture adds a
separate infrared camera on port 11 beside the one on port 1.
…read, [[ ]], loadable sleep, and state written in place while sealed
…e through a viewport, so its lettering is sharp at 1.5 or 2
…ne's clock scales and takes the energy preference
The guide said many docks fall back to plain USB-C. On a Thunderbolt or
USB4 port, as on the ZBook, a Thunderbolt or USB4 dock connects as USB4
instead, and its DisplayPort is a tunnel that only the unbuilt Thunderbolt
driver sets up, so its monitors may stay dark as well as its USB ports and
Ethernet. The guide now says so, and that such a dock on a plain USB-C port,
or the monitor on the laptop, is the way through; status.md's gap says the
same, and the hardware row asks which port the dock was on.
Every trial ended with forget and then ensure, and ensure appended the
committed slot's entry last in BootOrder. A firmware that lists network
boot after the disks put Kryptik behind it, so each boot waited on the
network first, and every update undid an order set in the firmware's
setup.

kryptik-efiboot gains keep SLOT [ESP]: forget, then the entry where
Kryptik's first entry stood. It exits 1 when the forgetting failed and 3
when only the entry did, so boot-success and kryptik-recover keep their
two messages. A new entry, from ensure or set-next, goes after the last
BootOrder entry that does not boot from the network (a MAC, IPv4, IPv6
or URI node), and so never ahead of another system's entry.
wlroots puts a surface at its position times the output's scale, rounded,
and sizes it by rounding its far edge. Where the position times the scale
is not whole, as for an odd x at 1.5 or one not a multiple of 4 at 1.25, a
buffer drawn at the window's size times the scale is shown a pixel off its
own size, and pixman scales it, soft and on every redraw, even for a
client such as Firefox that draws at the exact scale. dwl's tiles start
wherever mfact and the border put them, so most windows were off the grid.

resize now moves a window's surface onto its screen's grid, in steps of 2
at 1.5 and 4 at 1.25 or 1.75, and leaves other scales as they are. A tiled
window gives up the pixels from its width and height, so it stays inside
its tile; a floating one moves, so a drag does not shrink it.

dwl-headless.sh checks it: at scale 1 the one window fills the output
inside its border, and once kryptik-display has put the output at 1.25 it
is configured smaller by the step from its border to the next multiple of 4.
USB4 also runs at 20 Gbps, a 20Gbps mark can be plain USB 3.2, and some
makers mark USB4 ports with a DisplayPort or power icon or nothing, so the
guide says the laptop's specifications tell which ports are USB4.
… dock on such a port may leave its monitors dark, as no USB4 driver is built
…each window on a whole pixel of its screen, so a buffer drawn at the exact scale is shown at its own size
…e in the boot order its slot's entry had, rather than going last

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant