Show HN: SpinWin – A macOS menu bar app to visually rotate or spin any window

https://news.ycombinator.com/rss Hits: 3
Summary

A macOS menubar utility that visually rotates a selected window by any angle (90° increments, arbitrary angles, or a continuous spin). macOS has no public API to rotate another app's window. Real rotation would require private SkyLight calls (CGSSetWindowTransform) with System Integrity Protection disabled — not worth it. Instead, SpinWin fakes it: Hide the selected window off-screen via the Accessibility API. It keeps rendering there, so it can still be captured. Capture its contents continuously with ScreenCaptureKit (SCStream + desktopIndependentWindow filter) — this grabs only that window's buffer, so the overlay never mirrors itself. Draw the frames in a transparent, borderless overlay window placed where the original was, rotated with a CALayer transform. Because it's a layer transform, any angle works — the overlay is sized to the rotated content's bounding box so nothing clips, and a diagonal-sized square is used while spinning. The easiest way to get SpinWin is the latest release — the download is signed with a Developer ID and notarized by Apple, so it launches without Gatekeeper warnings. Or build it yourself: ./scripts/build-app.sh # builds SpinWin.app (release) open SpinWin.app # grant Screen Recording + Accessibility For quick iteration during development: swift build && swift run SpinWin Left-click the menubar icon to start: choose a rotation in the bottom options bar (a preset angle, a spin speed + direction, or free rotation), then click the window you want. Drag the overlay to reposition it; drag its handle to rotate freely. Press Esc on the overlay to stop and restore the window. Right-click (or Control-click) the icon for the menu: active rotations (with per-window angle/spin controls), Stop all, and Quit. Screen Recording — to capture the window contents. Accessibility — to move the source window off-screen and restore it. The overlay is a live picture, not interactive. You can drag and rotate it, but clicks and keystrokes are not sent to the re...

First seen: 2026-07-26 00:50

Last seen: 2026-07-26 02:51