The double-rotate on every Hyprland start existed to fix monitor scale
getting corrupted by rotation. Verified live (Hyprland 0.55.4): scale
stays exactly pinned across a transform change as long as it's set
explicitly (monitors.lua already does scale=1.0, not "auto"), so the
workaround is no longer needed upstream.
It was also a source of a real race: unified-rotate.sh reads current
transform via `hyprctl monitors -j`, and the fixed 0.3s gap between the
two invocations isn't guaranteed long enough for the first rotate to
commit before the second reads state — especially with a dozen other
autostart commands firing concurrently in the same block. A lost race
leaves the monitor (and touchscreen, which unified-rotate.sh also
retargets) transform mismatched after boot. Root-caused this while
investigating why a QEMU test VM's monitor stayed stuck at transform:1
after every fresh boot.
unified-rotate.sh itself is untouched — still used by the manual
rotate buttons on the touch bar.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TLz6HWsXCwzQ97LrLt2em6