v0.21.0-Beta
Pre-release
Pre-release
Immutable
release. Only release title and notes can be modified.
New features
- #12 Implement
focus-follows-mouse - #278 Overall, increase AeroSpace scriptability:
- Implement shell
&&(and),||(or),;(sequence) and|(pipe). See #shell section in the updated docs. - Implement
aerospace test,aerospace test-not,aerospace eval,aerospace echocommands. on-window-detectedcallback gets a new more composable syntax: docs (the old syntax is still supported and probably will remain supported forever: docs)- Related issues: #359 #842 #375 #460 #660
- Implement shell
- 16a0b634 Migrate from TOML 1.0.0 to TOML 1.1.0. Now, you can use newlines in inline tables! Which I highly recommend in your
on-window-detectedcallbacks instead of the dubious double square brackets syntax. AeroSpace docs were updated to use the new syntax. See TOML 1.1.0 release notes for more details. - #1673 Introduce the warnings in
reload-configcommand. Warnings are printed to stderr and do not block config reload. You can use the new--warnings-as-errorsflag to convert warnings to errors.- You will now get a warning if
config-versionis below the maximum value.
- You will now get a warning if
- #163 Implement
auto-reload-configconfig option. Kudos to @bshowell0 - #1514 Implement
aerospace subscribecommand - the alternative to callbacks. Kudos to @ojowwalker77 - #107 Implement
aerospace run-callbackcommand to programmatically run the specified callback. - #1480
focus/movecommands: add--fail-if-fullscreen/--fail-if-macos-native-fullscreen. Kudos to @ishangodawatta - bb1e5429
layoutcommand can now change the layout of an empty workspace (changes the layout of the root tiling container) - #940
layoutcommand: support new--rootflag - 91064acc
layoutcommand: support--workspace <workspace>flag - #1701 Implement
aerospace focus --wrap-aroundalias. Kudos to @i-pj
New documentation
config-versionis now properly documented: linkAEROSPACE_WINDOW_IDandAEROSPACE_WORKSPACEenvironment variables are now properly documented: link- Update the "trackpad gestures trick" in goodies to use the new more performant shell operators: link
Improvements
- #1513 The client-server socket protocol is now documented and is part of the public API. Unfortunately, this results in a breaking change for clients who interact with the socket directly.
- #2103 Treat Outlook reminders as popups. Kudos to @sivertism
- #2133 Treat Codex pet window as popup
- #776 Treat Emacs child frames as popups. Kudos to @jperras
Bug fixes
Other minor bug fixes: 6021c13c, a8241641, #1064, 19b5999d 6a2a126d ecfc745c
Breaking changes
- #1513 The client-server socket protocol was changed to make it future proof and public. Unfortunately, it results in a breaking change for clients that interact with the socket directly. The clients have to be updated.
- #278 The parser of binding's right-hand side was rewritten to support the new shell operators. That results in breaking changes in some corner cases. Most of the users are not affected. But if you are doing something creative in your bindings, you might need to update them. The fix should be trivial - just quote the appropriate arguments.
- b5f9e443
layoutcommand now return zero exit code when the layout is already applied. This only affects users who supplied a single argument to thelayoutcommand (I expect it to be rare). You can use--fail-if-noopflag to return the old behavior. - 8ceabe9b Forbid the error prone
on-window-detectcallbacks with empty or non-existingifclause.
- Nikita Bobko, 30 June 2026