Zurück zum Ranking

MrKai77/Loop

Swift

Window management made elegant.

macosswiftwindow-managementswiftuiradial-menumacos-appmenuproductivityhacktoberfest
Sterne-Wachstum
Sterne
7.8k
Forks
158
Wochenwachstum
Issues
84
2k4k6k
Jan. 2023Feb. 2024März 2025Mai 2026
README
Logo

Loop

Window management made elegant.
Explore Loop »

Download for macOS
~ Compatible with macOS 13 and later. ~

Loop is a macOS app that simplifies window management for you. You can effortlessly choose your window direction using a radial menu triggered by a simple key press, and customize it according to your preferences with personalized colors and settings. You can easily move, resize, and arrange your windows with just a few clicks, saving you valuable time and energy.

[!NOTE]

Loop is constantly evolving, with new features and improvements added regularly to enhance your window management experience on macOS.

Loop Demo


Features

Radial Menu

The Radial Menu allows you to manipulate windows using your mouse/trackpad. Hold down the trigger key and move your cursor in the desired direction to move and resize the window.

Preview

The preview window enables you to see the resize action before committing to it.

Keyboard Shortcuts

Loop allows you to assign any key in tandem with the trigger key to initiate a window manipulation action.

Cycles

Loop can become very powerful when paired with cycles. These enable you to perform multiple window manipulations in quick succession by pressing the same key combination repeatedly, or by left-clicking repeatedly!

Theming

Radial Menu

The radial menu is fully customizable in terms of width, shape, and color. It is also completely optional and can be disabled. Both the cursor interaction and the radial menu itself are independently toggleable.

Preview

Adjust the padding, corner radius, border color, and border width of the optional preview window.

Usage

Installation

Homebrew

brew install loop

Manual Download

Navigate to the release page and download the latest .zip file located at the bottom, or click me.

Triggering

Loop uses a trigger key to function. This key must be held down or pressed to activate certain features within Loop. To access the radial menu, hold down the trigger key and move the cursor in the desired direction. Users who prefer keyboard shortcuts can assign a key to work with the trigger key, activating specific actions. The trigger key can be set in the "Behavior" tab of the "Settings" section. The trigger key can consist of one or multiple keys.

To set Caps Lock as your trigger key, you have two options:

a. Change System Settings

  1. Go to System Settings → Keyboard → "Keyboard Shortcuts...".
  2. In the "Modifier Keys" tab, remap Caps Lock (⇪) key to (^) Control.
  3. Repeat this remapping process for every connected keyboard.
  4. In Loop, select the Right Control key as your trigger.

b. Use an external App

Keyboard Shortcuts

Category Actions
General Fullscreen, Maximize, Almost Maximize, Centre, MacOS Centre, Minimize, Hide
Halves Top Half, Bottom Half, Left Half, Right Half
Quarters Top Left Quarter, Top Right Quarter, Bottom Left Quarter, Bottom Right Quarter
Horizontal Thirds Right Third, Right Two Thirds, Horizontal Center Third, Left Two Thirds, Left Third
Vertical Thirds Top Third, Top Two Thirds, Vertical Center Third, Bottom Two Thirds, Bottom Third
Screen Switching Next Screen, Previous Screen
Window Manipulation Larger, Smaller, Shrink Top, Shrink Bottom, Shrink Right, Shrink Left, Grow Top, Grow Bottom, Grow Right, Grow Left, Move Up, Move Down, Move Right, Move Left
More Initial Frame, Undo, Custom, Cycle

Contributors

To see all the contributors who have played a significant role in developing Loop, visit our Contributors page.

How to Contribute

For an extensive guide on how to contribute, check out the contributing guide.

FAQ

Comparison

App NameLoopRectangle  ProHammerspoon1PieceBetterTouchToolSwishRectangleMultitouchEmmetappAmethystWindow  FusionTilesMagnetMoomWinsYabaiMacOS  15
PriceFree$9.99FreeFree$22$16Free$15.99$19Free$12Free$4.99$10$13.99FreeFree
Preview$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$
Restore Size$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Open Source$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Edge Snapping$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$
Set Custom Size$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Save Workspace$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Percentage Units$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Modifier + Mouse$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$
Modifier + Arrows$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Maximize Window$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$
Multi-Screen Move$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Touchpad Gestures$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$
Modifier + Touchpad$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$
Margin / Grid Padding$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$
Pin/Unpin window on top$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$
Resize Adjacent Windows$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$
Open  Window  On  Set  Screen$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{red}{\textsf{✗}}$$\color{green}{\textsf{✓}}$$\color{red}{\textsf{✗}}$

License

This project is licensed under the GNU GPLv3 license.

Ähnliche Repositories
flutter/flutter

Flutter makes it easy and fast to build beautiful apps for mobile and beyond

DartBSD 3-Clause "New" or "Revised" Licensemobileandroid
flutter.dev
177.9k30.7k
jlevy/the-art-of-command-line

Master the command line, in one page

bashunix
161.9k14.8k
rustdesk/rustdesk

An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.

Rustcrates.ioGNU Affero General Public License v3.0remote-controlremote-desktop
rustdesk.com
118.6k18.1k
nodejs/node

Node.js JavaScript runtime ✨🐢🚀✨

JavaScriptnpmOthernodejsjavascript
nodejs.org
118.4k36.2k
jaywcjlove/awesome-mac

 This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

SwiftCreative Commons Zero v1.0 Universalmacossoftware
git.io/macx
108.4k8.2k
alacritty/alacritty

A cross-platform, OpenGL terminal emulator.

Rustcrates.ioApache License 2.0terminal-emulatorsopengl
alacritty.org
65k3.5k
warpdotdev/warp

Warp is an agentic development environment, born out of the terminal.

Rustcrates.ioGNU Affero General Public License v3.0rustlinux
warp.dev
63.5k5.3k
tldr-pages/tldr

Collaborative cheatsheets for console commands 📚.

MarkdownOthershellman-page
tldr.sh
63.2k5.3k
atom/atom

:atom: The hackable text editor

JavaScriptnpmMIT Licenseatomeditor
atom.io
60.8k17.2k
tw93/Pake

🤱🏻 Turn any webpage into a desktop app with one command.

Rustcrates.ioGNU General Public License v3.0rusttauri
60.1k12.2k
tw93/Mole

🐹 Clean, uninstall, analyze, optimize, and monitor your Mac from the terminal.

ShellGNU General Public License v3.0cleancleaner
mole.fit
59.5k2.1k
FiloSottile/mkcert

A simple zero-config tool to make locally trusted development certificates with any names you'd like.

GoGo ModulesBSD 3-Clause "New" or "Revised" Licensehttpstls
mkcert.dev
59.4k3.1k