What's New Since 0.6.3
0.6.4 turns the single scratchpad into ten multi-window scratchpad slots, adds automatic settings migration so upgrades no longer reset your configuration, exposes diagnostics capture through omniwmctl, and lets the Workspace Bar step aside per display during native fullscreen. It also retires stale tiles for apps that close windows without destroying them, and introduces OmniWM's compass-mark identity, its website, and a documentation hub.
Before You Upgrade — Breaking Changes
-
Your 0.6.3 settings migrate automatically. No reset, no manual edit. On first launch OmniWM copies the exact original file to
settings.toml.pre-v1(or.pre-v1.1) and rewrites the live file withschemaVersion = 1. The migration preserves configured values, safely matchable unknown keys, symlink targets, and permissions. It also fills in the keys 0.6.4 requires —workspaceBar.hideInNativeFullscreen = falseand an empty[scratchpads.labels]— and maps your old scratchpad hotkeys onto slot 1. The canonical rewrite can reorder the document and strip comments; the.pre-v1backup retains the original text verbatim. Automatic migration is guaranteed for settings emitted by OmniWM 0.6.1 through 0.6.3, so a normal 0.6.3 upgrade needs no config work. Diagnostics reports every automatic change and the backup location. -
Rolling back to 0.6.3 resets your settings. Keep the
.pre-v1backup. A settings file written by 0.6.4 contains hotkey action IDs that 0.6.3 cannot resolve. 0.6.3 treats the whole file as invalid, preserves it assettings.toml.corrupt, and starts from full defaults. Migration is forward-only: to downgrade, quit OmniWM and restoresettings.toml.pre-v1oversettings.tomlbefore launching 0.6.3. -
Two hotkey action IDs were renamed and eighteen were added.
assignFocusedWindowToScratchpadbecameassignFocusedWindowToScratchpad.1andtoggleScratchpadWindowbecametoggleScratchpad.1; slots 2 through 10 add the remaining pairs, allUnassigned. Migration rewrites the two old IDs in place, so your existing triggers survive and Settings > Hotkeys keeps working. This matters if you keepsettings.tomlin a dotfiles repo, generate it from a template, or hand-merge it across machines — the old IDs are no longer valid action IDs, and an unknown ID invalidates the file. In Settings the rows now read Assign Focused Window to Scratchpad N and Toggle Scratchpad N. No other action ID, default binding, config path, runtime-state path, IPC socket path, or CLI command path changed, and OmniWM still requires macOS 26+ on Apple Silicon. -
IPC protocol goes from 11 to 13. Upgrade the bundled
omniwmctlwith the app. A 0.6.3 client speaks 11 and will be rejected. Protocol 13 covers two bumps:- Capture requests and results, the
captureActionscapability list, and a newcapture_state_conflicterror code. Clients that switch exhaustively overIPCErrorCodemust handle it. - Scratchpad slot indexing.
command scratchpad assignandcommand scratchpad togglenow require ascratchpadIndexargument (<1-10>in the CLI); the old no-argument form is an error.
- Capture requests and results, the
-
Window and Workspace Bar payloads changed shape.
query windowsgains a nullable JSONscratchpadIndexfield and ascratchpad-indexfield selector. Full table, text, and TSV output keep the existingSCRATCHPADcolumn in place, but assigned windows now show their slot number instead oftrue, so parsers must update value handling rather than column positions.- The
--scratchpadselector changed meaning. It used to match the scratchpad window; it now matches every window assigned to any of the ten slots, so scripts that assumed a single result can now receive many. IPCWorkspaceBarMonitor.scratchpad— previously a nullable object holding onewindow— is replaced byscratchpads, an always-present array. Each entry carriesindex, an optionallabel,windows, andisVisible. An empty array replaces what used to benull.
-
focus previousis advertised differently. It was published as Niri-only while command enforcement had always treated it as shared, so it already ran fine on Dwindle. The manifest now matches reality.query capabilities,query commands, and generated shell completions all reportshared— regenerate cached capability output and completion scripts. -
The IPC/CLI and architecture references moved out of the repository.
docs/IPC-CLI.mdanddocs/ARCHITECTURE.mdare now short stubs pointing at omniwm.app/reference/cli/overview and the architecture guide. The full text is maintained underwebsite/src/content/docs/. Bookmarks and links to the old in-repo files still resolve, but no longer contain the reference itself.
Headline Feature — Ten Multi-Window Scratchpads
The scratchpad is no longer a single parked window. There are now ten numbered slots, each holding any number of floating windows, overlaid on whatever workspace you are looking at. An empty slot is inert and invisible. #585
-
Assign Focused Window to Scratchpad N moves the focused window into slot N, floating it if it was tiled and parking it off-screen. Pressing the same shortcut on a window already in slot N returns it to the layout.
-
Toggle Scratchpad N reveals or parks every window in the slot as one coordinated operation, on the monitor you are interacting with. Revealing a slot parks whichever slot was showing, so at most one scratchpad is on screen at a time.
-
A revealed scratchpad follows you across workspace switches and stays up until you toggle it off. If it is showing on another monitor, its shortcut summons it to the one you are on.
-
Revealed windows behave as ordinary floating windows. Whether clicking something underneath pushes them behind it follows the usual focus and raise rules, including Raise Window When Focus Follows Mouse.
-
Every non-empty slot gets a Workspace Bar pill showing its name and its windows' icons; clicking the pill toggles that slot. Scratchpad pills always group by app, independent of the
Deduplicate App Iconssetting. -
Slots are addressed by number everywhere. An optional label replaces the number in the Workspace Bar and in
omniwmctloutput:[scratchpads.labels] 1 = "term" 3 = "COMMS"
-
Automation gets the full surface:
omniwmctl command scratchpad assign <1-10>,omniwmctl command scratchpad toggle <1-10>, and window queries that expose both scratchpad membership and the slot index.
Scratchpad membership lasts for the lifetime of the OmniWM process — only the labels are persisted. The ten assign/toggle pairs start unassigned except for slot 1, which inherits your previous scratchpad shortcuts through migration.
Settings and Automation
- Settings persistence now safely preserves unknown TOML keys through saves, including array-owned keys when their owner can be matched unambiguously. Ambiguous preservation, exhausted migration-backup slots, unsafe symlinks, and unsupported-schema or migration-backup save races leave the file untouched and block writes rather than risk data loss.
- Trace and performance captures can be scripted with
omniwmctl capture start trace,omniwmctl capture start performance,omniwmctl capture stop, andomniwmctl capture status. Capture state and the most recent artifact metadata are available through IPC. As with allomniwmctluse,Enable IPCmust be turned on from the menu bar first. - Quake Terminal's updated GhosttyKit adds Kitty clipboard reads and writes, binary-safe multi-format transfers, clipboard type listings, requester-aware confirmation previews, optional session grants, and a dedicated selection clipboard.
Workspace Bar and Window Lifecycle
- Hide in Native Fullscreen is a new opt-in Workspace Bar setting, off by default. Suppression is derived per display, so a bar disappears only on the monitor showing a native-fullscreen Space and returns automatically on exit. Reserved tiled layout space stays stable to prevent unrelated windows from jumping. #601
- Windows that apps such as Calendar close by ordering out instead of destroying are now retired from the layout. OmniWM validates targeted rescans against the app's Accessibility window list, including when the frontmost app loses its last focused window. #610
- Targeted rescans preserve intentionally parked windows, including scratchpad and other hidden lifecycle states, rather than mistaking them for closed windows.
Identity, Website, Documentation, and Thanks
- OmniWM now uses a compass-mark identity across the app icon, launch overlay, status item, repository, and a reproducible brand-asset package.
- omniwm.app launches with interactive feature demos, a knowledge base, install and CLI references, testimonials, sponsor credits, and canonical-domain redirects.
- The README, architecture guide, IPC/CLI contract, issue-reporting guidance, and contributor documentation were rewritten against the current codebase and Swift 6.4 toolchain. The README now documents scratchpads, orientation-aware Niri containers, the advanced-commands hotkey filter, and the complete shortcut tables.
- Matt Wicks (@wicksipedia) joins the contributor showcase under SSW Consulting, and the latest private sponsor is recognized anonymously with a path to request public credit.
Release Integrity
The OmniWM app is Developer ID signed, Apple-notarized, stapled, and Gatekeeper verified.
OmniWM-v0.6.4.zipSHA-256:9b2bf54d20d67f536270032e0625176c06c6e03b8897ddf025558d948339e5e7GhosttyKit.xcframework-v0.6.4.zipSHA-256:c7b1a8541206fa4ebf55e5dca8f12df4efa7ed5df490c4c426a5ee091c74ec21