OmniWM 0.4.9.8
Smoother and Faster
- Momentum trackpad scrolling: Niri viewport scrolling now decelerates naturally after you lift your fingers.
- Faster window overview: thumbnails are captured in parallel.
- Less stutter when switching apps: blocking accessibility reads moved off the main thread.
- Smoother animations and resizing: frame reads are skipped mid-animation and checked at settle, interactive resize renders without extra layout commits, and back-to-back relayouts coalesce instead of cancelling each other.
- Less size-grid jitter: grid-snapping windows such as terminals stop jittering, and apps that refuse a size feed that back into layout so OmniWM fights them less.
- Cheaper, more reliable Hyper key: the Hyper event tap only runs while Hyper is held, lowering idle cost while avoiding dropped or stuck state.
- Correct animation timing per display: refresh-rate-only display changes and mixed-refresh monitor setups now stay in sync.
Fixes
- Native fullscreen survives apps that recreate their window: Electron, TextEdit, and similar apps no longer leave phantom columns behind, later toggles keep working, suspend/restore is driven by Space topology, and restoring one fullscreen window no longer breaks another.
- Focus-follows-mouse no longer warps the cursor on hover-driven focus. Keyboard and programmatic focus can still warp as intended. Thanks @m-hauck for the fix idea in #147.
- settings.toml is preserved: custom and unknown keys survive when OmniWM rewrites the file.
- Monitor orientation overrides stick across display updates and are reported over IPC.
- No stray border on focused system-modal dialogs.
- Stable window stacking: tiled windows keep z-order when the system restacks them.
- OmniWM's own overlay and ghost windows are no longer mistakenly tiled.
- Better window admission: Steam tiles by default, windows stop flapping between managed and unmanaged, a single transient rescan miss no longer drops a window, inactive-Space windows are not evicted, and focused-window admission retries before unmanaged fallback.
- Sending a window across workspaces and back no longer leaves focus stuck.
Under the Hood
- Major runtime rewrite: window, focus, viewport, scratchpad, monitor-session, Space-topology, layout-engine, and reconcile state now live in a single WorldStore, with every mutation routed through explicit commit events.
- New EventIntake pipeline ingests CGS, AX, NSWorkspace, display, hotkey, IPC, and mouse events with off-main fact resolution.
- Focus and activation effects now flow through IntentLedger and DeadlineWheel, replacing retry ladders with stamped intents and deterministic deadlines.
- Surfaces such as borders, bars, tab rails, and fullscreen placeholders are derived by SurfaceReconciler.
- Layout invariants are now hard asserts with unit coverage, plus a release-safe invariant-violation counter and debug-gated layout-build telemetry.
- New deterministic replay tests cover permuted event-transport interleavings.
- Architecture docs were rewritten around the four-stage runtime pipeline.
Release Integrity
OmniWM-v0.4.9.8.zipcontains the Developer ID signed, notarized, and stapled OmniWM app.OmniWM-v0.4.9.8.zipSHA-256:3d3be94b04c99e3f41299f87c79942d6dee7a5a43b84d437374d93ea6f01c752GhosttyKit.xcframework-v0.4.9.8.zipSHA-256:4b42ed3d073d8c777998227286d25d0be0a956ea043d59c2b3298d9d8bd52e8e