App Rules
Open App Rules from OmniWM’s status-bar menu to configure window-matching behavior. Rules can match by bundle ID, app-name substring, title substring or regex, and AX role/subrole. More-specific matches win; ties follow list order.
Create a rule from a window
Section titled “Create a rule from a window”- Focus the window you want to match, then open App Rules from the status-bar menu.
- In Focused Window Inspector, click Refresh, then New Rule from Focused Window.
- Review the populated app, title, and AX role/subrole matchers. Remove any narrowing matcher you do not want, then choose the rule’s actions.
- Click Save or press
Command + Sto save your edits.
For the observed AX values and classification details, expand Advanced / Troubleshooting in the inspector and use Copy Debug Dump. This avoids guessing the role and subrole needed by a precise inclusion rule.
Structural admission
Section titled “Structural admission”Rules do not turn every macOS surface into a window OmniWM owns. Structural admission runs first: help tags,
input-method surfaces, and WindowServer children of another window stay unmanaged and cannot be opted in by a
rule. At ordinary WindowServer levels, a closeable, parentless accessory-app AXWindow proceeds through normal
classification.
Buttonless accessory roots, prohibited-app roots, non-AXWindow roles, and otherwise unsupported AX subroles
require a precise inclusion rule. The rule must identify the app or window, set both axRole and axSubrole to
the observed values, and choose Tile or Float rather than Automatic. Parentless roots at status-window level or
higher use the same precise shape, but only a user-authored rule can opt them in; built-in rules cannot. For example:
[[appRules]]bundleId = "com.example.overlay"axRole = "AXWindow"axSubrole = "AXStandardWindow"layout = "float"Use the target’s actual bundle ID and AX values. This escape hatch does not admit a parented surface.
Rule actions
Section titled “Rule actions”- Layout (Automatic / Tile / Float) — leave classification automatic, or force matching windows to tile or float.
- Assign to Workspace — use a valid workspace assignment as the initial default whenever the matching app currently has no tracked windows. Additional windows open on the workspace active when creation began. Automatic rule reevaluation leaves managed windows in place, while explicit rule application can move them. Readmission, structural replacements, and unique persisted boot-restore matches preserve their existing placement continuity.
- Initial Container Primary Span (Niri) — start matching resizable windows at 5–100% when they create or claim a new container; the container remains freely resizable afterward.
- Minimum Size — prevent the layout engine from sizing windows below a threshold.
Rules can also be written in settings.toml (see Configuration). The equivalent TOML rule uses a proportion:
[[appRules]]bundleId = "net.kovidgoyal.kitty"initialContainerPrimarySpan = 0.5Default rules
Section titled “Default rules”OmniWM ships 13 default rules — minimum-size rules for apps whose windows misbehave when squeezed too small — covering browsers (Chrome, Safari, Zen, Firefox, Dia), Ghostty, Spotify, Discord, Outlook, Messages, and more. Edit or remove them freely in the App Rules window.