矩形
矩形是一个基于Spectacle的窗口管理应用,使用Swift编写。
系统要求
矩形支持macOS v10.15+。支持macOS 10.13和10.14的最后一个版本是https://github.com/rxhanson/Rectangle/releases/tag/v0.73。
安装
你可以从https://rectangleapp.com或发布页面下载最新的dmg文件。
或者使用brew cask安装:
brew install --cask rectangle
如何使用
键盘快捷键是不言自明的,但如果你从未在Windows或其他窗口管理应用中使用过,可能需要对贴靠区域进行一些解释。
将窗口拖到屏幕边缘。当鼠标光标到达屏幕边缘时,你会看到一个轮廓,表示松开鼠标后矩形将尝试调整窗口大小并移动到的位置。
贴靠区域 | 结果动作 |
---|---|
左侧或右侧边缘 | 左半或右半 |
顶部 | 最大化 |
角落 | 对应角落的四分之一 |
左侧或右侧边缘,刚好在角落上方或下方 | 上半或下半 |
底部左侧、中间或右侧三分之一 | 相应的三分之一 |
底部左侧或右侧三分之一,然后拖到底部中心 | 分别为前三分之二或后三分之二 |
忽略应用
- 聚焦你想要忽略的应用(使该应用的窗口置于最前)。
- 打开矩形菜单并选择"忽略应用"。
通过URL执行操作
打开URL rectangle://execute-action?name=[名称]
。如果可能,不要激活矩形。
[名称]
的可用值:left-half
, right-half
, center-half
, top-half
, bottom-half
, top-left
, top-right
, bottom-left
, bottom-right
, first-third
, center-third
, last-third
, first-two-thirds
, last-two-thirds
, maximize
, almost-maximize
, maximize-height
, smaller
, larger
, center
, restore
, next-display
, previous-display
, move-left
, move-right
, move-up
, move-down
, first-fourth
, second-fourth
, third-fourth
, last-fourth
, first-three-fourths
, last-three-fourths
, top-left-sixth
, top-center-sixth
, top-right-sixth
, bottom-left-sixth
, bottom-center-sixth
, bottom-right-sixth
, specified
, reverse-all
, top-left-ninth
, top-center-ninth
, top-right-ninth
, middle-left-ninth
, middle-center-ninth
, middle-right-ninth
, bottom-left-ninth
, bottom-center-ninth
, bottom-right-ninth
, top-left-third
, top-right-third
, bottom-left-third
, bottom-right-third
, top-left-eighth
, top-center-left-eighth
, top-center-right-eighth
, top-right-eighth
, bottom-left-eighth
, bottom-center-left-eighth
, bottom-center-right-eighth
, bottom-right-eighth
, tile-all
, cascade-all
示例,从shell中:open -g "rectangle://execute-action?name=left-half"
隐藏首选项的终端命令
与Spectacle的区别
- 矩形使用MASShortcut进行键盘快捷键记录。Spectacle使用自己的快捷键记录器。
- 矩形有额外的窗口操作:将窗口移动到每个边缘而不调整大小,仅最大化窗口高度,几乎最大化窗口。
- 下一个/上一个屏幕三分之一被明确的第一个三分之一、前三分之二、中间三分之一、后三分之二和最后三分之一所取代。会考虑屏幕方向,例如在横向屏幕上第一个三分之一是左三分之一,在纵向屏幕上是顶部三分之一。
- 然而,你可以使用第一个和最后一个三分之一操作来模拟Spectacle的三分之一循环。因此,如果你重复执行第一个三分之一,它将在三分之一之间循环(第一、中间、最后),反之亦然。
- 有一个选项可以让窗口在连续的左右执行中跨显示器移动。
- 当窗口被拖到屏幕边缘/角落时会自动贴靠。这可以被禁用。
常见已知问题
矩形没有移动到其他桌面/空间的能力
苹果从未发布过Spaces的公共API。其他可以在空间之间移动窗口的应用使用不受支持或不理想的方式来实现这一点。如果苹果决定发布一个公共API,我会添加这个功能。
iTerm2的窗口调整大小稍有偏差
默认情况下,iTerm2只会以字符宽度的增量调整大小。iTerm2内部可能有设置来禁用这个功能,但你可以使用以下命令来更改它。
defaults write com.googlecode.iterm2 DisableWindowSizeSnap -integer 1
长方形似乎导致通知中心冻结
这似乎只影响少数用户。为防止此情况发生,请取消勾选"通过拖动捕捉窗口"选项。 详见问题 317。
故障排除
如果窗口没有按预期调整大小或移动,以下是一些初步步骤来查找原因。此类问题大多是由其他应用程序引起的。
- 确保 macOS 是最新版本。
- 重启您的机器(这通常可以在 macOS 更新后解决问题)。
- 确保没有其他窗口管理应用程序在运行。
- 确保行为异常的应用程序没有任何冲突的键盘快捷键。
- 尝试使用菜单项执行窗口操作或将键盘快捷键更改为其他组合,以确定是否是键盘快捷键问题。
- 按照下一节的说明启用调试日志。
- 日志相当直观。如果计算的矩形和结果矩形相同,很可能是另一个应用程序导致了问题。如果需要,保存日志以附加到您创建的问题报告中。
- 如果您怀疑可能是另一个应用程序导致问题,请尝试创建并登录一个新的 macOS 用户。
尝试重置 Rectangle 的 macOS 辅助功能权限:
tccutil reset All com.knollsoft.Rectangle
或者,可以按以下步骤操作,而不使用 tccutil 终端命令。
- 如果 Rectangle 正在运行,请关闭它
- 在系统设置 -> 隐私与安全性 -> 辅助功能中,先禁用 Rectangle,然后用减号按钮将其移除。(按此顺序执行这两个步骤很重要)
- 重启您的 Mac。
- 启动 Rectangle 并按提示启用相关设置。
查看调试日志
- 打开 Rectangle 菜单时按住 alt(选项)键。
- 选择"查看日志..."菜单项,该项取代了"关于"菜单项。
- 执行 Rectangle 命令时,日志会显示在窗口中。
导入和导出 JSON 配置
在首选项窗口的设置选项卡中有导入和导出 JSON 文件配置的按钮。
启动时,如果 ~/Library/Application Support/Rectangle/RectangleConfig.json
文件存在,Rectangle 将加载该配置文件,并将其重命名为带有时间/日期戳的文件,以避免在后续启动时再次读取。
首选项存储
Rectangle 的配置使用 NSUserDefaults 存储,意味着它存储在以下位置:
~/Library/Preferences/com.knollsoft.Rectangle.plist
注意,v0.41+ 版本中的快捷键以不同格式存储,无法在先前版本中加载。
该文件可以备份或转移到其他机器。
如果您使用的是 Rectangle v0.44+ 版本,还可以使用首选项窗格中的导入/导出按钮,通过 JSON 文件在不同机器间共享您的首选项和键盘快捷键。
[!注意]
如果您在应用程序重启后遇到配置选项无法持续保存的问题,且是通过 Homebrew 安装的,您需要先卸载然后使用--zap
标志重新安装。
brew uninstall --zap rectangle
brew install rectangle
卸载
可以通过退出应用程序并将其移到垃圾桶来卸载 Rectangle。您可以使用以下终端命令从机器上删除 Rectangle 的默认设置:
defaults delete com.knollsoft.Rectangle
[!提示]
如果您是在使用 Homebrew 安装后卸载,应包含--zap
标志以确保也删除 plist 条目。
brew uninstall --zap rectangle
贡献
Rectangle 的逻辑在 Multitouch 应用中使用。Rectangle Pro 应用完全建立在 Rectangle 之上。如果您贡献了重要的代码或本地化内容并被合并到 Rectangle 中,请给我发电子邮件以获取 Multitouch 或 Rectangle Pro 的免费许可证。Sparkle、MASShortcut 或 Spectacle 的贡献者也可以获得免费的 Multitouch 或 Rectangle Pro 许可证。
本地化
如果您想为本地化做出贡献,所有翻译都保存在每种语言的 Main.strings 文件中。如果您想添加一个当前不存在的本地化,但不知道如何创建,请创建一个问题,我们可以初始化一个翻译文件。
欢迎提交新本地化或改进现有本地化的拉取请求。
在 Xcode 中运行应用程序(针对开发者)
Rectangle 使用 Swift Package Manager 安装 Sparkle 和 MASShortcut。
MASShortcut 的原始仓库已存档,因此 Rectangle 使用我的分支。如果您想进行任何涉及 MASShortcut 的更改,请在我的分支上提交拉取请求。