aboutsummaryrefslogtreecommitdiffstats
path: root/window-switcher/test_expose.js
AgeCommit message (Collapse)AuthorFilesLines
5 dayswindow-switcher: animate, respace and label the expose, add arrow keysDanilo M.1-1/+12
Closing a window from the expose now glides the rest into their new rects instead of jumping. The Repeater's plain array model rebuilt every card on any change, leaving nothing to animate; ScriptModel diffs by identity, so only the closed card goes. The Behaviors stay off until the fade-in settles, or every card would fly in from the corner on open. The scatter keeps its centre weighting but spaces windows further apart (GAP 60 -> 200 real px) and may fill 95% of the screen rather than 92%. Measured with node at 7 windows: about 45px on screen between cards. The bottom 28px are reserved so the lowest card's name stays on screen. Each card shows the app's desktop-entry name below its preview, falling back to the app id, and the app icon moved to a larger overlay in the preview's bottom-left corner; the hover title starts right of it. Arrow keys select a card and Enter focuses it. The scatter has no grid, so Expose.step picks the nearest centre on the arrow's side with sideways drift counted double, and the first press picks the top-left card; test_expose.js covers it. The selection is held as the window, not an index, so a close that shifts the list does not move it, and hovering selects too, so pointer and keys never show two highlights. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 daysfeat(window-switcher): the expose scatter layoutDanilo M.1-0/+59
layout() seeds windows on a golden-angle spiral, most recent at the centre, pushes overlapping pairs apart along the axis that costs less screen, and fits the result with one scale so sizes stay relative. The spec's first seed, the windows' real positions, was prototyped and dropped: every window on this desk fills its monitor, so they started in one pile, and pushing a pile apart made a line that still overlapped after 300 passes and filled 8 to 15% of the screen. The spiral converged in 1 to 55 passes. Comparing overlaps in raw pixels stacked wide windows into a column, which is why the axis choice divides by the screen's width and height. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>