Skip to content

Fix/per monitor isolation - #315

Open
LavaTiger99 wants to merge 2 commits into
dsheeler:mainfrom
LavaTiger99:fix/per-monitor-isolation
Open

LavaTiger99 wants to merge 2 commits into
dsheeler:mainfrom
LavaTiger99:fix/per-monitor-isolation

Conversation

@LavaTiger99

@LavaTiger99 LavaTiger99 commented Aug 26, 2026 •

Copy link
Copy Markdown

Keep inactive monitors visible during per-monitor switching

Summary

The existing Current Monitor setting filters the window-switcher candidates, but the switcher still hides window actors and draws its background across every monitor. On multi-monitor systems this makes an inactive monitor look like it entered Overview, interrupting visible video or other content.

This change adds an opt-in Leave Other Monitors Unaffected sub-setting under Windows → Current Monitor. When enabled, it:

  • captures one active monitor for the entire switcher session;
  • limits hidden window actors to that monitor and restores only actors hidden by this switcher;
  • clips the wallpaper and shade group to that monitor;
  • creates background actors only for that monitor; and
  • skips off-monitor Coverflow and Timeline preview clones, preventing flashes during opening and closing animations.

The new setting defaults to off, preserving existing behavior unless explicitly enabled.

Implementation notes

The active monitor is captured before filtering and passed into the switcher so moving the pointer while the switcher starts cannot cause the candidate list and UI monitor to disagree.

Hidden actors are tracked explicitly instead of re-showing every actor on the workspace during teardown. Destroyed actors are removed from that collection before restoration.

Passing a null monitor into background initialization retains the legacy all-monitor path. Passing the captured monitor clips the full-stage background group while leaving BackgroundManager actors in stage coordinates.

Validation

  • make build
  • glib-compile-schemas --strict --dry-run schemas
  • node --check on changed JavaScript files
  • ESLint: zero errors (the repository's existing warnings remain)
  • Initial manual testing on GNOME Shell 50.4 confirmed that a video/window on the inactive monitor remains visible while switching on the pointer's monitor

@dsheeler

Copy link
Copy Markdown
Owner

Hey this is a requested feature. I will look this over soon. Thank you!

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.

2 participants