<div align="center">
<img width="225" height="225" src="https://yellow-cdn.veclightyear.com/835a84d5/57d3c2e9-d925-43b6-895d-a6bc8f864131.png" alt="标志">
<h1><b>Loop</b></h1>
<p>优雅的窗口管理工具。<br>
<a href="https://github.com/MrKai77/Loop#features"><strong>探索 Loop »</strong></a><br><br>
<a href="https://github.com/MrKai77/Loop/releases/latest/download/Loop.zip">下载 macOS 版本</a><br>
<i>~ 兼容 macOS 13 及更高版本 ~</i></p>
</div>
Loop 是一款简化窗口管理的 macOS 应用。您可以通过简单的按键触发径向菜单,轻松选择窗口方向,并根据个人喜好自定义颜色和设置。只需几次点击,就能轻松移动、调整大小和排列窗口,为您节省宝贵的时间和精力。
[!注意]
Loop 在不断发展,定期添加新功能和改进,以提升您在 macOS 上的窗口管理体验。
<h6 align="center">
<img src="https://yellow-cdn.veclightyear.com/835a84d5/bed4abe7-5c2a-4459-a28d-09a4eedc3210.gif" alt="Loop 演示">
<br /><br />
<a href="https://discord.gg/2CZ2N6PKjq">
<img src="https://img.shields.io/badge/Discord-加入我们-7289DA?logo=discord&logoColor=white&style=for-the-badge&labelColor=23272A" />
</a>
<a href="https://github.com/MrKai77/Loop/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/MrKai77/Loop?label=许可证&color=5865F2&style=for-the-badge&labelColor=23272A" />
</a>
<a href="https://github.com/MrKai77/Loop/stargazers">
<img src="https://img.shields.io/github/stars/MrKai77/Loop?label=星标&color=57F287&style=for-the-badge&labelColor=23272A" />
</a>
<a href="https://github.com/MrKai77/Loop/network/members">
<img src="https://img.shields.io/github/forks/MrKai77/Loop?label=分支&color=ED4245&style=for-the-badge&labelColor=23272A" />
</a>
<a href="https://github.com/MrKai77/Loop/issues">
<img src="https://img.shields.io/github/issues/MrKai77/Loop?label=问题&color=FEE75C&style=for-the-badge&labelColor=23272A" />
</a>
<br />
</h6>
功能
径向菜单
径向菜单允许您使用鼠标/触控板操作窗口。按住触发键并将光标移动到所需方向即可移动和调整窗口大小。
<div><video controls src="https://github.com/user-attachments/assets/658f7043-79a1-4690-83b6-a714fe6245c8" muted="false"></video></div>
预览
预览窗口使您能够在执行调整大小操作之前查看效果。
<div><video controls src="https://github.com/user-attachments/assets/5ecb3ae8-f295-406f-b968-31e539f4a098" muted="false"></video></div>
键盘快捷键
Loop 允许您将任何键与触发键组合使用,以启动窗口操作。
<div><video controls src="https://github.com/user-attachments/assets/d865329f-0533-4eeb-829d-9aa6159f454b" muted="false"></video></div>
循环
Loop 搭配循环功能可以变得非常强大。通过重复按同一组合键或连续左键点击,您可以快速执行多个窗口操作。
<div><video controls src="https://github.com/user-attachments/assets/1adb1325-775d-4687-9085-71c7f775d65d" muted="false"></video></div>
主题设置
径向菜单
径向菜单的宽度、形状和颜色都可以完全自定义。它是可选的,可以禁用。光标交互和径向菜单本身可以独立切换。
<div><video controls src="https://github.com/user-attachments/assets/b2d3f6c8-dd68-4ac2-a30a-19f36a8fd94d" muted="false"></video></div>
预览
调整可选预览窗口的内边距、圆角半径、边框颜色和边框宽度。
<div><video controls src="https://github.com/user-attachments/assets/fc107861-8125-42c2-b987-2fff554078d5" muted="false"></video></div>
使用方法
安装
Homebrew
brew install loop
手动下载
前往发布页面下载底部的最新 .zip
文件,或点击这里。
触发
Loop 使用触发键来激活功能。按住或点击此键可启用 Loop 的某些功能。要访问径向菜单,按住触发键并将光标移动到所需方向。喜欢键盘快捷键的用户可以分配一个键与触发键配合使用,以激活特定操作。触发键可以在"设置"部分的"行为"标签中设置。触发键可以是一个或多个键。
要将 Caps Lock 设置为触发键,您有两个选项:
a. 更改系统设置
- 前往系统设置 → 键盘 → "键盘快捷键..."。
- 在"修饰键"标签中,将
Caps Lock (⇪) 键
重新映射为 (^) Control
。
- 为每个连接的键盘重复此重新映射过程。
- 在 Loop 中,选择
右 Control
键作为触发键。
b. 使用外部应用
键盘快捷键
<table>
<thead>
<tr>
<th>类别</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>常规</strong></td>
<td>全屏、最大化、接近最大化、居中、MacOS 居中、最小化、隐藏</td>
</tr>
<tr>
<td><strong>半屏</strong></td>
<td>上半屏、下半屏、左半屏、右半屏</td>
</tr>
<tr>
<td><strong>四分之一屏</strong></td>
<td>左上四分之一、右上四分之一、左下四分之一、右下四分之一</td>
</tr>
<tr>
<td><strong>水平三分之一</strong></td>
<td>右三分之一、右三分之二、水平居中三分之一、左三分之二、左三分之一</td>
</tr>
<tr>
<td><strong>垂直三分之一</strong></td>
<td>上三分之一、上三分之二、垂直居中三分之一、下三分之二、下三分之一</td>
</tr>
<tr>
<td><strong>屏幕切换</strong></td>
<td>下一屏幕、上一屏幕</td>
</tr>
<tr>
<td><strong>窗口操作</strong></td>
<td>放大、缩小、收缩顶部、收缩底部、收缩右侧、收缩左侧、扩展顶部、扩展底部、扩展右侧、扩展左侧、向上移动、向下移动、向右移动、向左移动</td>
</tr>
<tr>
<td><strong>更多</strong></td>
<td>初始框架、撤销、自定义、循环</td>
</tr>
</tbody>
</table>
贡献者
要查看在开发 Loop 中发挥重要作用的所有贡献者,请访问我们的贡献者页面。
如何贡献
有关如何贡献的详细指南,请查看贡献指南。
常见问题
比较
<table>
<tr><th>应用名称</th><th>Loop</th><th>Rectangle  Pro</th><th>Hammerspoon</th><th>1Piece</th><th>BetterTouchTool</th><th>Swish</th><th>Rectangle</th><th>Multitouch</th><th>Emmetapp</th><th>Amethyst</th><th>Window  Fusion</th><th>Tiles</th><th>Magnet</th><th>Moom</th><th>Wins</th><th>Yabai</th><th>MacOS  15</th></tr>
<tr><td>价格</td><td>免费</td><td>$9.99</td><td>免费</td><td>免费</td><td>$22</td><td>$16</td><td>免费</td><td>$15.99</td><td>$19</td><td>免费</td><td>$12</td><td>免费</td><td>$4.99</td><td>$10</td><td>$13.99</td><td>免费</td><td>免费</td></tr>
<tr><td>预览</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>还原大小</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>开源</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>边缘吸附</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td></tr>
<tr><td>设置自定义大小</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>保存工作区</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
</table>
<tr><td>百分比单位</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>修饰键 + 鼠标</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>修饰键 + 方向键</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>最大化窗口</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td></tr>
<tr><td>多屏幕移动</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>触控板手势</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>修饰键 + 触控板</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>边距/网格间距</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td></tr>
<tr><td>窗口置顶/取消置顶</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
<tr><td>调整相邻窗口大小</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td></tr>
<tr><td>在指定屏幕打开窗口</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{red}{\textsf{✗}}$</td><td>$\color{green}{\textsf{✓}}$</td><td>$\color{red}{\textsf{✗}}$</td></tr>
</table>
### 许可证
本项目采用 GNU 通用公共许可证第3版 授权。