Skip to content

Fix: Suppress active-hint flash on new auto-tiled windows - #111

Merged
oliwebd merged 1 commit into
oliwebd:mainfrom
benleppke:fix-active-hint-behavior
Oct 12, 2026
Merged

oliwebd merged 1 commit into
oliwebd:mainfrom
benleppke:fix-active-hint-behavior

Conversation

@benleppke

@benleppke benleppke commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Opening a new auto-tiled window briefly flashes the active hint at the window's initial position before it moves to its final auto-tiled position.

Screencast.From.2026-10-11.09-04-07.mp4
Screenshot from Screencast From 2026-10-11 09-04-07 mp4

This behavior is very brief (a few ms), but you can see that the active hint border displays on the windows pre-tiled position. This can be a bit visually distracting and can shift attention to the wrong position on the screen.

Fix

Defer showing the hint until the first tile pass starts. To do that we need to:

  • Stop hide_border() from cancelling the post-tile settle timer (focus bookkeeping hides every window's border and would otherwise disarm the guard). The timer is still cleaned up in destroy() and replaced by the next mark_border_settling().
  • Re-arm the settle on geometry changes and wait while the frame rect is still the pre-tile one, so the hint only appears at the final tiled geometry.
Screencast.From.2026-10-11.09-41-03.mp4

Now the active hint is only displayed once the window is placed in its final auto-tiled position. Generally this is a bit smoother looking and avoids briefly shifting the users attention away from the real position of the active window.

Additional considerations

Initially I tried a simpler fix and just deferred the initial show (and kept the 120ms settle timer armed). That worked on my workstation but when testing on a slower virtual machine the behavior was inconsistent. The 120ms timer can expire before Mutter has reflected the position so the hint is sometimes still drawn at the old centered location:

screencast-failed-fix.mp4

Here you can see it still fails most of the time on this vm which takes a bit of time to open and position the new windows.

Prevent the active hint from flashing at the initial centered position
before a new auto-tiled window moves to its tile.

- Defer showing borders until the first tile pass starts.
- Prevent `hide_border()` from cancelling the post-tile settle timer.
- Re-arm the settle timer on geometry changes while the window remains at its pre-tile rect.
@benleppke benleppke changed the title fix: suppress active-hint flash on new auto-tiled windows Fix: suppress active-hint flash on new auto-tiled windows Oct 11, 2026
@benleppke
benleppke marked this pull request as ready for review October 11, 2026 15:36
@benleppke benleppke changed the title Fix: suppress active-hint flash on new auto-tiled windows Fix: Suppress active-hint flash on new auto-tiled windows Oct 11, 2026
@oliwebd
oliwebd merged commit 30de81d into oliwebd:main Oct 12, 2026
4 checks passed
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