github BarutSRB/OmniWM v0.5.9
OmniWM v0.5.9

5 hours ago

What's New Since 0.5.8

Breaking Changes — Action Required

Settings TOML and Rule Fields

There are no legacy aliases for the following names. Rename them before launching or reloading 0.5.9; old keys are ignored and fall back to defaults.

  • [niri].maxVisibleColumnsvisibleContainerCount; the same rename applies in [[monitorNiriOverrides]].
  • singleWindowAspectRatiosingleWindowFit in [niri], [dwindle], [[monitorNiriOverrides]], and [[monitorDwindleOverrides]].
  • [niri].columnWidthPresetscontainerPrimarySpanPresets.
  • [niri].defaultColumnWidthdefaultContainerPrimarySpan.
  • [[appRules]].initialColumnWidthinitialContainerPrimarySpan.
  • Single Window Fit value column_width, including the removed column-width and columnwidth aliases, → container_primary_span.
  • Rule CLI flag --initial-column-width--initial-container-primary-span.
  • Rule IPC JSON field initialColumnWidthinitialContainerPrimarySpan.

Custom Hotkey Action IDs

Custom bindings that use the old Niri sizing action IDs are not loaded. Re-create them with the new actions:

  • cycleColumnWidthForward/BackwardcycleSizeForward/Backward.
  • cycleWindowWidthForward/BackwardcycleWindowPrimarySpanForward/Backward.
  • cycleWindowHeightForward/BackwardcycleWindowSecondarySpanForward/Backward.
  • toggleColumnFullWidthtoggleContainerFullPrimarySpan.
  • expandColumnToAvailableWidthexpandContainerToAvailablePrimarySpan.
  • resetWindowHeightresetWindowSecondarySpan.
  • setColumnWidth.{decrease,increase}10PercentsetContainerPrimarySpan.{decrease,increase}10Percent.
  • setWindowWidth.{decrease,increase}10PercentsetWindowPrimarySpan.{decrease,increase}10Percent.
  • setWindowHeight.{decrease,increase}10PercentsetWindowSecondarySpan.{decrease,increase}10Percent.

The default Option + ., Option + ,, and Option + Shift + F bindings continue under their new action IDs.

CLI and IPC Protocol 8

Upgrade or rebuild omniwmctl, scripts, and third-party IPC clients together with OmniWM. Protocol 7 clients are rejected, old wire names no longer decode, and the sizing commands were renamed:

  • cycle-column-width forward|backwardcycle-size forward|backward.
  • cycle-window-width forward|backwardcycle-window-primary-span forward|backward.
  • cycle-window-height forward|backwardcycle-window-secondary-span forward|backward.
  • toggle-column-full-widthtoggle-container-full-primary-span.
  • expand-column-to-available-widthexpand-container-to-available-primary-span.
  • reset-window-heightreset-window-secondary-span.
  • set-column-widthset-container-primary-span.
  • set-window-widthset-window-primary-span.
  • set-window-heightset-window-secondary-span.

IPC raw command names use the corresponding hyphenated forms, such as cycle-column-width-forwardcycle-size-forward.

Monitor Identities Must Be Re-saved

OmniWM now binds displays by stable UUID. On UUID-capable displays, v0.5.8 numeric display-ID rows are deliberately preserved but left unbound to avoid attaching settings to the wrong monitor.

  • Run Settings → Monitors → Run Monitor Setup… to re-save custom routing.
  • Re-select and save any per-monitor Workspace Bar, orientation, Niri, Dwindle, or gap overrides in their Settings panes.
  • Re-select the specific display for any explicitly assigned workspace in Settings → Workspaces.

For hand-edited TOML, monitorDisplayId becomes monitorDisplayUUID in all six per-monitor override arrays, and monitorAssignment.output.displayId becomes monitorAssignment.output.displayUUID for workspace assignments. The UUID cannot be derived safely from the old numeric ID.

Motion, Portrait Controls, and Saved Restore State

  • OmniWM no longer follows System Settings → Accessibility → Display → Reduce motion. Turn off OmniWM’s own Enable Animations setting if you need motion disabled.
  • Niri navigation, movement, gestures, resizing, and size presets now follow each monitor’s primary and secondary axes. On portrait monitors, directional and sizing behavior therefore differs intentionally from 0.5.8.
  • A v0.5.8 private runtime state containing saved Niri placements cannot be decoded by the new sizing schema. OmniWM rebuilds that state, so remembered window/layout restore placement and other ephemeral app state may reset once after upgrading.

Portrait-ready Niri

  • Niri now follows each monitor’s effective orientation end to end. Portrait displays scroll vertically, while directional focus and movement, trackpad gestures, resizing, size presets, tabbed containers, animation, reveal, and restore use primary and secondary axes consistently.
  • Settled viewports recover coverage after size changes without disturbing live-resize anchoring, and vertical animation no longer bleeds across containers.

Guided Multi-monitor Setup

  • A one-time, replayable assistant explains OmniWM’s recommended macOS staircase, identifies displays with on-screen numbers, maps them to the physical desk, and applies custom routing with Mouse Warp.
  • Stable display UUIDs keep new monitor settings, routing, workspace assignments, and restore fingerprints attached through reconnects and runtime display-ID changes.

Workspace Bar Customization and Polish

  • Choose app-bundled icon variants or custom image files for Workspace Bar apps, globally across monitors.
  • The whole workspace pill is now clickable, the active workspace remains visible when Hide Empty Workspaces is enabled, and narrow centered bars now hug their measured width.

Easier Controls and Sturdier Window Management

  • Status-menu controls now show rich hover and keyboard-focus help with visual previews.
  • Fixed Chrome PWA focus events and ghost windows left behind after Chrome closes.
  • Hidden and scratchpad windows now receive verified Accessibility parking with retry and cancellation.
  • Workspace moves preserve focus handoff, stopped services keep surfaces cleared, and Niri hidden-window placement and viewport coverage are more reliable.

Project

  • Added an Education section to recognize contributors whose teaching and research helped shape OmniWM.

Release Integrity

  • OmniWM-v0.5.9.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.9.zip SHA-256: a1a3824e95101509ebce557639232c570bda0dc81e7d44c51642a244c076f274
  • GhosttyKit.xcframework-v0.5.9.zip SHA-256: 4e0e56b71489c6605bf8971dddcc873e2b1841a61fbd619f2e0b0a44b7904335

Don't miss a new OmniWM release

NewReleases is sending notifications on new releases.