finds.dev← search

// the find

mrkai77/Loop

★ 10,889 · Swift · GPL-3.0 · updated May 2026

Window management made elegant.

Loop is a free, open-source macOS window manager that uses a radial menu (triggered by a held modifier key + mouse movement) to snap windows to common layouts. It targets macOS 13+ users who want something more visually interactive than Rectangle-style keyboard shortcuts but lighter than a full tiling WM like Yabai. Written in SwiftUI with Accessibility API under the hood.

- The radial menu interaction model is genuinely novel for this space — direction-based gesture input via mouse is faster than remembering a dozen key combos, and the preview-before-commit feature reduces mis-fires.

- URL scheme scripting (loop://direction/right, loop://action/maximize) and AppleScript support make it automation-friendly, which most free window managers skip entirely.

- Cycles feature (repeat the same keybind to cycle through multiple layouts) is genuinely useful and not common in free tools — it's the kind of thing that replaces multiple separate bindings.

- Active maintenance with CI, SwiftFormat enforcement, Crowdin localization pipeline, and structured issue templates — this is well above average housekeeping for a solo/small-team open source app.

- Uses private SkyLight/SLS APIs (SLSWindowTags.swift, SkyLightSymbolLoader.swift) — these are symbol-loaded at runtime, meaning any macOS update can silently break functionality with no compile-time warning.

- No workspace save/restore: if you have a specific multi-window arrangement you want to return to after a reboot, you're out of luck. Hammerspoon and even some free alternatives handle this.

- No resize-adjacent-windows support — splitting the screen between two apps still requires manually resizing both, which is a meaningful gap compared to macOS 15's native Stage Manager behavior or tools like Moom.

- No trackpad gesture support (standalone, without holding a modifier) — if your workflow is gesture-heavy, you'll still need BetterTouchTool or Swish alongside Loop, which somewhat defeats the point.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →