github OmniNull/OmniWM v0.7.5
OmniWM v0.7.5

2 hours ago

What's New Since 0.7.4

Bind extra mouse buttons, show notification badges on the Workspace Bar, and choose your tiling animation speed. OmniWM 0.7.5 also improves preview sharing, browser picture-in-picture, Quake shortcuts, and window lifecycle handling.

Workspace Bar and mouse controls

  • Show notification badges. Display Dock notification badges as dots or text on Workspace Bar app icons, including expanded scratchpads. Badges are off by default; enable them in Settings > Workspace Bar and choose a refresh interval from 1 to 60 seconds.
  • Place the bar beside the notch. A new Right of Notch mode places the Workspace Bar just to the right of the notch and centers it on displays without a notch, with global and per-monitor controls.
  • Manage window marks from the bar. Mark or unmark a window from its icon menu, including individual windows inside grouped app icons.
  • Use extra mouse buttons as shortcuts. Settings > Hotkeys now records extra mouse buttons, alone or combined with Control, Option, Shift, Command, or Hyper, for assignable actions. A mouse binding replaces that action's keyboard binding; assigned presses are consumed so the app underneath does not also handle them.
  • Choose more wheel modifiers. Mouse-wheel column scrolling supports additional modifier combinations, including all four modifiers. Option + Shift remains the default. The four-modifier choice works with remappers that hold the actual modifier keys; OmniWM's System Hyper trigger does not add modifiers to wheel events.

Layout and window behavior

  • Set tiling animation speed. Adjust Settings > General > Tiling Animation Speed (0.25× to 4×), or general.animationSpeed in settings.toml. The default preserves the existing motion, and Reduce Motion remains respected.
  • Fill underused Niri space. When fewer containers are open than the configured visible count, Niri expands them proportionally while respecting their relative sizes and application constraints. Manual resizing takes priority until the container count changes.
  • Open vertical Dwindle splits below. New windows now appear below the existing window for default vertical splits and centered Smart Split decisions. Explicit preselection directions are preserved.
  • Restore fullscreen column peeking. Niri keyboard navigation can bring the selected window in front of an overlapping layout-fullscreen window again.
  • Focus covered tiles without raising them. With raising enabled, Focus Follows Mouse skips raising a tiled window when a visible managed floating window overlaps it from the front.
  • Keep browser PiP visible across workspaces. Recognized picture-in-picture windows from Firefox, Zen, LibreWolf, Chrome, Brave, and Edge stay outside workspace management.
  • Handle withdrawn windows correctly. Windows an app withdraws without destroying no longer leave empty tiles or get unexpectedly refocused; they can rejoin their layout when shown again.
  • Keep borders in step with windows. Focus borders track closure and movement more reliably, and native corner geometry stays steadier during focus changes.

Quake, Hidden Bar, and input reliability

  • Customize Quake shortcuts through Ghostty. Tab and pane actions now honor Ghostty keybindings, including remaps and unbinds. Quake also follows the system's window-corner preference.
  • Update Quake’s Ghostty engine. Uses Ghostty 1.3.2-main+b094a6ba3, including fixes for crashes when narrowing terminals containing wide characters and legacy Control + Option + Shift + Backspace encoding.
  • Use Notification Center while hiding menu-bar apps. Hidden Bar now uses native per-app visibility preferences. Its drawer attaches to the Workspace Bar, displays captured native menu-bar glyphs, and provides a nearby OmniWM menu button.
  • Preserve existing system key remaps. Enabling Caps Lock Hyper keeps unrelated key mappings intact and improves restoration after an unclean exit. Native API reads replace hidutil subprocesses: an optimized M4 Max / macOS 27.2 / Swift 6.4 benchmark measured 72.9 ms → 0.95 ms per read, about 77× faster.
  • Handle Secure Input changes. OmniWM now notices when Secure Input starts or stops and keeps shortcuts registered, so the ones macOS still delivers keep working; the indicator explains which ones it may withhold.
  • Avoid stale submenu openings. Moving away from a status-menu item no longer lets an already superseded hover open its submenu later.
  • Hotkey action labels are clearer, Page Up/Down shortcut glyphs are legible, and Smart Split help no longer incorrectly says it follows the cursor.

Performance, previews, and automation

  • Remove repeated permission-check stalls. Overview scrolling and search, hover previews, swipes, and drags use cached Screen Recording permission. A native check measured about 9.3 ms on the main thread; a 96-second live debug session recorded no checks across 332 Overview scroll events, 118 hover-preview events, and four swipes. Permission refreshes when leaving System Settings.
  • Show shared previews sooner. Overview, Workspace Bar hover previews, workspace swipes, and drag ghosts share preview frames and window discovery. In a recorded live debug session, 14 of 15 hover requests and 19 of 22 Overview cards already had a frame ready. Sharing avoids repeating discovery work previously measured at 28 ms warm and about 90 ms cold.
  • Reuse wallpaper captures. Smaller wallpaper variants can reuse a larger cached image, avoiding a fresh capture that previously spent about 0.65 ms listing windows and 2 ms capturing before downscaling.
  • Reduce tiling CPU work and allocations. Optimized M4 Max / macOS 27.2 / Swift 6.4 benchmarks with 12 windows measured snapshot construction at 3.98 → 2.42 µs per call (39% lower CPU time), with Swift allocations falling from six to one. The same optimization stage reduced Niri layout CPU time by 7.5% and local bookkeeping for skipped AX requests by 17%.
  • Cache stable layout settings. A subsequent change caches monitor frames, gaps, display scales, and border settings between changes. Separate optimized benchmarks measured a further 20–23% reduction in snapshot CPU time against the intermediate build; monitor snapshots fell from 528 → 46 ns.
  • Release unused swipe previews. Turning off workspace swipes or animations, including through Reduce Motion, releases their cached frames and backdrop.
  • Build better external bars. IPC queries expose one-based Niri column indices and column positions relative to the target viewport. Change-driven events let integrations track off-screen columns without inferring them from window frames.
  • Honor empty PATH entries in watch commands. omniwmctl watch --exec now searches the current directory at each empty PATH entry, preserving the configured executable search order.

Breaking changes and upgrade notes

  • IPC protocol is now 18, previously 17. Update omniwmctl and custom IPC clients alongside OmniWM. The bundled CLI already uses the new protocol.
  • The default IPC location moved. The socket is now ~/Library/Application Support/com.barut.OmniWM/ipc.sock; its authentication secret is alongside it as ipc.sock.secret. Update integrations that hard-code the old ~/Library/Caches/com.barut.OmniWM/ location. OMNIWM_SOCKET remains supported.
  • Existing Ghostty remaps now affect Quake. Custom tab and pane bindings, including unbinds, take precedence inside Quake. Default shortcuts remain when not overridden. The global Quake toggle stays in OmniWM's hotkey settings.
  • Quake corrects a legacy key sequence. Control + Option + Shift + Backspace now sends ESC BS (0x1b 0x08) instead of DEL (0x7f) in legacy encoding mode. Terminal applications with custom bindings for that sequence may need updating.
  • Recognized browser PiP windows are unmanaged. They are no longer floating workspace members, and app rules or manual overrides cannot bring them under workspace ownership.

Thanks

Thank you to:

Full changelog: v0.7.4…v0.7.5

Website and documentation · Installation guide

Don't miss a new OmniWM release

NewReleases is sending notifications on new releases.