Skip to content

feat(dock): push neighboring icons apart on magnification - #3681

Merged
bbedward merged 4 commits into
duxlabs-dev:masterfrom
hthienloc:feat/dock-magnification-expand
Oct 4, 2026
Merged

bbedward merged 4 commits into
duxlabs-dev:masterfrom
hthienloc:feat/dock-magnification-expand

Conversation

@hthienloc

Copy link
Copy Markdown
Member

What

  • Adds a "Push neighboring icons" toggle (magnificationExpand) under Dock > Appearance > Magnification. The toggle is only shown when magnification is enabled.
  • When enabled, neighboring icons are pushed aside when hovering over an icon, and the dock temporarily expands to make room for them.
  • Defaults to false, keeping the current behavior unchanged.

Why

  • Magnification currently only scales up icons without affecting the layout, which can cause enlarged icons to overlap and lead to accidental clicks.
recording_2026-10-04_10-38-40.mp4

@hthienloc

Copy link
Copy Markdown
Member Author

/claude review

Comment thread quickshell/Modules/Dock/DockBody.qml
@claude

claude Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Claude review

One sizing bug to fix before merge.

  • On hover the expansion is added after the availablePrimary clamp, so a taskbar-mode or full-length dock grows past the screen edge, and in taskbar mode it feeds back through flexible spacers. quickshell/Modules/Dock/DockBody.qml:775
    Checked: SurfaceStrip layout/scale math and rest-origin latching, DockBody sizing and hover area, settings toggle with I18n context, DockConfig default, search index. Model: claude-opus-5-5.

@hthienloc

Copy link
Copy Markdown
Member Author

/claude review

Comment thread quickshell/Modules/SurfaceWidgets/SurfaceStrip.qml
@claude

claude Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Claude review

The earlier taskbar and clamp issue is fixed. One edge case is left in how the cap is applied.

  • expansionLimit caps the background and contentLength but not the icon positions, so near-full or overflowing docks push icons past the background and the screen edge. quickshell/Modules/SurfaceWidgets/SurfaceStrip.qml:209
    Checked: expansionLimit/fillAvailable fix for the previous finding, scale/position feedback (unalignedPositions, latched rest origin), alignOffset dependencies, DockBody sizing and hover area, settings toggle I18n, DockConfig default, search index. Model: claude-opus-5-5.

@hthienloc

Copy link
Copy Markdown
Member Author

/claude review

Comment thread quickshell/Modules/SurfaceWidgets/SurfaceStrip.qml Outdated
@claude

claude Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Claude review

Both earlier findings are fixed. The new ratio adds one binding-loop risk.

  • layoutPositions reads expansionRatio even when no scales are passed, so unalignedPositions → expansionRatio → magnificationScales forms a cycle that re-runs on hover while the cap is active. quickshell/Modules/SurfaceWidgets/SurfaceStrip.qml:66
    Checked: expansionRatio fix for the capped-positions finding, taskbar/clamp fix, scale/position dependency graph (alignOffset bypass, latched rest origin), DockBody sizing, settings toggle I18n, DockConfig default, search index. Model: claude-opus-5-5.

@hthienloc

Copy link
Copy Markdown
Member Author

/claude review

@claude

claude Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Claude review

The earlier binding-loop finding is fixed. No issues found.
Checked: layoutPositions now reads expansionRatio only when scales are passed (the unalignedPositions cycle is gone); the earlier cap, taskbar, and clamp fixes are still in place (expansionLimit, !fillAvailable, restLength in targetPrimary); I also checked the latched rest origin, the DockBody sizing and spring bypass, the settings toggle I18n, the DockConfig default, AppsDock option passthrough, and the search index. Model: claude-opus-5-5.

@bbedward
bbedward merged commit 4ca2a8e into duxlabs-dev:master Oct 4, 2026
2 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