Summary
layout.gaps = 0: tmux-style lines between tiles, unchanged.layout.gaps > 0: every tile owns a full border (border.width,border.active/border.inactive), even alone.- New
border.radius(0–64, default 0, reloadable): rounds floats always and tiles with gaps; fullscreen, popups and layers stay square. - Rounded corners are done in the compose shader with an SDF coverage mask (flagRounded / flagRing); square windows pay one branch. The border is one ring draw.
- Rounded windows are never opaque occluders, direct-scanned out or put on overlay planes.
- README no longer rules out rounded corners; docs/config.md and examples/config list
border.radius.
Checks
make check, make race, make mocks-check, staticcheck, make spv-check; headless e2e with gaps 8 / radius 10 (borders, AA corner, overview) and gaps 0 (tmux line unchanged).
Not verified
Real DRM direct scanout on hardware.