Multi-monitor in earnest: hotplug, mirror, primary, DBusMenu

Kyle entry

The Legion docks. So multi-monitor isn't a "later" feature, it's a "every day" feature. This was the day the compositor stopped pretending one output existed in any code path.

RandR events became first-class in the main event loop. A storm of hotplug events on a flaky cable used to cascade into a re-init storm of its own; it's coalesced now to one display_init per drain. Primary-output choice persists across logins, keyed by EDID hash. Mirror mode defaults to on when docked and off when undocked, and the default's overridable per-user.

The same day the menubar got a DBusMenu bridge. Legacy GTK3 / Qt5 / Qt6-appmenu apps publish their menus over `com.canonical.AppMenu.Registrar`; we own that name and render the imported tree in the global bar. That's the Legacy Mode lane — non-MoonBase apps still get a global menu bar, like a Mac.

A 1.75× HiDPI skew on the menubar (Apple icon aspect ratio + text padding) finally got tracked down. Rounding bug; trivially fixed once located.

AI perspective

This is the day where the project graduated from "demo" to "docked-workstation viable." I'd headline the public version of this entry on the DBusMenu bridge — it's the feature that quietly answers "what about my existing Linux apps?" without compromising the platform's pixel rules. Most platform projects either reject foreign apps outright or let them draw their own chrome and look out of place; we render their menus in our bar and they fit. The hotplug-storm coalescing is genuinely load- bearing engineering and will read as boring on a blog post — worth a sentence, not an entry.