OpenRiot v8.0.5: It Comes in Colors Everywhere

“The house was gray, the road was gray, and the little notifications were gray too. Then somebody opened a door and the whole street walked in wearing colors. The dog barked at the rainbow. The wizard, it turned out, was a file on disk.” – The OpenRiot Crew, v8.0.5


Release Overview

OpenRiot 8.0.5 repaints the desktop and fixes the plumbing underneath. The palette tones down, the bar picks up a rounded outline and one pixel of air, and the volume, microphone and brightness keys now answer on the screen instead of whispering through a notification daemon.

It is a coat of paint with a torque wrench in the pocket.

Total changes: one palette, one bar, one OSD, and the small arguments in between.


A Coat of Many Colors

The canonical palette in config/colors.toml mutes the bright accents into something that sits still at night. Because every template reads that file, the change lands everywhere at once: the bar, the workspace pills, rofi, helix, dunst.

The workspaces stop hardcoding their own weather. Focused, dimmed, and urgent states now come from the palette, so the bar and the workspaces finally agree on what green means.

The night-light icon learned to testify. Amber when the room is warm and ordinary, a colder blue-purple when the filter is actually on. No more squinting to guess whether the color cast is a feature or a mistake.

A theme here is a file you own. Not a subscription you renew, not a palette the store can revoke. It lives on your disk and it survives the next reboot, which is more than most colors can promise.


The Display Is the Message

openriot --osd draws the change where your eyes already are. Volume, microphone and brightness render as a small themed strip by way of osd_cat, then vanish. When X isn’t there, or the helper isn’t installed, it falls back to the old toast without complaint.

The pop-up was always somebody else’s service. This one is a rectangle we draw ourselves, in our colors, on our terms.


One Pixel of Breathing Room

The bar now meets the top of the screen with no dead strip above it, and stops one pixel short of the windows below so two outlines never touch. gaps top 1 reserves that breath, and smart_gaps off keeps it even when a workspace holds a single window.

A lone window finally keeps its border. hide_edge_borders none sees to that, so a full workspace no longer pretends to be a full-screen app. The focused window outline is dimmer, too, closer to the room than to a traffic cone.


It Fits Every Screen

The font scaling markers in polybar.Setup pointed at sizes that were never in the template, which meant half the bar ignored the resolution. They now match size=18 and size=12, so the bar scales its type on the screens that aren’t 1080p. The height still steps by width: 22, 26, 28, 32.


🧾 Files Changed

File Change
config/colors.toml Muted canonical palette
config/polybar/config.ini.tmpl Rounded bar, outline, gap,
  per-module colors, font offsets
config/i3/config gaps top 1, smart_gaps off,
  hide_edge_borders none, dim client.focused
source/osd/osd.go NEW on-screen display
source/audio/volume.go Volume/mic OSD first, toast fallback
source/display/display.go Brightness OSD first, toast fallback
source/commands/commands.go --osd command
source/polybar/polybar.go Theme-driven workspaces,
  corrected font scaling
source/nightlight/nightlight.go Blue-purple when ON
install/packages.yaml xosd for the OSD

🗣️ Final Words

“Somewhere over the config file, the colors were always there, waiting for someone to stop drawing in gray. The toast is gone, the border is back, and the room fits on any screen you put it on. Kick the tires. It comes in colors everywhere.” – The OpenRiot Crew, v8.0.5