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