AeroSpace

ProductivitymacOS

An i3-like tiling window manager for macOS.

Latest v0.21.3-Beta · · macOSby Nikita BobkoWebsitenikitabobko/AeroSpace

Release activity

Release activity — 7 releases across 7 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 20261 release on Jun 30, 20261 release on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 20261 release on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 20261 release on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

7 releases in the last year

Changelog

v0.21.3-Beta

Pre-release
Changed 1
  • Improve Wispr Flow popup detection
Fixed 1
  • Ignore windows whose window id is zero to fix mistakenly detected windows in cmux
  • #2169 Ignore windows whose window id is zero. Fixes the mistakenly detected windows in cmux
  • #2170 Improve Wispr Flow popup detection
View originalPermalink
How v0.21.3-Beta went

v0.21.2-Beta

Pre-release
Fixed 2
  • Fix crash
  • Fix bug where floating windows sometimes could snap to top left corner when switching back and forth between workspaces
  • #2157 Fix crash
  • #2153 Fix bug: floating windows sometimes could snap to top left corner when switching back and forth between workspaces. Kudos to @Williawar
View originalPermalink
How v0.21.2-Beta went

v0.21.1-Beta

Pre-release
Fixed 4
  • Focus-follows-mouse now respects fullscreen windows
  • Focus-follows-mouse no longer triggers when the mouse hovers over system menu dropdown
  • Floating windows are no longer inserted between accordion windows during focusing
  • Accessing menu on non-main screen is now possible when 'Displays have separate spaces' is off
  • #2142 Fix bug: focus-follows-mouse didn't respect fullscreen windows
  • #2143 Fix bug: do not trigger focus-follows-mouse when the mouse hovers over system menu dropdown
  • #2147 Fix bug: floating windows were inserted in between of every accordion window during focusing
  • #1496 Fix bug: accessing menu on non-main screen was not possible ('Displays have separate spaces' is off)
View originalPermalink
How v0.21.1-Beta went

v0.21.0-Beta

Pre-release
Added 12
  • Implement focus-follows-mouse feature
  • Implement shell && (and), || (or), ; (sequence) and | (pipe) operators
  • Implement aerospace test, aerospace test-not, aerospace eval, and aerospace echo commands
  • Add new more composable syntax for on-window-detected callback
  • Introduce warnings in reload-config command with optional --warnings-as-errors flag
  • Implement auto-reload-config config option
Changed 6
  • Migrate from TOML 1.0.0 to TOML 1.1.0 to support newlines in inline tables
  • Allow layout command to change the layout of an empty workspace
  • Document client-server socket protocol as part of public API with breaking changes for direct socket clients
  • Treat Outlook reminders as popups
  • Treat Codex pet window as popup
  • Treat Emacs child frames as popups
Fixed 2
  • Fix potentially infinite while loop
  • Potentially fix 'Value is already destroyed' crash

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 echo commands.
    • on-window-detected callback 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
  • 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-detected callbacks 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-config command. Warnings are printed to stderr and do not block config reload. You can use the new --warnings-as-errors flag to convert warnings to errors.
    • You will now get a warning if config-version is below the maximum value.
  • #163 Implement auto-reload-config config option. Kudos to @bshowell0
  • #1514 Implement aerospace subscribe command - the alternative to callbacks. Kudos to @ojowwalker77
  • #107 Implement aerospace run-callback command to programmatically run the specified callback.
  • #1480 focus/move commands: add --fail-if-fullscreen/--fail-if-macos-native-fullscreen. Kudos to @ishangodawatta
  • bb1e5429 layout command can now change the layout of an empty workspace (changes the layout of the root tiling container)
  • #940 layout command: support new --root flag
  • 91064acc layout command: support --workspace <workspace> flag
  • #1701 Implement aerospace focus --wrap-around alias. Kudos to @i-pj

New documentation

  • config-version is now properly documented: link
  • AEROSPACE_WINDOW_ID and AEROSPACE_WORKSPACE environment 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

  • #2084 Fix potentially infinite while loop
  • #1921 Potentially fix 'Value is already destroyed' crash

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 layout command now return zero exit code when the layout is already applied. This only affects users who supplied a single argument to the layout command (I expect it to be rare). You can use --fail-if-noop flag to return the old behavior.
  • 8ceabe9b Forbid the error prone on-window-detect callbacks with empty or non-existing if clause.

- Nikita Bobko, 30 June 2026

View originalPermalink
How v0.21.0-Beta went

v0.20.3-Beta

Pre-release
Changed 1
  • Update codesign certificate due to expiration, which will cause AeroSpace to re-request accessibility permission
Fixed 2
  • Ensure that floating windows never appear off screen when moved by AeroSpace, such as when moved between monitors
  • Fix bug where floating windows could get stuck in a corner
  • 8134ad00 Make sure that floating windows never appear off screen when moved by AeroSpace (e.g. when moved between monitors). By @mobile-ar
  • #1987 #1875 Fix bug: floating windows could stuck in a corner. Kudos to @fbuetler, @tweezerticle, @buacanning for finding the root cause.
  • Update codesign certificate due to expiration. AeroSpace will re-request accessibility permission.
View originalPermalink
How v0.20.3-Beta went

v0.20.1-Beta

Pre-release
Changed 2
  • Improve Xcode dialog heuristic so that 'Open Quickly' and 'Quick Actions' are no longer treated as windows
  • Improve crash logging
Fixed 2
  • Don't show secure input indicator if the currently active binding mode is empty
  • Fix crash
  • Improve Xcode dialog heuristic. 'Open Quickly' and 'Quick Actions' are no longer treated as windows
  • #1817 Don't show secure input indicator if the currently active binding mode is empty
  • #1825 Improve crash logging
  • #1881 Fix crash
View originalPermalink
How v0.20.1-Beta went

v0.20.0-Beta

Pre-release
Added 7
  • Show an indication when macOS Secure Input is on
  • New persistent-workspaces config option
  • Support more interpolation variables in list-monitors, list-windows, list-workspaces
  • Add i3-ordered menubar style
  • Add fullscreen mode indication in menubar
  • Lift on-window-detected.run limitations
  • Implement on-mode-changed callback
Changed 7
  • Avoid unnecessary AX requests for focusing windows to improve performance with applications slow at answering AXRaiseAction requests
  • Improve dialog and popup heuristics for better compatibility with applications like Zebar, VSCode, Screen Studio, CleanShot X, browser PIPs, and Slack
  • Ignore browser PIP windows by default
  • Improve the optimal hide corner algorithm
  • Better config error reporting dialog
  • Volume command now shows volume indicator
  • Make users explicitly supply --stdin flag to workspace and move-node-to-workspace commands when stdin is used
Fixed 4
  • Fix bug where focus command didn't work when all windows were floating
  • Fix bug where detaching Chrome tabs sometimes yielded a floating window since Tahoe
  • Ignore iTerm2 hotkey window
  • Fix crashes

Improvements

  • 85fb9779 Performance: avoid unnecessary AX requests for focusing windows (affects apps that are slow at answering AXRaiseAction AX requests. For instance, Godot)
  • #1486 Show an indication when macOS Secure Input is on. By @mobile-ar
  • #1617 #1658 #1710 #1271 #221 #1667 c71c243298 Improve dialog/popup heuristics (Compatibility with: Zebar, VSCode, Screen Studio, CleanShot X, browser PIPs, Slack, and how the hell knows what else)
    • #1617 #2 Ignore browser PIP windows by default
    • New heuristic logic might break existing properly working applications. Please report issues
  • #413 Improve the optimal hide corner algorithm
  • #1495 Better config error reporting dialog. By @mobile-ar
  • #1494 volume command now shows volume indicator. By @mobile-ar

Bug fixes

  • #521 Fix bug: focus command didn't work when all windows were floating
  • #1771 Fix bug: Sometimes detaching Chrome Tabs yields a floating window since Tahoe
  • #1813 Ignore iTerm2 hotkey window
  • #1613 #1588 Fix crashes

New features

  • #999 New persistent-workspaces config option
  • #1656 #1161 Support more interpolation variables in list-monitors, list-windows, list-workspaces. By @alewis001
  • #711 Add i3-ordered menubar style. By @mobile-ar
  • #1494 Add fullscreen mode indication in menubar. By @mobile-ar
  • #20 Lift on-window-detected.run limitations
  • #390 Implement on-mode-changed callback

Breaking changes

  • #1683 Make users explicitly supply --stdin flag to workspace/move-node-to-workspace commands when stdin is used. By @Gai-H

- Nikita Bobko, 24 November 2025

View originalPermalink
How v0.20.0-Beta went

v0.19.2-Beta

Pre-release
Fixed 1
  • Japanese characters no longer cause the tray menu to glitch

Bug fix

  • #1576 Japanese characters make the tray menu glitch
View originalPermalink
How v0.19.2-Beta went

v0.19.1-Beta

Pre-release
Changed 1
  • Float iPhone Simulator window by default
Fixed 4
  • Fix NoMachine focus weirdness
  • Treat choose GUI fuzzer as a popup
  • Ignore focus changes from popups
  • Fix 0.19.0 regression with incorrect move-node-to-workspace exit-code

Bug fixes

  • #1546 Fix NoMachine focus weirdness
  • #1560 Treat choose GUI fuzzer as a popup
  • #1560 Ignore focus changes from popups
  • #1563 Fix 0.19.0 regression. Incorrect move-node-to-workspace exit-code

Improvements

  • #1547 Float iPhone Simulator window by default
View originalPermalink
How v0.19.1-Beta went

v0.19.0-Beta

Pre-release
Added 6
  • Support different menu bar styles
  • Add --boundaries and --boundaries-action options for move command
  • Support focus dfs-next and focus dfs-prev commands
  • Implement swap command
  • Show application names in corresponding workspaces in menu bar
  • Support --json and --count options in list-modes command
Changed 2
  • Improve dialog heuristics for qutebrowser without decorations
  • start-at-login = true now registers AeroSpace as a proper Login Item in System Settings
Fixed 4
  • Windows may randomly jump to the focused workspace
  • move-node-to-monitor right/down should place the windows to the most left/up available position
  • CGPoint.findIn crash
  • Floating windows could appear off-screen
Removed 2
  • Forbid empty string in workspace names
  • Drop --fail-if-noop from move-node-to-monitor command
Deprecated 1
  • Deprecate non-empty after-login-command

New features

  • #711 Different menu bar styles. By @mobile-ar
  • #183 Add --boundaries and --boundaries-action options for move command. By @gabsrp2002
  • #248 Support focus dfs-next / focus dfs-prev. By @rickyz
  • #8 Implement swap command. By @rickyz
  • #191 Show application names in corresponding workspaces in menu bar
  • #1026 Support --json and --count in list-modes command. By @MikaelCarpenter

Bug fixes

  • #1216 Windows may randomly jump to the focused workspace
  • #1425 move-node-to-monitor right/down should place the windows to the most left/up available position
  • #164 CGPoint.findIn crash
  • #1492 Floating windows could appear off-screen

Improvements

  • #276 Better dialog heuristics for qutebrowser without decorations
  • #1482 start-at-login = true now registers AeroSpace as a proper Login Item in System Settings

Breaking changes

  • Forbid empty string in workspace names
  • #1423 Drop --fail-if-noop from move-node-to-monitor <direction>
  • #1482 Deprecate non-empty after-login-command

- Nikita Bobko, 11 July 2025

View originalPermalink
How v0.19.0-Beta went
View all

Discussion