diff --git a/settings/quickshell.nix b/settings/quickshell.nix index 7f913be..adf538c 100644 --- a/settings/quickshell.nix +++ b/settings/quickshell.nix @@ -514,12 +514,13 @@ in } } - // Frame right-column inner border — always full: when a panel - // is merged, its own right-edge stroke sits exactly on this - // line, so they coincide instead of needing a gap. + // Frame right-column inner border — opens up over a merged + // panel (a border must not slice an open junction) and + // resumes exactly at the panel's bottom flare. Driven by the + // melt progress so it follows the morph smoothly. Rectangle { x: bar.width - Theme.frameWidth - Theme.borderWidth / 2 - y: 38 + y: 38 + chrome.height * chrome.mergeP width: Theme.borderWidth height: Math.max(0, bar.height - Theme.frameWidth - 8 - y) color: Theme.base03 @@ -1267,6 +1268,16 @@ in control1X: pshape.xr - pshape.ear + 4.42; control1Y: pshape.height control2X: pshape.xr; control2Y: pshape.bey + pshape.bck } + } + + // Right edge + ear stroke, fading out with the melt — a + // merged junction must not be sliced by its own border. + ShapePath { + fillColor: "transparent" + strokeColor: Qt.alpha(Theme.base03, 1 - pshape.merge) + strokeWidth: Theme.borderWidth + capStyle: ShapePath.FlatCap + startX: pshape.xr; startY: pshape.bey PathLine { x: pshape.xr; y: Math.min(pshape.re, pshape.height) } PathCubic { x: pshape.xr + pshape.re; y: 0