Replaces the focus pulse with a focus flash: a thin inner border that marks the entity an action changed, then fades quickly.
Levels
- Window: focus/move window up/down, consume/expel, toggle floating, overview exit, tile drop, un-stash.
- Column: focus/move column left/right, column swipe landing.
- Output: focus-monitor-, move-workspace-to-monitor- (destination output).
- No flash: workspace switch (including edge fallthrough), mouse focus, fullscreen/maximize/width, new windows, activation, unlock.
150 ms settle, waits for the layout to settle, 1 s cooldown per target, cancelled by overview/fullscreen/hidden target, off when animations are off or the session is locked.
Config
focus.flash, focus.flash-width (1-8), focus.flash-opacity (0.1-1), focus.flash-duration (50ms-1s), focus.flash-color (empty = border.active). focus.animation, focus.effect, focus.strength are removed.
Rendering
Vulkan draws 4 inner-edge fills; damage is limited to the flash rect; direct scanout and overlays are disabled while a flash is visible. The compose shaders no longer carry the pulse lift.
Checks
make check, make race, make mocks-check, staticcheck, make spv-check. Headless e2e on 2 outputs: 10/10 cases pass (flash visible then gone; no flash on workspace switch, edge switch, fullscreen; overview cancels a running flash).