OpenRiot v7.6 — Ctrl+Alt+Del the Desktop
“If you can’t find the resolution, change the resolution.” — The OpenRiot Crew, after discovering xrandr bugs at 3 AM
Release Overview
v7.6 is the release where we stopped accepting “it works on my machine”
as a valid answer. We fixed things that were silently broken, built things
that should have existed from day one, and learned enough about OpenBSD
sed to write a horror story.
Monitor Resolution TUI — You can now change your screen resolution without memorizing xrandr incantations. A full Bubble Tea interface lists every connected display, every supported mode, and every refresh rate. Pick one, hit Enter, and the desktop rearranges itself: polybar restarts, wallpapers rescale, and the lock screen cache rebuilds asynchronously while you get a notification that says “Rebuilding lock screen cache… (~1 min).” Because it does take a minute. We don’t lie about that.
The resolution persists across reboots via
~/.config/openriot/resolution.state. If you never touch the TUI, the
system uses your display’s native EDID default and never bothers you. If
you do touch it, i3 restores it automatically on login. No xinitrc
surgery required.
WiFi Icon Resurrection — The polybar WiFi module was invisible on
OpenBSD 7.9 because ifconfig switched from join "SSID" to nwid "SSID"
and from -50dBm signal strength to 56%. Our parser only understood
the old dialect. It now speaks both. The icon is back. The SSID is no
longer truncated at the first space. The percentage maps correctly to the
signal bar. You can click it for info when connected, or reconnect when
disconnected. It is, finally, a functional WiFi indicator.
WireGuard Toggle Actually Toggles — The settings menu and polybar
click both used wireguard.Status() != "" to decide ON vs OFF.
Status() returns an icon even when the tunnel is down, if the config
file exists. Result: the menu always said “(Turn off)” and clicking the
polybar icon when OFF just sent a notification saying it was ON. We
exported IsRunning() and wired it everywhere. Now OFF means OFF and the
click turns it back ON.
Night Light Visibility — The lightbulb icon used to disappear when
the night light was off. Now it shows when off and when on,
and clicking it toggles. The settings menu also shows the correct state.
No more guessing whether your eyeballs are about to be seared at 2 AM.
Rofi Cleanup — The app menu now lists “OpenRiot Settings” (our
settings panel) separately from “System Settings” (xfce4-settings-manager).
“Monitor Resolution” is in both the app menu and the settings panel.
Icons are and respectively. Organization that makes sense.
Polybar Separator — The visual divider between module groups was a
bright pipe | that drew too much attention. It is now a small centered
dot · at #3b4159, a muted blue-gray that recedes into the background.
The separator module is now documented in the README alongside the other
polybar modules.
Agents-Lessons.md v7.5 — A new section documents the hard-won
knowledge from this session: OpenBSD sed -i requires a backup extension,
doas does not elevate shell redirections, heredocs fail in fish,
function signature changes require updating every call site, and make
test is the minimum verification step after any edit. Also: stop at two
failures on the same problem.
🧾 Files Changed
| File | Nature of Change |
|---|---|
source/resolution/backend.go |
xrandr parser; Apply(), save state |
| kill polybar, reload wallpaper, async cache rebuild | |
source/resolution/backend_test.go |
Tests for parser, rate formatting |
standalone + token |
|
source/resolution/model.go |
Bubble Tea model, key bindings, state machine |
source/resolution/update.go |
Key handling, Apply(), back/quit/help |
source/resolution/view.go |
Lipgloss rendering for all TUI screens |
source/resolution/resolution.go |
Run() and Restore() entry points |
source/network/network.go |
nwid detection; 56% signal parsing |
quoted SSID extractAP() |
|
source/wireguard/wireguard.go |
Export IsRunning(), add wrapper |
source/commands/commands.go |
--resolution-tui, --resolution-restore |
--wifi-click commands |
|
source/settings/settings.go |
Monitor Resolution entry with (Change) |
WireGuard IsRunning(); Night Light IsOn() |
|
config/polybar/config.ini |
WiFi click-left → --wifi-click |
Night Light click-left → --night-light |
|
config/rofi/apps.txt |
Add “OpenRiot Settings”; rename “Settings” |
| “Monitor Resolution” added | |
config/i3/config |
--resolution-restore autostart command |
docs/Agents-Lessons.md |
v7.5 lessons: sed, doas, fish, signatures |
| tests, two-failures rule | |
docs/v7.5-Release-Notes.md |
Snapshot-to-release migration; security fixes |
| webp loader |
🎵 What We’re Listening To
Still the same library. Same loudness. Same folder labeled “Cyberpunk”
that definitely contains a Theremin solo. Now we can change screen
resolution without leaving the terminal, which is honestly the most
peak-Linux feature we have ever shipped. Your GPU thanks you. Your eyes
thank you. Your xrandr man page gathers dust.
🗣️ Final Words
“I don’t want to read the xrandr man page. I want to pick 1920x1080” _“from a list and have everything else handled.” — Everyone, always
v7.6 is the release for people who have better things to do than
memorize display output names. You should not need to know that your
laptop panel is eDP-1 or that your HDMI output is HDMI-1. You should
not need to calculate refresh rates. You should pick a number from a list
and watch your desktop adapt.
The WiFi icon is back. The WireGuard toggle actually toggles. The night light bulb no longer plays hide-and-seek. The resolution you picked last time is the resolution you get next time. This is how defaults should work.
Your xrandr knowledge is still valid. You just don’t need it for the
basic stuff anymore.
— The OpenRiot Crew
“Your resolution just became a setting, not a spell.”