{"id":15055302,"url":"https://github.com/mrkai77/loop","last_synced_at":"2026-01-26T07:09:50.560Z","repository":{"id":65554883,"uuid":"592882602","full_name":"MrKai77/Loop","owner":"MrKai77","description":"Window management made elegant.","archived":false,"fork":false,"pushed_at":"2025-04-14T08:59:02.000Z","size":349594,"stargazers_count":8273,"open_issues_count":92,"forks_count":173,"subscribers_count":32,"default_branch":"develop","last_synced_at":"2025-05-13T00:07:54.040Z","etag":null,"topics":["hacktoberfest","macos","macos-app","menu","productivity","radial-menu","swift","swiftui","window-management"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MrKai77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"MrKai77"}},"created_at":"2023-01-24T18:33:33.000Z","updated_at":"2025-05-12T22:57:39.000Z","dependencies_parsed_at":"2023-09-26T17:25:01.994Z","dependency_job_id":"d9c84438-b16d-492a-83d4-47c8886ccafa","html_url":"https://github.com/MrKai77/Loop","commit_stats":{"total_commits":1087,"total_committers":16,"mean_commits":67.9375,"dds":0.406623735050598,"last_synced_commit":"8de4f76524b1113e82586fed7a3eb271c9e0acc1"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrKai77%2FLoop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrKai77%2FLoop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrKai77%2FLoop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrKai77%2FLoop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrKai77","download_url":"https://codeload.github.com/MrKai77/Loop/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253843215,"owners_count":21972873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","macos","macos-app","menu","productivity","radial-menu","swift","swiftui","window-management"],"created_at":"2024-09-24T21:40:34.309Z","updated_at":"2026-01-26T07:09:50.548Z","avatar_url":"https://github.com/MrKai77.png","language":"Swift","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"225\" height=\"225\" src=\"/assets/graphics/Classic.png\" alt=\"Logo\"\u003e\n  \u003ch1\u003e\u003cb\u003eLoop\u003c/b\u003e\u003c/h1\u003e\n  \u003cp\u003eWindow management made elegant.\u003cbr\u003e\n  \u003ca href=\"https://github.com/MrKai77/Loop#features\"\u003e\u003cstrong\u003eExplore Loop »\u003c/strong\u003e\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/MrKai77/Loop/releases/latest/download/Loop.zip\"\u003eDownload for macOS\u003c/a\u003e\u003cbr\u003e\n  \u003ci\u003e~ Compatible with macOS 13 and later. ~\u003c/i\u003e\u003c/p\u003e\n\u003c/div\u003e\n\nLoop 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.\n\n\u003e [!NOTE]\n\u003e\n\u003e Loop is constantly evolving, with new features and improvements added regularly to enhance your window management experience on macOS.\n\n\u003ch6 align=\"center\"\u003e\n  \u003cimg src=\"assets/graphics/loop_demo.gif\" alt=\"Loop Demo\"\u003e\n  \u003cbr /\u003e\u003cbr /\u003e\n  \u003ca href=\"https://discord.gg/2CZ2N6PKjq\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discord-join%20us-7289DA?logo=discord\u0026logoColor=white\u0026style=for-the-badge\u0026labelColor=23272A\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/MrKai77/Loop/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/MrKai77/Loop?label=License\u0026color=5865F2\u0026style=for-the-badge\u0026labelColor=23272A\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/MrKai77/Loop/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/MrKai77/Loop?label=Stars\u0026color=57F287\u0026style=for-the-badge\u0026labelColor=23272A\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/MrKai77/Loop/network/members\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/forks/MrKai77/Loop?label=Forks\u0026color=ED4245\u0026style=for-the-badge\u0026labelColor=23272A\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/MrKai77/Loop/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/MrKai77/Loop?label=Issues\u0026color=FEE75C\u0026style=for-the-badge\u0026labelColor=23272A\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n\u003c/h6\u003e\n\n## Features\n\n### Radial Menu\n\nThe 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.\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/658f7043-79a1-4690-83b6-a714fe6245c8\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n### Preview\n\nThe preview window enables you to see the resize action *before* committing to it.\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/5ecb3ae8-f295-406f-b968-31e539f4a098\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n### Keyboard Shortcuts\n\nLoop allows you to assign any key in tandem with the trigger key to initiate a window manipulation action.\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/d865329f-0533-4eeb-829d-9aa6159f454b\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n### Cycles\n\nLoop 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!\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/1adb1325-775d-4687-9085-71c7f775d65d\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n### Stash\n\nHide windows at the screen edge to declutter your workspace. Hover near the edge or use a keybind to access them whenever you need.\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/080ba2fb-41b3-4b39-9000-a76f2fc794ed\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n### Theming\n\n#### Radial Menu\n\nThe 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.\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/b2d3f6c8-dd68-4ac2-a30a-19f36a8fd94d\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n#### Preview\n\nAdjust the padding, corner radius, border color, and border width of the optional preview window.\n\n\u003cdiv\u003e\u003cvideo controls src=\"https://github.com/user-attachments/assets/fc107861-8125-42c2-b987-2fff554078d5\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n## Usage\n\n### Installation\n\n#### Homebrew\n\n```bash\nbrew install loop\n```\n\n#### Manual Download\n\nNavigate to the [release page](https://github.com/MrKai77/Loop/releases/latest) and download the latest `.zip` file located at the bottom, or [click me](https://github.com/MrKai77/Loop/releases/latest/download/Loop.zip).\n\n### Triggering\n\nLoop 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.\n\nTo set Caps Lock as your trigger key, you have two options:\n\n#### a. Change System Settings\n\n1. Go to System Settings → Keyboard → \"Keyboard Shortcuts...\".\n2. In the \"Modifier Keys\" tab, remap `Caps Lock (⇪) key` to `(^) Control`.\n3. Repeat this remapping process for every connected keyboard.\n4. In Loop, select the `Right Control` key as your trigger.\n\n#### b. Use an external App\n\n- [Hyperkey](https://hyperkey.app/)\n- [Karabiner Elements](https://karabiner-elements.pqrs.org/)\n\n#### c. Shell/AppleScript\n\nLoop can be controlled via shell commands or AppleScript using its URL scheme:\n\n```bash\n# Shell examples\nopen \"loop://direction/right\"     # Move window to right half\nopen \"loop://action/maximize\"     # Maximize window\nopen \"loop://screen/next\"         # Move to next screen\n\n# AppleScript examples\nosascript -e 'tell application \"Loop\" to activate'\nosascript -e 'open location \"loop://direction/left\"'\n```\n\nYou can also create custom scripts to chain multiple actions:\n\n```bash\n#!/bin/bash\n# Example: Move window right and then maximize\nopen \"loop://direction/right\"\nsleep 0.5\nopen \"loop://action/maximize\"\n```\n\nFor a complete list of available commands:\n\n```bash\nopen \"loop://list/all\"           # List all commands\nopen \"loop://list/actions\"       # List window actions\nopen \"loop://list/keybinds\"      # List custom keybinds\n```\n\n### Keyboard Shortcuts\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eCategory\u003c/th\u003e\n      \u003cth\u003eActions\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eGeneral\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eFullscreen, Maximize, Almost Maximize, Centre, MacOS Centre, Minimize, Hide\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eHalves\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eTop Half, Bottom Half, Left Half, Right Half\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eQuarters\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eTop Left Quarter, Top Right Quarter, Bottom Left Quarter, Bottom Right Quarter\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eHorizontal Thirds\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eRight Third, Right Two Thirds, Horizontal Center Third, Left Two Thirds, Left Third\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eVertical Thirds\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eTop Third, Top Two Thirds, Vertical Center Third, Bottom Two Thirds, Bottom Third\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eScreen Switching\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eNext Screen, Previous Screen, Left Screen, Right Screen, Top Screen, Bottom Screen\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eWindow Manipulation\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eLarger, 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\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eMore\u003c/strong\u003e\u003c/td\u003e\n      \u003ctd\u003eInitial Frame, Undo, Custom, Cycle\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Contributors\n\nTo see all the contributors who have played a significant role in developing Loop, visit our [Contributors](CONTRIBUTORS.md) page.\n\n### How to Contribute\n\nFor an extensive guide on how to contribute, check out the [contributing guide](CONTRIBUTING.md).\n\n## FAQ\n\n### Comparison\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003eLoop\u003c/th\u003e\n      \u003cth\u003emacOS\u0026nbsp;15+\u003c/th\u003e\n      \u003cth\u003eRectangle\u0026nbsp;Pro\u003c/th\u003e\n      \u003cth\u003eRectangle\u003c/th\u003e\n      \u003cth\u003eMagnet\u003c/th\u003e\n      \u003cth\u003eMoom\u003c/th\u003e\n      \u003cth\u003eSwish\u003c/th\u003e\n      \u003cth\u003eBetterTouchTool\u003c/th\u003e\n      \u003cth\u003eMultitouch\u003c/th\u003e\n      \u003cth\u003eHammerspoon\u003c/th\u003e\n      \u003cth\u003eYabai\u003c/th\u003e\n      \u003cth\u003eAmethyst\u003c/th\u003e\n      \u003cth\u003eAeroSpace\u003c/th\u003e\n      \u003cth\u003e1Piece\u003c/th\u003e\n      \u003cth\u003eWins\u003c/th\u003e\n      \u003cth\u003eMacsyZones\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003ePrice\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003e$9.99\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003e$4.99\u003c/td\u003e\n      \u003ctd\u003e$15.00\u003c/td\u003e\n      \u003ctd\u003e$16.00\u003c/td\u003e\n      \u003ctd\u003e$14.00\u003c/td\u003e\n      \u003ctd\u003e$15.99\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n      \u003ctd\u003e$13.99\u003c/td\u003e\n      \u003ctd\u003eFree\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eOpen\u0026nbsp;Source\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eCustom\u0026nbsp;Frames\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003ePreview\u0026nbsp;Window\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eTheming\u0026nbsp;Options\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModifier\u0026nbsp;+\u0026nbsp;Mouse\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModifier\u0026nbsp;+\u0026nbsp;Arrows\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eModifier\u0026nbsp;+\u0026nbsp;Trackpad\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eTrackpad\u0026nbsp;Gestures\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003ePadding\u0026nbsp;/\u0026nbsp;Margins\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eStashed\u0026nbsp;Windows\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eSave\u0026nbsp;Workspace\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eRestore\u0026nbsp;Initial\u0026nbsp;Frame\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003ePin\u0026nbsp;Windows\u0026nbsp;On\u0026nbsp;Top\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eSnap\u0026nbsp;Windows\u0026nbsp;via\u0026nbsp;Drag\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eResize\u0026nbsp;Adjacent\u0026nbsp;Windows\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eAction\u0026nbsp;Sequences\u0026nbsp;(Cycles)\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eMove\u0026nbsp;Windows\u0026nbsp;Across\u0026nbsp;Screens\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eSwitch\u0026nbsp;Focus\u0026nbsp;Between\u0026nbsp;Windows\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eScripting\u0026nbsp;(URL\u0026nbsp;/\u0026nbsp;AppleScript\u0026nbsp;or\u0026nbsp;other)\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e✅\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n      \u003ctd\u003e❌\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003e Information was gathered from each app’s official website and other online sources and may be outdated.\n\u003e If you notice any inaccuracies, please open an issue or contact the maintainers.\n\u003e Special thanks to the [Definitive MacApp Comparisons](https://docs.google.com/spreadsheets/d/1HtJN4oQ6oBDFmFaF4Qeq5vCGEU1g-KB1DEz5Sp_OwXo/edit?gid=456166567#gid=456166567) spreadsheet.\n\n### License\n\nThis project is licensed under the [GNU GPLv3 license](LICENSE).\n","funding_links":["https://github.com/sponsors/MrKai77"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrkai77%2Floop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrkai77%2Floop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrkai77%2Floop/lists"}