Ghost windows with empty titles accumulate for all apps, persist after app quit (macOS Tahoe 26.3.0) #1979
Unanswered
rv97
asked this question in
potential-bugs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Body
AeroSpace is creating phantom/ghost windows for every application. These windows have empty titles, are not visible on
screen, but are tracked by AeroSpace as real tiled windows. They accumulate over time — each time an app is quit and
reopened, additional ghost windows appear. This causes the tiling layout to split into increasingly smaller sections,
with blank space where the ghost windows are tiled.
This affects all applications, not just a specific one. Tested with WezTerm, Cursor, and others — all exhibit the same
behavior.
Environment
Steps to Reproduce
below)
running processes
Observed Behavior
After opening WezTerm once:
$ aerospace list-windows --all --format "%{window-id} | %{app-name} | '%{window-title}' | %{workspace}"
2697 | WezTerm | '' | W
2718 | WezTerm | '' | W
After quit and reopen (WezTerm has ZERO running processes between quit and reopen):
2566 | WezTerm | '' | W
2585 | WezTerm | '' | W
2619 | WezTerm | '' | W
2640 | WezTerm | '' | W
The number keeps growing with each quit/reopen cycle
The same behavior occurs with Cursor and other Electron-based apps.
Expected Behavior
What I've Tried (None of These Resolved the Issue)
opened
[[on-window-detected]]
if.window-title-regex-substring = '^$'
run = 'layout floating'
phantom windows.
windows
Additional Context
through a different code path
Config (Relevant Sections)
start-at-login = true
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
default-root-container-layout = 'tiles'
default-root-container-orientation = 'auto'
Example on-window-detected rules (issue affects ALL apps with these rules)
[[on-window-detected]]
if.app-id = 'com.github.wez.wezterm'
run = 'move-node-to-workspace W'
IMP Note: No change has been made to Aerospace in the recent times. I am using Aerospace for more than 8 months. This is the first time facing this issue.
Beta Was this translation helpful? Give feedback.
All reactions