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:
@@ -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+.
|
||||||
|
|||||||
Binary file not shown.
@@ -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.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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 },
|
||||||
|
|||||||
Reference in New Issue
Block a user