OpenRiot v7.9.11 — The One Where Everything Actually Starts
“The bar rendered. The clicks did not register. We fixed that.” — The OpenRiot Crew, staring at a polybar that looked alive but was technically a zombie
Release Overview
v7.9.11 fixes the boot sequence. Polybar no longer launches before i3 is
ready and pretends to be clickable. The xenodm greeter now mirrors your
displays so you can log in from an external monitor without contorting
your body toward a closed laptop. Night Light is instant. We swapped
redshift — a daemon that phones home to New York City for sunrise
data — for sct, which just sets the temperature and gets on with its
life. We also added Zero A.D. The first unpack takes approximately the
duration of a Roman campaign. It is worth it.
Polybar Clickability Fix
On boot, i3 ran --polybar-setup and sleep 5; polybar main. Five
seconds is a guess. If i3’s XCB IPC socket wasn’t ready, Polybar mapped
its window into a WM that hadn’t finished initializing. The bar rendered.
Click events vanished into the void.
We replaced the blind delay with an actual readiness gate:
while ! i3-msg -t get_version; do sleep 1; done. Polybar starts after
i3 confirms it is alive, not after a coin flip.
We also removed the polybar-msg cmd restart line. A soft restart
reuses the broken window hierarchy. That’s why you had to pkill -9
to fix it. Now the watcher loop just restarts the process if it dies.
| File | Change |
|---|---|
config/i3/config |
IPC-gated polybar launch; |
removed soft restart; pgrep -x |
xenodm Greeter Display Mirroring
OpenBSD’s default /etc/X11/xenodm/Xsetup_0 sets a weave background and
starts xconsole — a root-owned fullscreen console you don’t want. It
does zero display configuration. If you had an external monitor, the
login widget only rendered on the laptop.
We replaced it. The new Xsetup_0 activates every connected output and
mirrors the external display onto the laptop with --same-as. The
greeter is now visible everywhere. xconsole is gone. The background is
a solid dark color instead of a 1990s bitmap.
| File | Change |
|---|---|
config/xenodm/Xsetup_0 |
NEW — mirrors displays on |
| xenodm login, kills xconsole | |
install/packages.yaml |
Install script with .orig |
| backup, idempotent reinstall |
Night Light: sct, Not redshift
We were running redshift -l 40.71:-74.00 -t 4000:4000. That’s a daemon
that calculates sunrise times in New York to apply a temperature that
never changes. It also meant Get() — a polybar status query — would
silently restart the daemon if it wasn’t running. A poll every 60
seconds should not mutate state.
We replaced redshift with sct:
sct 4000— warm screen, done, no fork, no background jobsct— reset, doneGet()reads a file. Nothing else.
The polybar icon now reflects reality instead of enforcing it.
| File | Change |
|---|---|
source/nightlight/nightlight.go |
Replaced redshift daemon with |
sct; read-only Get() |
|
source/commands/helpers.go |
Symmetric toggle + notify UX |
install/packages.yaml |
sct-0.5 replaces |
redshift-1.12p11 |
Games Update
Zero A.D. joins the roster alongside Extreme Tux Racer. We cleaned up
commented-out entries (xonotic, katomic, supertuxkart) so the
games menu isn’t a graveyard of might-have-beens.
A warning: Zero A.D.’s first launch unpacks its data files. This takes a while. You will think it crashed. It did not. Go make tea. Come back to a real-time strategy engine that runs on OpenBSD.
| File | Change |
|---|---|
config/rofi/games.txt |
Added Zero A.D. and Tux Racer; |
| removed stale comments | |
install/packages.yaml |
Added 0ad-0.28.0, |
extremetuxracer-0.8.4 |
Test Infrastructure
OpenBSD mounts /tmp with noexec. Go’s go test compiles binaries
there and tries to run them. Permission denied. Every time.
The Makefile now sets TMPDIR=$(HOME)/.tmp before all test targets.
No more manual environment wrangling.
| File | Change |
|---|---|
Makefile |
TMPDIR=$(HOME)/.tmp for all |
test targets; column -t output |
Documentation Cleanup
Nine stale docs deleted: Agents-Lessons, Architecture, Debugging,
Image-Builder-Spec, Image-Spec, Network-TUI, Packages,
polybar-performance, proton-drive-module, Agents-Icons. Lessons
were merged into AGENTS.md as numbered rules. Colors.md moved to
Proposals/.
| File | Change |
|---|---|
docs/* |
Deleted 10 stale docs; moved |
Colors.md to Proposals/ |
🧾 Files Changed
| File | Change |
|---|---|
config/i3/config |
IPC-gated polybar startup |
config/xenodm/Xsetup_0 |
NEW — greeter display mirroring |
config/rofi/games.txt |
Zero A.D., Tux Racer added |
source/nightlight/nightlight.go |
sct replaces redshift |
source/commands/helpers.go |
Night Light symmetric UX |
install/packages.yaml |
sct-0.5; Xsetup install; |
| 0ad + tuxracer | |
Makefile |
TMPDIR fix; test formatting |
docs/* |
Deleted stale files |
Proposals/Colors.md |
Moved from docs/ |
🗣️ Final Words
“v7.9.10 made sure your packets went to the right router. v7.9.11 makes sure you can click the bar that tells you they arrived.”
No more phantom polybars. No more logging in through a laptop hinge at
90 degrees. No more redshift calculating solar noon in Manhattan while
you sit in a dark room. sct is 4000K of instant warm light. Zero A.D.
is currently unpacking. Let it cook.
Ship it.