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.”

← Back to README