Notes
Why this environment is set up the way it is.
Each note is one problem that took a while to understand, and what the repository does about it now. They are here because the answer lives in several files at once — a config, a script, a CI job — and none of those files is the right place to explain it.
The timings and counts come from one machine, described inThe machine, so you can tell which of them would hold on yours.
A config that has to be generated
GlazeWM reads one file and supports no includes, so keeping part of it out of a public repository means building the file before the window manager sees it.
A mouse that disconnects, and the wrong branch
No device-arrival event in the log ruled out the cable, the port and the socket. What remained was the radio link or the power policy above it, and a Windows update landing on the same day made the second one look obvious. It was the first one.
Finding windows that are visible and drawn nowhere
GlazeWM hides an inactive workspace by cloaking its windows through DWM. A crash, a monitor plugged in, or presentation mode toggled leaves the cloak without the manager — a window that reports itself visible, on screen, and belonging to no workspace.
Invariants written once, run two ways
Neovim can freeze while the configuration is correct, because what is wrong is the state of the machine rather than anything in the repository. The assertions live in one module and are called from both :checkhealth and the headless CI probes.
Launching mise tools without the shims
A mise shim is three process creations, and a console process that stays between the terminal and the tool for the whole run. Here that turned a 15 ms tool into 127 ms and left bat unable to hand the prompt back.
One icon, and every column after it is off
The width Neovim computes comes from the Unicode East Asian Width property. The width the terminal paints comes from the font. Nerd Fonts put glyphs where those two disagree, and setcellwidths is where the font's answer is written down.
One register, five providers
Where a yank to `+` ends up is decided by an external command, and which command depends on WSL, Windows, Wayland or X11. The same tool also has to be asked for opposite line-ending conversions in each direction.
The PATH budget
Windows has 8191 characters for PATH, mise spends most of them, and running out breaks commands that are installed and on disk.