Mac 窗口乱糟糟?窗口管理器 Amethyst 一键平铺,效率翻倍!
May 10, 2025
平铺窗口管理器(如 Amethyst、i3、Awesome 等)是一类特殊的窗口管理工具,专注于高效管理窗口布局。它们自动将窗口平铺在屏幕上,避免窗口重叠,并允许用户通过快捷键快速调整窗口位置和大小。这类工具的设计核心在于最大化利用屏幕空间,同时减少对鼠标操作的依赖,使用户可以通过键盘快速切换和管理窗口。
当年用 Arch 时,Awesome 是我的最爱。切到 macOS 后,大部分情况是双屏工作,一直没有特别满意的工具,后来选择了 Amethyst。下面是对 Amethyst 的简单介绍:
基本概念
-
平铺布局
平铺窗口管理器会自动将所有打开的窗口平铺在屏幕上,而不会像传统窗口管理器那样层叠和重叠。窗口会根据布局规则占据指定的位置和大小,确保每个窗口都可见。这些工具通常提供多种平铺布局,适应不同的工作场景。例如,左右分屏布局、主-辅布局(Master-Slave)、网格布局等。 -
主窗格(Main Pane)与辅助窗格(Stack/Secondary Pane)
- 主窗格(Main Pane)是主要显示区域,通常放置最重要的窗口,占据较大的屏幕空间。
- 辅助窗格(Stack)用于容纳次要的窗口,占据剩余空间。 用户可以调整主窗格的窗口数量和大小,使关键窗口更易操作。
-
窗口焦点
平铺窗口管理器支持通过快捷键在窗口之间快速切换焦点,而无需使用鼠标点击。焦点的切换方式可以按方向(如上下左右)或按顺序(顺时针、逆时针)切换,便于在多个窗口之间高效切换。 -
窗口平铺模式(Layouts)
平铺窗口管理器通常支持多种布局模式,以适应不同的工作需求。常见的布局模式包括:- Tall(纵向布局):将主窗格放在屏幕的左侧,辅助窗格在右侧堆叠显示。
- Wide(横向布局):将主窗格放在屏幕的上方,辅助窗格在下方堆叠显示。
- Fullscreen(全屏布局):只显示一个全屏窗口,隐藏其他所有窗口。
- Column(列布局):所有窗口按列排列,每个窗口占据一列,宽度均分。
- Floating(浮动布局):窗口不按平铺排列,可以自由移动和调整大小。
- BSP(Binary Space Partitioning 二叉空间分割布局):基于二叉树递归分割屏幕空间,将窗口分配到分割的区域中。
- 其他:Middle-wide(中间横向布局)、Tall-right(右侧纵向布局)、Widescreen-tall(宽屏纵向布局)、Row(行布局)等。
-
多显示器支持
平铺窗口管理器通常具备多显示器支持,允许用户在多个屏幕上管理窗口布局。用户可以通过快捷键在不同显示器间切换焦点、移动窗口,并为每个显示器设置不同的布局规则。
快捷键
Amethyst 使用两种组合键(mod1 和 mod2),还可以选择性地使用另外两种组合键(mod3 和 mod4)。
|默认快捷键|描述| |---|---| |mod1|option + shift| |mod2|ctrl + option + shift| |mod3|默认未定义| |mod4|默认未定义|
并定义了以下命令,大多数映射自 xmonad 的键盘组合。
| 默认快捷键 | 功能描述 | | ---------------- | -------------------- | | mod1 + space | 切换到下一个布局 | | mod2 + space | 切换到上一个布局 | | mod1 + h | 缩小主窗格 | | mod1 + l | 扩展主窗格 | | mod1 + , | 增加主窗格中的窗口数量 | | mod1 + . | 减少主窗格中的窗口数量 | | mod1 + j | 将焦点移动到逆时针方向的窗口 | | mod1 + k | 将焦点移动到顺时针方向的窗口 | | mod1 + p | 将焦点移动到逆时针方向的屏幕 | | mod1 + n | 将焦点移动到顺时针方向的屏幕 | | mod2 + h | 将焦点窗口移动到逆时针方向的屏幕 | | mod2 + l | 将焦点窗口移动到顺时针方向的屏幕 | | mod2 + j | 将焦点窗口与逆时针方向的窗口交换 | | mod2 + k | 将焦点窗口与顺时针方向的窗口交换 | | mod1 + enter | 将焦点窗口与主窗口交换 | | mod1 + z | 强制重新评估窗口布局 | | mod2 + z | 重新启动 Amethyst | | mod2 + left | 将焦点窗口移到左侧的桌面空间 | | mod2 + right | 将焦点窗口移到右侧的桌面空间 | | mod2 + 1 | 将焦点窗口移到第 1 个桌面空间 | | mod2 + 2 | 将焦点窗口移到第 2 个桌面空间 | | mod2 + 3 | 将焦点窗口移到第 3 个桌面空间 | | mod2 + 4 | 将焦点窗口移到第 4 个桌面空间 | | mod2 + 5 | 将焦点窗口移到第 5 个桌面空间 | | mod2 + 6 | 将焦点窗口移到第 6 个桌面空间 | | mod2 + 7 | 将焦点窗口移到第 7 个桌面空间 | | mod2 + 8 | 将焦点窗口移到第 8 个桌面空间 | | mod2 + 9 | 将焦点窗口移到第 9 个桌面空间 | | mod2 + 0 | 将焦点窗口移到第 10 个桌面空间 | | none | 将焦点窗口移到第 11 个桌面空间 | | none | 将焦点窗口移到第 12 个桌面空间 | | mod1 + w | 切换焦点到屏幕 1 | | mod2 + w | 将焦点窗口移到屏幕 1 | | mod1 + e | 切换焦点到屏幕 2 | | mod2 + e | 将焦点窗口移到屏幕 2 | | mod1 + r | 切换焦点到屏幕 3 | | mod2 + r | 将焦点窗口移到屏幕 3 | | mod1 + q | 切换焦点到屏幕 4 | | mod2 + q | 将焦点窗口移到屏幕 4 | | mod1 + g | 切换焦点到屏幕 5 | | mod2 + g | 将焦点窗口移到屏幕 5 | | mod1 + t | 切换焦点窗口的浮动状态 | | mod1 + i | 显示当前布局 | | mod2 + t | 切换全局平铺模式 | | mod1 + a | 选择纵向布局 | | none | 选择右侧纵向布局 | | mod1 + s | 选择横向布局 | | none | 选择中间横向布局 | | mod1 + d | 选择全屏布局 | | mod1 + f | 选择列式布局 | | none | 选择行式布局 | | none | 选择浮动布局 | | none | 选择宽屏纵向布局 | | none | 选择 bsp 布局 |
其他
将更多布局放入切换列表
如果在 Amethyst 中使用 mod1 + space
切换布局时发现布局选项不全,可能是因为 Amethyst 配置中并未启用所有布局。可以通过以下步骤检查并启用完整的布局:
-
打开 Amethyst 配置:
- 点击菜单栏的 Amethyst 图标,选择 Preferences(偏好设置)。
-
检查启用的布局:
- 在 Layouts 选项卡中,你可以看到所有可用的布局模式。
- 确保 BSP 等布局已被勾选,以便能够在切换布局时看到这些模式。
-
保存并重试:
- 勾选所需的布局后,关闭偏好设置窗口,按
mod1 + space
进行布局切换,检查是否能够访问完整的布局选项。
- 勾选所需的布局后,关闭偏好设置窗口,按
这样设置后,你应该可以在 mod1 + space
的切换列表中看到所有已启用的布局模式,包括 BSP 等其他布局。
问题
- 当一个桌面窗口多于 3 个时,会显示到另一个桌面,但焦点还在当前桌面,导致切换时看不到。目前看和布局有关,某些布局模式在多屏环境下稳定性更好,比如
Tall
或Fullscreen
。而复杂的布局(如BSP
)在多个屏幕的管理上可能会导致焦点丢失或错位。