Skip to content

Releases: BarutSRB/OmniWM

OmniWM v0.5.4

Choose a tag to compare

@BarutSRB BarutSRB released this 07 Jul 21:38

What's New Since 0.5.3.2

  • Trackpad workspace swipes now stop cleanly when your fingers stop, while intentional flicks still glide.
  • The workspace bar can now appear only while holding chosen modifier keys, with configurable reveal timing.
  • Focus Previous Window now returns to the last used window even when that window lives on another workspace.
  • Focus changes no longer warp the pointer away when it is already inside the target window.
  • Quake Terminal placement is more resilient across monitor changes, including saved custom positions that no longer fit.
  • Quake Terminal slide-in animations now start from the correct position on offset monitors.
  • Quake Terminal now refreshes its Ghostty surface sizing when revealed on a different monitor, avoiding stale clipped grids.

Release Integrity

  • OmniWM-v0.5.4.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.4.zip SHA-256: 7fe334817efb36ec6fac32fdfaa1dcddfa23975226bddb035d1bbf39a817817e
  • GhosttyKit.xcframework-v0.5.4.zip SHA-256: c325c6587230d9190d6b288c6d41cb69589d8aeb74f6be00f7cc2557f017181b

OmniWM v0.5.3.2

Choose a tag to compare

@BarutSRB BarutSRB released this 04 Jul 16:38

What's New Since 0.5.3.1

  • Fixed a launch crash on macOS 26.x caused by the issue reporter's FoundationModels integration binding to a macOS 27-only symbol before OmniWM could start.
  • Kept manual issue reporting available on macOS 26.x while AI issue rewriting now appears only on macOS versions with the required FoundationModels runtime.
  • Cleaned up System Stats view formatting.

Release Integrity

  • OmniWM-v0.5.3.2.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.3.2.zip SHA-256: 1642c3053db962efcf4728fcd9a33c797b36ba750816653d61a132c66f889192
  • GhosttyKit.xcframework-v0.5.3.2.zip SHA-256: fabf2ddb360a51e5908306f4ac2d426a73329b8723784255c40ea77963435f4f

OmniWM v0.5.3.1

Choose a tag to compare

@BarutSRB BarutSRB released this 03 Jul 19:20

What's New Since 0.5.3

  • Fixed the app bundle minimum system version so OmniWM 0.5.3.1 launches on macOS 26 Tahoe as intended.
  • Supersedes 0.5.3, whose app bundle accidentally advertised macOS 27.0 as the minimum system version.

Release Integrity

  • OmniWM-v0.5.3.1.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.3.1.zip SHA-256: 51d7672270843ba8d48138a99deb059bafa493b7fae6453b01fb0f76cbc5140e
  • GhosttyKit.xcframework-v0.5.3.1.zip SHA-256: d5f6f073678dd817a0f9cd849b39c21396833f50c48f1ab93f8df26ee76da011

OmniWM v0.5.3

Choose a tag to compare

@BarutSRB BarutSRB released this 03 Jul 18:21

Warning

OmniWM 0.5.3 is superseded by 0.5.3.1. The 0.5.3 app bundle accidentally advertised LSMinimumSystemVersion as 27.0; 0.5.3.1 restores the intended macOS 26.0 floor.

What's New Since 0.5.2.1

Status Menu and Workspace Bar

  • Added an inline workspace stats button and system stats popup.
  • Rebuilt the status menu around hosted SwiftUI content, shared model state, and reusable menu components.
  • Registered the secure input indicator with the surface coordinator so it behaves like the rest of OmniWM's overlay surfaces.
  • Consolidated utility-window hosting through HostedWindowPresenter.

Runtime and Window Management

  • Reworked create placement, column parking, border handling, and reconcile persistence.
  • Made offscreen parks durable and added park visibility diagnostics.
  • Fixed Quick Look placement and focus behavior on multi-monitor setups.
  • Fixed tiled windows dropping to floating during transient AX subrole misreads.
  • Fixed manual float placement using stale tiled frames.
  • Reduced hot-path waste by caching screen coordinate transforms, skipping frame-echo window-server queries during tile animations, avoiding repeated title queries during workspace bar reconcile, and preventing unchanged tracked windows from being re-admitted during rescans.

Platform and Packaging

  • Raised the supported baseline to macOS 26+ on Apple Silicon.
  • Dropped Intel Mac support and universal builds; OmniWM now ships arm64-only.
  • Aligned GhosttyKit build wiring and release packaging with the arm64 artifact.
  • Removed obsolete config migration machinery and dead legacy paths.
  • Routed border color conversion through SettingsColor and migrated command palette state to Observable.

Release Integrity

  • OmniWM-v0.5.3.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.3.zip SHA-256: 77fe911bc493621f67e32c931eab269b8dc1835654f50682bcd474699c4489fe
  • GhosttyKit.xcframework-v0.5.3.zip SHA-256: 9c02f380089e22fdd2eaba2f18e757c886d38b4b0f57de2162c5b1e4394fe830

OmniWM v0.5.2.1 [HOTFIX]

Choose a tag to compare

@BarutSRB BarutSRB released this 29 Jun 07:34

Hotfix, 0.5.2 sent a stale older version's binary, this fixes it, now you should have all the 0.5.2 improvment.

Release Integrity

  • OmniWM-v0.5.2.1.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.2.1.zip SHA-256: 574663e8ff78880a2edeb62903e082cf556af0aa377044eecc5b6f7860f889d7
  • GhosttyKit.xcframework-v0.5.2.1.zip SHA-256: 052f30099f53c52c1cb016aeba0a744043f5a58b878978fb9534b6ae780c33cb

OmniWM v0.5.2

Choose a tag to compare

@BarutSRB BarutSRB released this 29 Jun 07:08

What's New in OmniWM 0.5.2

Changes since 0.5.1

This release adds a handful of comfort features (a way to "peek" at windows without
stealing focus, mouse and keyboard resizing in the Dwindle layout, and more choices for
the one-key Hyper trigger), makes the scrolling Niri layout noticeably smoother and more
predictable, gives OmniWM a fresh look (a launch animation, a new menu-bar icon, and
redesigned menu and supporters windows), and turns bug reporting into a friendly,
guided form. A batch of layout and animation glitches are fixed too.


✨ New Features

🔒 Focus Lock — peek at other windows without stealing focus

If you use Focus Follows Mouse (focus follows your pointer), you can now hold a key to
temporarily pause it. That lets you move your cursor across other windows — to read, scroll,
or click a button — without the focus jumping away from the window you're working in. Let go of
the key and focus-follows-mouse behaves normally again.

How to use: Settings → in the Focus Follows Mouse section → Focus Lock Modifier.
Pick a key (Option, Command, Control, or Shift — including left/right-specific variants).
Off by default, and only available when Focus Follows Mouse is turned on. No extra permissions needed.

⌨️ Left-side keys can now be your one-key Hyper trigger

The System Hyper Trigger (a single key that stands in for the full ⌃⌥⇧⌘ Hyper chord while held)
can now be a left-side modifier — Left Control, Left Option, Left Shift, or Left Command —
not just the right-side keys. Handy if you'd rather dedicate a left-hand key to Hyper.

How to use: Settings → HotkeysSystem Hyper Trigger. The dropdown now lists both
left and right variants of each modifier, alongside Caps Lock and F13–F20.

🪟 Resize windows in the Dwindle layout (mouse and keyboard)

The Dwindle layout now supports resizing the focused window two ways:

  • With the mouse: hold the resize modifier (Option by default) and right-drag a tiled
    window to grow or shrink it, with the split adjusting live as you drag.
  • With the keyboard: two new commands, Grow Focused Window and Shrink Focused Window,
    resize the focused window in steps. They figure out the direction from where the window sits, so
    there's no left/right/up/down to remember.

How to use: The mouse gesture is on by default (change the key in Settings → Mouse Resize →
Right Mouse Resize Modifier). The keyboard commands ship without a shortcut — assign one in
Settings → Hotkeys (search "Grow Focused Window" / "Shrink Focused Window"). Both are
Dwindle-layout features.

🧱 Niri column settings now rearrange the windows you already have open

In the scrolling Niri layout, changing Visible Columns or the Default Column Width used
to only affect new windows — your existing windows stayed put, even after a restart. Now those
settings immediately re-tile every open window across all your workspaces, so the slider does what
you'd expect.

How to use: Settings → Niri Layout → adjust Visible Columns or Default Column Width;
your current windows rearrange right away.


🎨 A fresh look

A short launch animation

When OmniWM starts, a brief full-screen splash now plays — it draws the "Omni" wordmark with a
soft glow and then clears to your desktop. It's quick and plays on every launch.

New menu-bar icon

The menu-bar icon is now OmniWM's own brand "O" mark instead of the generic system circle, so
it's easier to recognize. Click it for the OmniWM menu, same as before.

Redesigned menu-bar menu

The menu-bar menu's quick toggles are now a tidy grid of tiles instead of one long list — Borders,
Workspace Bar, Keep Awake, Focus Follows Mouse, Focus at Edge, Mouse to Focused, Follow Monitor, Move
at Edge, and Mouse Warp are all one click away. The everyday actions (Settings, App Rules, Report a
Bug) stay at the top, and the less-used items are grouped into Advanced, Diagnostics, and
Help & Links submenus to keep things uncluttered.

Redesigned Omni Sponsors window

The supporters window is now a resizable "hall of honor" with a gentle animated aurora backdrop and a
grid of all supporters that slowly auto-scrolls (it pauses when you hover, scroll, or interact, and
respects your system Reduce Motion setting). Cards glow on hover and link to each supporter's GitHub
profile, with reserved slots at the top for future company sponsors.

How to use: menu-bar menu → Omni Sponsors. Drag the window edges to resize it.


🐞 Bug reporting is now a friendly, guided form

Reporting a problem from inside OmniWM is much easier and clearer. Instead of a single freeform box,
you now get a guided, structured flow.

  • Open it from the menu: menu-bar menu → Report a Bug… (also in Settings).
  • First-time walkthrough: the first time you open it, a short 4-step guide explains the flow —
    record a trace, reproduce the bug, describe it, and submit. You can re-open the guide anytime.
  • Structured fields instead of a blank page: a Category dropdown (Tiling, Focus, Multi-monitor,
    Window placement, Crash, Performance, Visual), a short "what happened", and optional "what you
    expected", "steps to reproduce", and "affected apps". You can also note the active layout and
    whether it's a regression (used to work, never worked, or unsure) with the last known-good version.
  • Optional one-tap recording: start a diagnostic trace right from the form, reproduce the bug,
    then stop and save — it captures what's happening so hard-to-repeat bugs are far easier to fix.
  • Optional on-device AI polish: turn your rough notes into a clean, well-structured report. It runs
    on your Mac — nothing is sent to the internet — and you review the suggestion before applying it.
  • You stay in control of what's shared: when you submit, OmniWM builds a diagnostics .zip
    (logs, your settings, any trace, system info), reveals it in Finder so you can see exactly what's
    inside, and opens a pre-filled GitHub issue in your browser. You attach the zip and post it
    yourself — OmniWM never touches GitHub on your behalf.
  • Your draft is saved automatically as you type and survives quitting or restarting OmniWM.

🛠️ App Rules editor, rebuilt

The App Rules editor (which decides how specific apps are tiled, floated, or sent to a workspace) is
clearer and harder to get wrong.

  • Staged editing with Save / Revert: your edits are held as a draft and only take effect when you
    click Save. You can Revert to undo, and you'll be warned about unsaved changes before
    switching rules or closing the window.
  • Rules must actually do something: a rule that only matches windows but has no effect can no
    longer be saved — you'll see a clear prompt to set a layout, a workspace, or a minimum size. (Any
    old "do-nothing" rules simply won't be applied.)
  • Clearer validation: minimum width/height must be positive numbers, broad "AX role only" matchers
    prompt you to add a real identifier (bundle ID, app name, or title), and a rule uses one title match
    at a time (a regex wins over a plain substring).
  • The Bundle ID field is now editable on existing rules, so you can correct which app a rule targets.

🩹 Smoother and more reliable

  • Tabbed columns behave properly. Windows dragged into or out of a tabbed column no longer jump
    around, and tabbed columns no longer split apart when you switch tabs or scroll.
  • Tab switching and scrolling are smoother. Only the active tab animates each frame, so motion is
    cleaner and your Mac does less work.
  • Smoother Niri scrolling. Sliding between columns/workspaces in the Niri layout no longer causes
    the brief stutter or freeze some setups would hit during fast scrolling.
  • No more column-height flicker. Navigating left/right between columns no longer makes heights
    briefly snap to an even split.
  • Windows stay on screen while animating. A window growing from one to two stacked windows no
    longer dangles off the bottom edge mid-animation.
  • Focus won't get stranded on an empty monitor. Pressing a directional focus key at the edge of
    your windows only crosses to a neighboring monitor if that monitor actually has windows.

🔧 Under the hood

  • More reliable handling of windows that get replaced (e.g. an app swapping one window for another),
    with less unnecessary churn.
  • Hardened drawing of the focus border, plus validation of border settings.
  • Added internal diagnostics and timing instrumentation to make future performance issues easier to
    track down.
  • Removed dead legacy code paths that current macOS no longer needs.
  • Fixed an architecture check in the release packaging so the universal (Apple Silicon + Intel) build
    is assembled correctly.

⚠️ Quick heads-up for existing users

  • App rules that don't do anything no longer apply. Open Settings → App Rules and make sure each
    rule sets a layout, a workspace, or a minimum size.
  • The menu-bar icon looks different — it's now OmniWM's "O" brand mark.
  • A short launch animation plays on every start.
  • Grow/Shrink Focused Window have no default shortcut — assign one in Settings → Hotkeys if you
    want them.
  • New features are off by default (Focus Lock is Off; the new left-side Hyper options only apply
    if you pick one).

Release Integrity

  • OmniWM-v0.5.2.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.2.zip SHA-256: e67c57926ad5cd577f06dfc2a000621fda7136fb4ae6e8977eb5c06265841f3e
  • GhosttyKit.xcframework-v0.5.2.zip SHA-256: b85a87af371c8cf83a4629dffd14d2beeb6160cd0233d177d034d0505d856771

OmniWM v0.5.1

Choose a tag to compare

@BarutSRB BarutSRB released this 24 Jun 16:02
CleanShot 2026-06-24 at 12 55 52

What's New Since 0.5.0

This release is mostly about making problems easier to explain and easier to fix. OmniWM can now help you spot common setup issues, record a problem while it happens, gather the useful files, and open a clearer GitHub issue without making you dig through hidden folders.

Easier Troubleshooting

  • Added a new Troubleshooting area in Settings.
  • OmniWM now checks for common problems such as missing Accessibility permission, unavailable shortcuts, shortcuts that may also trigger macOS actions, Hyper-key shortcuts that were recorded too narrowly, Dock placement that can interfere with parked windows, display arrangements that can make edge behavior look wrong, and settings file problems.
  • Each warning explains what is wrong in plain language and, when possible, gives you a button to open the right System Settings page or reveal the right folder.
  • Recent troubleshooting files now appear in one place, with buttons to copy, reveal, or reuse them.

Record a Problem

  • You can start a short problem recording from the menu bar or from Settings.
  • While recording, the menu bar icon changes so it is obvious that OmniWM is capturing what is happening.
  • When you stop recording, OmniWM saves the file and reveals it in Finder.
  • A recording captures the state before and after the problem, plus recent window events, shortcut input, mouse movement, layout changes, and where windows were placed. That makes fast or hard-to-repeat bugs much easier to understand.
  • Recordings stop automatically after ten minutes so they do not keep running by accident.

Better Issue Reports

  • Added a Report Issue screen that creates a local zip file and opens a pre-filled GitHub issue in your browser.
  • The zip file can include the current troubleshooting report, recent crash logs, recent recordings, focused-window details, and your settings file.
  • OmniWM reveals the zip file in Finder so you can review it before attaching it to a public issue.
  • If the issue text is too long for a browser link, OmniWM copies it to the clipboard and still opens GitHub for you.
  • On supported Macs, OmniWM can use on-device Apple Intelligence to turn a rough report into a cleaner issue draft. On other Macs, it still formats your report into the same issue template without using AI.
  • If your report mentions a shortcut, OmniWM can compare it with your current shortcuts so the issue names the right command instead of guessing.

Crash Follow-Up

  • If OmniWM recovers from a crash, Settings now shows a crash banner with a button to start a pre-filled report.
  • Crash logs are saved locally and kept with the other troubleshooting files, so the newest report can include what happened around the crash.

Window-Specific Help

  • Added a way to save details about the focused window when one app or one window refuses to tile, floats unexpectedly, or behaves differently from normal windows.
  • That saved file can be included with the next issue report, which makes app-specific window problems easier to investigate.

Focus Reliability

  • Rapid keyboard navigation is more reliable in both Niri and Dwindle layouts.
  • Fast repeated focus moves are less likely to end with OmniWM focusing the wrong window or losing the final move.

Project Notes

  • Updated the documentation for the new issue-report prompt and troubleshooting workflow.
  • Added related OmniWM forks to the README.
  • Removed old cleanup files and simplified the release checks.

Download Verification

  • OmniWM-v0.5.1.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.1.zip SHA-256: f337c0d5cfcb796815358d23f8aafecddbac6ac213aa10cbf35467604f48e878
  • GhosttyKit.xcframework-v0.5.1.zip SHA-256: 2267caddbe0b4b970a45d2a4f8c324ce6ce9485fa244c61560493b83da9caeed

OmniWM v0.5.0

Choose a tag to compare

@BarutSRB BarutSRB released this 20 Jun 00:45

What's New Since 0.4.9.9

This release focuses on making multi-monitor setups more predictable, while cleaning up hotkeys, single-window sizing, spacing, and app rules.


✨ New Features

🖥️ Custom monitor layout ("Monitor Routing")

OmniWM now has a dedicated OmniWM Routing Arrangement in Settings → Monitors. By default it follows your macOS display arrangement, but you can switch to Custom Arrangement and drag your displays into the layout OmniWM should use for cross-monitor behavior. This map drives focus movement, moving windows between monitors, and mouse warp — it does not change where macOS physically places windows. Great when macOS's arrangement doesn't match where your monitors actually sit.

How to use: Settings → MonitorsOmniWM Routing Arrangement → choose Use macOS Arrangement (default) or Custom Arrangement, then drag each display tile into a grid that matches your real desk. A Left/Right/Up/Down neighbor preview shows the result.

🔀 Directional focus can cross to the next monitor (opt-in)

Pressing Focus Left/Right/Up/Down at the edge of a workspace used to do nothing once you ran out of windows. Now it can jump focus to the monitor physically next to you in that direction, selecting the window nearest the edge you crossed — treating all your displays as one continuous space.

How to use: turn on Focus Across Monitor at Edge (menu-bar menu under CONTROLS, or Settings → Monitors → Cross-Monitor Behavior). Default focus keys are Option + arrow keys. Off by default; does nothing on a single monitor.

↔️ Move a window across to the next monitor (opt-in)

Keep nudging a window past the edge of a workspace and it can now hop to the neighboring monitor's active workspace.

How to use: enable Move Window Across Monitor at Edge (menu-bar menu or Settings → Monitors → Cross-Monitor Behavior). Off by default.

📋 App rules for apps that have no bundle ID

App rules now work for apps that don't expose a normal runtime bundle ID (some Electron/Java/wrapper apps, e.g. VMD). Leave Bundle ID blank and match by app name or window title instead. Bundle ID is still the strongest match when an app has one.

How to use: menu-bar → App RulesAdd app rule. Pick the app from the running-apps list (apps with no bundle ID are now flagged "No bundle ID" and auto-enable name matching), or leave Bundle ID empty and open Advanced Matchers to switch on App Name Contains and/or set a Title Match (substring or regex). A rule must still have at least one identifier — a rule built only from AX role/subrole is rejected as too broad. The CLI supports the same:

omniwmctl rule add --app-name-substring VMD --layout float

⌨️ Pin a shortcut to the left or right modifier

Shortcuts can now fire only on a specific side of a modifier — e.g. Left Option and Right Option can be treated differently.

How to use: Settings → Hotkeys. After you record a shortcut that includes a modifier, a Modifier side dropdown appears: Either (default, same as before), Left, or Right. Existing shortcuts keep matching either side unless you change them. Side-pinned shortcuts require Input Monitoring permission; either-side shortcuts keep working without it.

🎯 System Hyper Trigger (one key acts as Hyper)

Don't want to hold four keys? A single key or extra mouse button can stand in for the whole Hyper chord while held — e.g. hold Caps Lock and OmniWM treats it as ⌃⌥⇧⌘.

How to use: Settings → HotkeysSystem Hyper Trigger dropdown. Supported triggers include Caps Lock, F13–F20, right-side modifier keys, and extra mouse buttons (3/4/5). Set to None by default; requires Input Monitoring permission.


🔧 Changes & Improvements

Hyper is now a literal ⌃⌥⇧⌘ chord

"Hyper" is simplified — it's now literally Control + Option + Shift + Command, with no virtual-Hyper machinery to configure. (See System Hyper Trigger above for a one-key stand-in.)

The default workspace-switch shortcuts changed:

  • Switch to workspace 1–9: now Option + 1–9 (was Hyper + 1–9)
  • Move window to workspace 1–9: still Option + Shift + 1–9

Your custom hotkeys stay custom, but if you relied on the old Hyper behavior, check Settings → Hotkeys.

  • ⚠️ The old Hold Threshold setting was removed — a System Hyper Trigger now acts as Hyper instantly while held, with no delay to configure.

Single-window sizing: Full Screen / Custom / Column Width

Single-window settings are now clearer and shared across Niri and Dwindle. The old per-layout ratio picker is replaced by one control with three modes:

  • Full Screen (new default) — a lone window fills the available work area.
  • Custom (W:H) — a fixed width × height (default 1920×1080), centered and clamped to the screen.
  • Column Width (Niri only) — keeps the old default-column-width behavior, now an explicit choice.

How to use: Settings → Niri Layout or Dwindle LayoutSingle Window (also available per-monitor, shown as "Global" until you override it).

  • ⚠️ Default is now Full Screen. Old ratio-style settings are migrated into Custom sizes where possible, but if your setup depended on the old implicit single-window sizing, check Settings → Niri/Dwindle.

Fullscreen truly fills the display

Fullscreen and single-window Full Screen now use the same gapless, UI-safe layout frame — edge-to-edge, ignoring tiling gaps, while still staying clear of the menu bar/notch and the workspace bar. Normal tiled layouts still respect your gaps.

  • ⚠️ If you use outer gaps, fullscreen / Full Screen windows will now look noticeably larger and flush to the edges.

Mouse warp, simplified

Mouse warp (jumping the pointer from one screen edge to the next) now follows your routing arrangement instead of the old warp axis/order model, and is a single on/off toggle.

  • ⚠️ The old warp order and axis/direction settings were removed. If you had custom warp ordering before, review Settings → Monitors after updating and set up a Custom Arrangement if needed.
  • How to use: Mouse Warp toggle (menu-bar menu or Settings → Monitors → Cross-Monitor Behavior); on by default. A new Mouse Warp Margin stepper (1–10 px) controls how close to the edge the pointer warps.
  • (The cross-monitor control "Follow Window to Workspace" was also renamed to Follow Window to Monitor to better describe what it does.)

Per-monitor outer margins, now in one place

Outer margins can be configured per monitor from Settings → General → Outer Margins, helpful for mixed setups where one display needs different top/bottom/left/right spacing than another. These now apply to both the Niri and Dwindle layouts.

  • ⚠️ The outer-margin sliders moved from the Dwindle Layout tab to the new "Outer Margins" section on the General tab. Use the Configure dropdown to pick Global Defaults or a specific monitor.
  • Top margins are now measured consistently from each screen's physical top edge, so spacing behaves better across built-in, notched, and external displays.

Uncapped workspace bar offsets

The workspace bar's X/Y position offsets are no longer capped at ±500 px, so you can position the bar farther for unusual or notch-aware layouts. (Heads-up: very large values can push the bar off-screen; reset toward 0 to recover.)

How to use: Settings → Workspace BarPosition Offset → X/Y Offset (global or per-monitor).


🐛 Fixes and Polish

  • Fixed multi-monitor outer gap resolution so each display resolves its own consistent margins, especially when mixing notched and notchless screens. (#419)
  • Fixed lone-window sizing bugs that could leave a window at a broken size or stuck after moving across workspaces. (#420, #220)
  • Improved Niri behavior when windows move between workspaces or modes (per-workspace membership is now reconciled correctly for windows present in more than one workspace).
  • Directional focus no longer dead-ends on empty Niri edge cases when cross-monitor focus is enabled.
  • Monitor orientation editing now uses the monitor arrangement canvas — click a display to edit it instead of using a separate picker.
  • Status-bar cross-monitor controls were grouped and relabeled for clarity.
  • For CLI/IPC users, the per-display query now reports resolved outer gaps (outer-gap-left/right/top/bottom).
  • OmniWM's GPL-2.0-only licensing is now explicitly documented and enforced in source headers.

⚠️ Quick heads-up for existing users

  • Workspace switching is now Option + 1–9 (was Hyper + 1–9).
  • Single windows fill the screen by default (Full Screen).
  • Fullscreen windows now reach the screen edges (gaps ignored).
  • Mouse-warp order/axis settings are gone — warp now follows your monitor routing.
  • Outer Margins moved from the Dwindle tab to the General tab.
  • The Hyper "Hold Threshold" setting was removed.
  • New opt-in features (System Hyper Trigger, left/right modifier shortcuts) need macOS Input Monitoring permission.

Release Integrity

  • OmniWM-v0.5.0.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.5.0.zip SHA-256: df60450706f417f03f0eec0d1ba98cbd4cd5ad4770cdcc3ebecb29b717db7116
  • GhosttyKit.xcframework-v0.5.0.zip SHA-256: 82ed64eef824be6fec1e8fc363c557702b42b89eb012f37e616a0a3041cff100

OmniWM v0.4.9.9

Choose a tag to compare

@BarutSRB BarutSRB released this 17 Jun 00:05

What's New Since 0.4.9.8

OmniWM 0.4.9.9 lands a long-requested multi-monitor breakthrough: first-class support for macOS "Displays have separate Spaces". This moves OmniWM closer to the front edge of modern macOS tiling window managers by handling native Space topology directly instead of papering over it with fragile workarounds.

  • "Displays have separate Spaces" is now a real runtime requirement and a first-class topology model. OmniWM validates the macOS setting at startup, refreshes active Spaces per display, and avoids managing windows hidden on inactive native Spaces, breaking through one of the biggest platform barriers for serious multi-monitor tiling on macOS.
  • Trackpad workspace swipes now use the raw MultitouchSupport gesture source, which keeps gesture detection from getting stuck when the focused app owns the normal gesture stream and survives stop/restart plus sleep/wake cycles.

Release Integrity

  • OmniWM-v0.4.9.9.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.4.9.9.zip SHA-256: 4ca5df03132a98cee11f05a3c9d8d17b6063de4a66515489521c6e4035d89d36
  • GhosttyKit.xcframework-v0.4.9.9.zip SHA-256: 51bd5c70dfec5b61dd6325b77e09f0a4d7ee2ee7aa67d3a79b2df46c1f80bb12

OmniWM v0.4.9.8

Choose a tag to compare

@BarutSRB BarutSRB released this 16 Jun 19:29

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.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
  • OmniWM-v0.4.9.8.zip SHA-256: 3d3be94b04c99e3f41299f87c79942d6dee7a5a43b84d437374d93ea6f01c752
  • GhosttyKit.xcframework-v0.4.9.8.zip SHA-256: 4b42ed3d073d8c777998227286d25d0be0a956ea043d59c2b3298d9d8bd52e8e