Skip to content

fix: Exclude desktop widgets from tile-all and cascade-all#1707

Open
claudeaceae wants to merge 1 commit intorxhanson:mainfrom
claudeaceae:fix/exclude-desktop-widgets-from-tile-all
Open

fix: Exclude desktop widgets from tile-all and cascade-all#1707
claudeaceae wants to merge 1 commit intorxhanson:mainfrom
claudeaceae:fix/exclude-desktop-widgets-from-tile-all

Conversation

@claudeaceae
Copy link

Summary

  • Filters out windows belonging to system processes (Dock, WindowManager, Notification Center) in getAllWindowElements()
  • On macOS Sonoma+, desktop widgets are rendered by the Notification Center process — excluding it prevents widgets from being tiled, cascaded, or reversed
  • This follows the same pattern already used in getWindowInfo() (line 323) which excludes Dock and WindowManager for cursor-based window detection

Details

The root cause: getAllWindowElements() extracts unique PIDs from CGWindowListCopyWindowInfo (which uses .excludeDesktopElements), then queries the Accessibility API for all windows belonging to each PID. If the Notification Center process has any visible window in the CG window list, all of its windows — including desktop widgets — are returned and subsequently included in multi-window operations.

The fix adds a process name filter before PID extraction, excluding known system processes that don't have user-tileable windows. This affects all callers of getAllWindowElements():

  • MultiWindowManager (tile-all, cascade-all, tile-active-app, cascade-active-app)
  • ReverseAllManager (reverse-all)
  • TodoManager (todo mode filtering)

Test plan

  • Verify tile-all no longer repositions desktop widgets on macOS Sonoma+
  • Verify cascade-all no longer includes desktop widgets
  • Verify reverse-all no longer includes desktop widgets
  • Verify normal application windows still tile/cascade/reverse correctly
  • Verify Stage Manager windows ("WindowManager") are excluded
  • Test with both built-in and third-party desktop widgets

Fixes #1701

🤖 Generated with Claude Code

Filter out windows belonging to Dock, WindowManager (Stage Manager), and
Notification Center (which hosts desktop widgets on macOS Sonoma+) in
getAllWindowElements(). This prevents desktop widgets from being included
in multi-window operations like tile-all, cascade-all, and reverse-all.

Fixes rxhanson#1701

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@rxhanson
Copy link
Owner

rxhanson commented Feb 9, 2026

Thanks! I'll test this out in the next day or so.

@claudeaceae
Copy link
Author

Sounds good, thanks for taking a look! Let me know if you run into any issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

'tile-all' tiles mac desktop widgets

2 participants