适用于 macOS 的简单窗口管理和应用切换器
WinRes 应用程序
一个可为以下目的服务的 macOS 应用程序:
1. 添加键盘快捷键以移动和调整窗口大小
分配键盘快捷键以:
- 缩放活动窗口
- 最小化活动窗口
- 将活动窗口移至屏幕左侧
- 将活动窗口移至屏幕右侧
2. 用作应用程序切换器
使用键盘快捷键切换到特定应用程序。例如,分配 ⌥1
切换到浏览器,分配 ⌥2
切换到终端应用程序。
切换逻辑如下:
- 如果应用程序未运行,则启动应用程序
- 如果应用程序正在运行,但当前空间中没有应用程序的可见窗口,则打开应用程序的新窗口
- 如果当前空间中有可见的应用程序窗口,则切换到应用程序的窗口
- 如果应用程序窗口处于焦点,则切换到下一个应用程序窗口
屏幕截图
安装
转到 发行版本页面 并下载最新的应用程序版本。
如何使用
启动 WinRes 应用程序后,您应该会在菜单栏中看到它的图标。点击它并选择“设置”。 此时,该应用程序可能已经请求辅助功能权限(具体取决于您的 macOS 版本)。 酌情授予请求的权限,但没有辅助功能权限,该应用程序将无法工作。
在设置窗口中,可以为窗口操作分配键盘快捷键(例如,缩放活动窗口、最小化活动窗口等)。
此外,可以分配快捷键在应用程序之间快速切换。假设您想使用键盘快捷键打开 Google Chrome。
为此,我们需要知道 Google Chrome 应用程序的包标识符。
若要获取它,请使用以下终端命令:osascript -e 'id of app "Google Chrome"'
。
该命令应返回 com.google.Chrome
。在“应用包标识符”字段中指定此值,
然后点击“快捷方式”字段分配快捷方式。如果始终想要打开应用程序的新窗口,请选中“打开新窗口”复选框。
构建
若要构建 WinRes 应用程序:
- 在 Xcode 中打开此项目
- 在菜单栏中,转到
产品
>存档
- 在打开的“存档”窗口中,选择所需的版本并点击“分发应用程序”
- 选择“复制应用程序”作为分发方式
- 选择名称和位置,然后点击“导出”
- 使用磁盘工具从上一步中创建的“应用程序”文件创建
dmg
文件,请参阅 此处 的说明
为什么
我尝试复制我在 Linux 机器上类似的窗口管理体验,但在 macOS 上。 您可能要问,为什么不使用 Rectangle 和 rcmd 等现有解决方案? 现有的解决方案非常好,但它们并未提供我正在寻找的确切体验。此外,我想要一个个人项目,所以我决定实施 WinRes 应用程序。
实施细节
WinRes 应用程序主要依赖于两个 API:
- 模拟键盘按下的 API,例如,模拟
Command+N
以打开新窗口 - 选择菜单栏项的可访问性 API,例如,选择
窗口->将窗口移至屏幕左侧
以移动窗口。为什么不使用 macOS 键盘设置中的应用程序快捷键,它基本上可以做同样的事情(允许您为菜单栏项分配键盘快捷键)?答案很简单:它对我来说不能稳定运行。有时分配的快捷键根本不起作用。因此,我改用可访问性 API 在 WinRes 应用程序中实施这些快捷键。