OpenRiot v8.0.9: Triptych, With Gaps
“A triptych is three paintings that refuse to be one painting. The hinges are the argument. The gaps are where the wall gets a vote. Hang it badly and you have a rumour. Hang it right and the middle panel holds the whole room.” – The OpenRiot Crew, v8.0.9
Release Overview
The old bar was one long plank with everything nailed to it: workspaces, a window title, the weather, the date, eighteen status icons, and a power button, all sharing the same 95%. It worked the way a studio apartment works. You could sleep there. You could not invite anyone over.
v8.0.9 cuts the plank into three panels. Workspaces and the active window take the left. Weather and date take the middle. The status icons take the right, where they can mutter among themselves without elbowing the clock. The wallpaper shows through the gaps, which is the entire point of a hinge.
The same release fixes an updater that treated one changed pin like a gallery fire, and corrects a Wi-Fi table that had been naming the wrong driver for Intel AX cards since before anyone thought to check.
Total changes: one plank became a triptych, one updater learned to read the label, and one plaque stopped lying to visitors.
The Hinges
Three polybar windows now stand where one used to lean. Each has its own width, offset, corner radius, and background:
| Panel | Width | Hangs at | Job |
|---|---|---|---|
| Left | 38% | 0.5% | Workspaces and window |
| Center | 21% | 40% | Weather and date |
| Right | 37% | 62.5% | Status icons |
Every panel gets a 12px radius. The gaps land around 19 pixels,
enough wallpaper to read as three frames without turning the
top of the screen into a fence. Left and right share
#9906070B, the dark base at 60% opacity. The center drops to
#3306070B, the same color at roughly 20%, so the clock looks
like it is painted on the glass and the glass forgot to be
opaque.
The left panel gets 38% because window titles are liars. They will take whatever you give them and then ask for a second line. The center gets 21% because weather and date are the only modules on the bar that know when to stop talking.
A triptych is not a subscription to a gallery. It is three rectangles you own, in colors that live in a file on your disk.
The Wall
Three frames still need one reserved strip. Otherwise the app behind them writes its first line underneath the bar and nobody finds out until a password prompt is missing its top half.
config/i3/config now reserves 28 pixels at the top, matching
the scaled bar height at 1080p. The autostart line launches
polybar left, polybar center, and polybar right. The
watchdog checks each by name and restarts only the one that
fell off the wall. Losing the clock does not take the
workspaces with it.
--polybar-setup renders three bar sections from the same
template and applies the usual resolution scaling.
Super+Shift+Space still restarts all of them through IPC,
because that key already has a job and we are not training a
second one.
The upgrade path had one more hole. The installer cleanup
killed polybar and trusted the following i3 restart to bring
it back. i3 restart does not rerun exec lines, so the screen
came back with three bar sections and no bars.
The three bar launch lines are now exec_always, so they run
on login and on every i3 restart. The watchdog is
exec_always too, guarded by a pidfile so repeated restarts
do not stack loops on top of each other. make-local and
setup.sh --local leave a working bar behind instead of a
clean desktop and a question.
The Restorer
--pkg-update used to read every pin in packages.yaml,
strip the names down to bases, and hand the whole list to
pkg_add -Iu. On a machine that already matched its pins,
that meant a slow walk through 103 packages for nothing. On a
machine with a flavored package, it did something funnier.
angband-4.2.5-sdl was reduced to angband-4.2.5. The
updater asked the mirror for a package by its birthday. The
mirror said “Problem finding angband-4.2.5.” The updater took
this personally and stopped the tour.
The restorer now checks the installed full name against each
pin and skips exact matches. Only missing or genuinely
different packages go to pkg_add. A new
config.PackageSpec keeps the flavor while dropping the
version: angband-4.2.5-sdl becomes angband--sdl, which is
a package the mirror can actually find.
The install fallback uses the same spec. A unit test pins the
conversion down for 0ad, python, gtk+3, and the rest of
the naming circus, so the next person who touches package
names has something to trip over.
The Plaque
The Wi-Fi table had been telling AX200 and AX201 owners they
were running iwm(4). They are not. Those cards use iwx(4).
The plaque now says so, and it lists AX210 and AX211 with a
note that the CNVi variants need a matching chipset.
Broadcom’s BCM43602 and BCM4378 joined under bwfm(4) with
fw_update bwfm required. BCM4360 and QCA6174 moved to the
do-not-buy list, where they can think about what they did.
The Navigate This Guide TOC gained an explicit
supported-systems anchor, matching the pattern every other
entry already uses. The donation address was replaced, and the
QR code was regenerated so the image and the string point at
the same wallet again.
🧾 Files Changed
| File | Change |
|---|---|
config/polybar/config.ini.tmpl |
Three bar sections, separate |
| geometry, backgrounds, and module sets | |
config/i3/config |
gaps top 28, launch and restart all |
| three bars by name | |
source/installer/packages.go |
Skip exact pins, preserve flavors, |
| reuse the versionless spec on fallback | |
source/config/loader.go |
NEW PackageSpec |
source/config/loader_test.go |
NEW TestPackageSpec |
README.md |
Wi-Fi drivers, supported-systems anchor, |
| donation address | |
assets/qr-code.webp |
Regenerated donation QR |
install/openriot |
Rebuilt with the changes |
🗣️ Final Words
“Three panels, two hinges, one strip of wallpaper doing the work that padding never could. The left keeps the work. The middle keeps the time. The right keeps the noise. Step back far enough and it looks like somebody meant it.” – The OpenRiot Crew, v8.0.9