Skip to content

OmniWM v0.6.1

Latest

Choose a tag to compare

@BarutSRB BarutSRB released this 10 Aug 16:36
· 2 commits to main since this release

What's New Since 0.6.0

0.6.1 is a fix release: IDE popups that closed the instant they opened, a multi-monitor pointer crossing that could blank a display, floating windows landing on the wrong monitor or losing focus, an inverted Dwindle resize, a settings crash, and windows leaving a strip on screen after a workspace switch.

Before You Upgrade — Breaking Changes

  • Upgrade OmniWM and omniwmctl together. The IPC protocol moves from 9 to 10, and mismatched versions are refused outright: a 0.6.0 omniwmctl gets error: protocol_mismatch on every request to 0.6.1. Third-party IPC clients need the same bump.
  • Dwindle resize is now axis-based. omniwmctl command resize <left|right|up|down> <grow|shrink> becomes omniwmctl command resize <horizontal|vertical> <grow|shrink>. Raw IPC payloads send arguments.axis instead of arguments.direction, and code built against OmniWMIPC must rebuild for resize(axis:operation:). omniwmctl command resize-focused <grow|shrink> is unchanged.
  • Custom directional Dwindle resize hotkeys are dropped, not migrated. The eight resizeGrow.* and resizeShrink.* Left/Right/Up/Down actions are gone, replaced by Grow/Shrink Horizontally and Grow/Shrink Vertically. All eight shipped unassigned, so this only affects you if you bound them yourself — reassign in Settings → Hotkeys with Show Advanced turned on, mapping Left/Right to Horizontal and Up/Down to Vertical.

Nothing else changes: no other setting, hotkey, or command was removed or renamed.

Focus

  • JetBrains IDE popups no longer close the moment they open. Search Everywhere, Find in Files and similar panels were being dismissed by OmniWM's automatic focus recovery reclaiming focus for the managed window underneath. Recovery now leaves a foreign window that genuinely holds focus alone, and resumes once the popup closes (#559).
  • A floating window keeps focus across a workspace round trip. Focus was remembered in separate tiled and floating slots, and the tiled one always won — so focusing a floating window, switching away and switching back landed on the last tiled window and dropped the floating one behind it (#549).
  • The last-focused window survives a relayout. Refocusing a window that already occupied its own slot never refreshed the shared record, so returning to the workspace could restore the window you focused before that one.

Multi-Monitor

  • Dragging a floating window to another display now actually moves it there. A floating window's workspace was fixed when it was first admitted and never revisited, so a window dragged to a second monitor stayed owned by the workspace it came from: it disappeared when you switched workspaces on the display it had left, and ignored switches on the display it was sitting on (#550).
  • A window transferred this way keeps focus if it had it, and does not steal focus if it did not.
  • Crossing between displays near a corner no longer blanks the screen. On arrangements where displays do not line up, cutting the corner could send the pointer to a spot outside every display, leaving the primary display black and the other display's windows apparently gone until it was woken. Mouse Warp destinations now stay clear of display corners and are checked against the display they are meant to land on, and pointer state is committed only after the move succeeds (#541).

Dwindle

  • Grow and Shrink now always do what they say. The size delta was applied with a sign that depended on which side of the split the focused window sat on, so Grow Right and Grow Up shrank the focused window while Shrink Right and Shrink Up grew it (#558).
  • The eight directional resize actions collapse into four axis actions — Grow/Shrink Horizontally and Grow/Shrink Vertically. Grow/Shrink Focused Window, which resizes the focused window against its nearest split, is unchanged.

Hidden Windows

  • Switching to an empty workspace no longer leaves a 40-point strip of every window from the previous workspace at the screen edge. Hidden windows are parked just off-screen with a deliberate one-point reveal so macOS does not treat them as fully off-screen. That reveal was computed as one physical pixel — half a point on a Retina display — and position writes round to whole points, so it was lost and macOS pushed the fully off-screen window back onto the display. The reveal is now one point at every display scale (#557).
  • The reveal that remains is now covered up: OmniWM draws a one-point black strip along the left and right edge of every display. It passes clicks through and stays out of the screenshot window picker.

Settings

  • An invalid custom Single Window Fit size no longer crashes OmniWM on the next settings save. Zero, negative, and non-finite dimensions — from a hand-edited config or typed into the size fields — now fall back to Full Screen. Very large but valid sizes are kept and clamped to the display (#554).

Thanks

  • Nawat Suangburanakul (@holmns) — floating-window focus and monitor rebinding (#549, #550), and the hidden-window edge overflow diagnosis and fix (#557).
  • Yuri Chukhlib (@YuriNachos) — the Dwindle grow/shrink fix (#558), Single Window Fit serialization hardening (#554), and boundary test coverage for the IPC rule validator and Niri scroll saturation (#553, #556).
  • Janek Thomaschewski (@jthomaschewski) — for pinpointing the focus-recovery guard behind the IDE popup bug and sharing a working prototype (#559).

Janek Thomaschewski and Yuri Chukhlib join the contributors section, along with affiliation credits for Finanzguru and Viber.

Release Integrity

The OmniWM app is Developer ID signed, Apple-notarized, stapled, and Gatekeeper verified.

  • OmniWM-v0.6.1.zip SHA-256: bc994730e0ddddb25a5c7d97b718bc06f1fac7230e89a265ce36ff4a35c80904
  • GhosttyKit.xcframework-v0.6.1.zip SHA-256: 7ffae9d40c0ce1917053d464659262e5b3c06c1f53bde35604a904cf6477787a