site: review — Loop radial window manager (graduates from find)

4-slide carousel (radial menu, preview, cycles, stash) sourced from the
project's GitHub assets/graphics directory and re-encoded at 1280p.
This commit is contained in:
2026-05-09 11:13:14 -04:00
parent c998a88934
commit 60d6a676c5
8 changed files with 63 additions and 0 deletions
+7
View File
@@ -865,3 +865,10 @@ Reader's Digest Jokes / TidBITS / Kevin Kelly thetechnium: not scanned this run
- **Put This On → marketplace-only output mostly**. Their "Inside Track" weekly emails are eBay-link members-only digests. Public posts are infrequent (J. Press March 5 was the last substantive one). Consider downgrading from `weekly` to `as-needed` cadence and only checking when a non-Inside-Track post is referenced elsewhere. - **Put This On → marketplace-only output mostly**. Their "Inside Track" weekly emails are eBay-link members-only digests. Public posts are infrequent (J. Press March 5 was the last substantive one). Consider downgrading from `weekly` to `as-needed` cadence and only checking when a non-Inside-Track post is referenced elsewhere.
- **Kikkerland Amazon-storefront verification**: still blocked by CAPTCHA. The 2026-05-06 evening note's two unblocks (pre-cached ASIN list, brand-store landing page) remain unimplemented. Until one lands, Kikkerland is functionally an unproductive source for finds that need the `gift` Amazon-default tag rule applied. - **Kikkerland Amazon-storefront verification**: still blocked by CAPTCHA. The 2026-05-06 evening note's two unblocks (pre-cached ASIN list, brand-store landing page) remain unimplemented. Until one lands, Kikkerland is functionally an unproductive source for finds that need the `gift` Amazon-default tag rule applied.
- **Snow Peak collection JSON parsing**: the 2026-05-06 morning post-run note about migrating MoMA + Snow Peak to JSON-endpoint fetches finally got applied this run for both. Snow Peak in particular has a much richer pool than the homepage suggested — the 28-product New Arrivals collection is a steady source of distinctive titanium kit. Worth formalizing the regex-on-product-handle pattern in the skill. - **Snow Peak collection JSON parsing**: the 2026-05-06 morning post-run note about migrating MoMA + Snow Peak to JSON-endpoint fetches finally got applied this run for both. Snow Peak in particular has a much richer pool than the homepage suggested — the 28-product New Arrivals collection is a steady source of distinctive titanium kit. Worth formalizing the regex-on-product-handle pattern in the skill.
## 2026-05-09 — review: loop-radial-window-manager
Graduated from find captured 2026-05-09, source: r/macapps.
Hero + carousel: 4-slide carousel matching the homerow/dockdoor pattern. Pulled `Radial Menu.mp4`, `Preview.mp4`, `Cycles.mp4`, and `Stash.mp4` from `MrKai77/Loop` GitHub develop branch (`assets/graphics/`). Sources were 3680×2304@60 retina screen recordings, 4-6 MB each — re-encoded with ffmpeg (`scale=1280:-2`, libx264 CRF 23, yuv420p, faststart, audio stripped). Final sizes: 1.3 MB / 2.9 MB / 1.2 MB / 182 KB. Hero (slide 1, radial-menu.mp4) registered in `src/lib/hero.ts`.
Category: `interface` (existing — same bucket as alcove, alt-tab, dockdoor, monocle).
Pattern note: **GitHub `assets/graphics/` directories are an underused hero source for open-source mac apps**. Listed via `api.github.com/repos/.../contents/assets/graphics`, downloaded with curl. Source quality (retina captures) means re-encoding is mandatory or the page weighs 25+ MB; standard recipe is `scale=1280:-2` + CRF 23 + strip audio.
@@ -9,6 +9,7 @@ topics:
- macos-apps - macos-apps
tags: [window-management, indie, open-source, keyboard] tags: [window-management, indie, open-source, keyboard]
description: "Hold a key, flick the cursor in a direction, and Loop snaps the active window. A radial menu instead of a hotkey grid." description: "Hold a key, flick the cursor in a direction, and Loop snaps the active window. A radial menu instead of a hotkey grid."
promotedTo: loop-radial-window-manager
--- ---
Loop replaces the Rectangle/Magnet hotkey grid with a radial menu: hold the trigger key, move the cursor toward the half/quarter/edge you want, release. The preview window shows the resize before commit, so muscle memory builds without overshoot. Free, GPLv3, macOS 13+. Loop replaces the Rectangle/Magnet hotkey grid with a radial menu: hold the trigger key, move the cursor toward the half/quarter/edge you want, release. The preview window shows the resize before commit, so muscle memory builds without overshoot. Free, GPLv3, macOS 13+.
@@ -0,0 +1,53 @@
---
name: Loop
subtitle: Window snapping by gesture, not by hotkey
date: 2026-05-09
category: interface
tags: [macos, window-management, indie, open-source, keyboard]
description: "A free, open-source macOS window manager that swaps the Rectangle/Magnet hotkey grid for a radial menu — hold a key, flick the cursor toward an edge, release."
link: https://github.com/MrKai77/Loop
linkText: github.com/MrKai77/Loop
source: "r/macapps"
fromFind: loop-radial-window-manager
---
import slide1 from './radial-menu.mp4';
import slide2 from './preview.mp4';
import slide3 from './cycles.mp4';
import slide4 from './stash.mp4';
<div class="carousel">
<figure id="s1">
<video src={slide1} autoplay loop muted playsinline />
<figcaption>Hold the trigger key and flick the cursor toward a half, quarter, or edge — release to commit.</figcaption>
</figure>
<figure id="s2">
<video src={slide2} autoplay loop muted playsinline />
<figcaption>The live preview outlines the destination frame as you aim, so a wrong flick can be aborted before the resize fires.</figcaption>
</figure>
<figure id="s3">
<video src={slide3} autoplay loop muted playsinline />
<figcaption>Cycles: re-flick in the same direction to step through halves, thirds, and quarters without picking new keys.</figcaption>
</figure>
<figure id="s4">
<video src={slide4} autoplay loop muted playsinline />
<figcaption>Stash: tuck a window to a screen edge for quick recall later.</figcaption>
</figure>
</div>
<nav class="carousel-nav" aria-label="Carousel navigation">
<a href="#s1">1</a>
<a href="#s2">2</a>
<a href="#s3">3</a>
<a href="#s4">4</a>
</nav>
> A free, open-source macOS window manager that replaces the Rectangle/Magnet hotkey grid with a radial menu. Hold a trigger key, move the cursor toward the half, quarter, or edge you want, release to commit.
Hold the trigger key and Loop pops a translucent radial menu over the active window. Move the cursor toward a half, quarter, or edge; release to commit. A live preview outlines the destination frame as you aim, so a wrong flick can be corrected before the resize fires.
Rectangle and Magnet ask you to memorize a grid: a chord per position, more chords as you add halves, thirds, and quarters. The chord is symbolic — you have to remember which modifier you mapped to "left third." Loop's gesture *is* the position. A "cycles" feature lets you re-flick in the same direction to step through halves → thirds → quarters without picking new keys for each.
The radial menu, preview, and theming are tunable (width, shape, color, padding); a stash gesture tucks a window to a screen edge for quick recall. Per-app behavior and keyboard shortcuts are still there for people who want both. GPLv3, Swift, signed and notarized, macOS 13+.
The trade-off versus a grid-based manager is a day or two of muscle-memory rebuild — flicking is fast once it's in your hands, but coming from a decade of `⌃⌥←` makes the first afternoon feel slower. Free, with no nags or telemetry.
+2
View File
@@ -24,6 +24,7 @@ import cotypist from '../content/reviews/cotypist/hero.mp4';
import dockdoor from '../content/reviews/dockdoor/alttab.mp4'; import dockdoor from '../content/reviews/dockdoor/alttab.mp4';
import fluxMarkdown from '../content/reviews/flux-markdown/demo.mp4'; import fluxMarkdown from '../content/reviews/flux-markdown/demo.mp4';
import homerow from '../content/reviews/homerow/overlay.mp4'; import homerow from '../content/reviews/homerow/overlay.mp4';
import loop from '../content/reviews/loop-radial-window-manager/radial-menu.mp4';
import monocle from '../content/reviews/monocle/spotlight.mp4'; import monocle from '../content/reviews/monocle/spotlight.mp4';
import shottr from '../content/reviews/shottr/text-erase.mp4'; import shottr from '../content/reviews/shottr/text-erase.mp4';
import typewhisper from '../content/reviews/typewhisper/demo.mp4'; import typewhisper from '../content/reviews/typewhisper/demo.mp4';
@@ -56,6 +57,7 @@ export const heroes: Record<string, Hero | undefined> = {
dockdoor: { kind: 'video', src: dockdoor }, dockdoor: { kind: 'video', src: dockdoor },
'flux-markdown': { kind: 'video', src: fluxMarkdown }, 'flux-markdown': { kind: 'video', src: fluxMarkdown },
homerow: { kind: 'video', src: homerow }, homerow: { kind: 'video', src: homerow },
'loop-radial-window-manager': { kind: 'video', src: loop },
monocle: { kind: 'video', src: monocle }, monocle: { kind: 'video', src: monocle },
shottr: { kind: 'video', src: shottr }, shottr: { kind: 'video', src: shottr },
typewhisper: { kind: 'video', src: typewhisper }, typewhisper: { kind: 'video', src: typewhisper },