APP

yabai

2025-12-02

yabai 是一款 [[macOS]] 上的平铺式窗口管理器,通过二叉空间分割 (Binary space partitioning) 算法自动调整窗口布局,也支持通过命令行和快捷键(需第三方软件配合)进行窗口管理。

安装

可以直接通过 [[brew]] 安装:

Terminal window
brew install koekeishiya/formulae/yabai

安装完成后,拷贝配置文件到 .config 目录下,在这个目录下文件名前缀没有点号:

Terminal window
mkdir ~/.config/yabai
cp /opt/homebrew/opt/yabai/share/yabai/examples/yabairc ~/.config/yabai/yabairc

启动 yabai:

Terminal window
yabai --start-service

注: 如果不准备关闭 [[SIP]],到此就可以运行了,sudoers 无须配置。

关闭 SIP

先参考 [[SIP]] 中的内容关闭系统完整性保护,重新启动后运行:

Terminal window
echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d " " -f 1) $(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai

最后在 ~/.config/yabai/yabairc 中把其中的两行配置取消注释:

~/.config/yabai/yabairc
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
sudo yabai --load-sa

最后运行: yabai --restart-service 重启 yabai 服务就可以体验完整版的 yabai 了。

命令

窗口

交换

前缀: yabai -m window --swap

  • north: 北(上))
  • south: 南(下)
  • west: 西(左)
  • east: 动(右)
  • prev: 前
  • next: 后
  • recent: 上一个聚焦
  • first: 第一个
  • last: 最后一个
  • mouse: 鼠标所在

属性切换

前缀: yabai -m window --toggle

  • float: 切换当前窗口属性为浮动
  • split: 切换当前窗口为垂直/水平布局
  • zoom-parent: 窗口占据父节点空间(重叠)
  • zoom-fullscreen: 窗口最大化
  • native-fullscreen: 窗口全屏
  • expose: 显示当前 APP 的所有窗口

聚焦

前缀: yabai -m window --focus

  • recent: 切换到上一个聚焦的窗口

大小比例

前缀: yabai -m window

  • --ration abs:0.4: 调整当前窗口左侧的占比

显示器

前缀: yabai -m display --focus

  • recent: 切换到上一个显示器

空间

也就是桌面

前缀: yabai -m space

  • --focus recent: 切换到上一个空间
  • --balance: 所有窗口恢复等比例布局

规则

前缀: yabai -m rule

  • --list: 查看已加载的规则

配置

默认配置:

external_bar off:40:0 # 状态栏 (需配合第三方工具)
menubar_opacity 1.0 # 禁用菜单栏
mouse_follows_focus off # 鼠标移动到焦点窗口的中心 (默认关闭)
focus_follows_mouse off # 把焦点聚焦在鼠标所在窗口 (默认关闭)
display_arrangement_order default \
window_origin_display default \
window_placement second_child # 新窗口分割时位置 (垂直右侧,水平底部)
window_insertion_point focused \
window_zoom_persist on \
window_shadow on # 窗口阴影 (需要开启 SIP)
window_animation_duration 0.0 \
window_animation_easing ease_out_circ \
window_opacity_duration 0.0 \
active_window_opacity 1.0 # 焦点窗口透明度 (需要开启 SIP)
normal_window_opacity 0.90 # 正常窗口透明度 (需要开启 SIP)
window_opacity off # 透明度开关 (需要开启 SIP)
insert_feedback_color 0xffd75f5f \
split_ratio 0.50 # auto_balance 关闭的情况下自定义
split_type auto \
auto_balance off # 自动调整窗口分割比例,默认关闭
top_padding 00 # 和屏幕顶部边距
bottom_padding 00 # 和屏幕底部边距
left_padding 08 # 和屏幕左侧边距
right_padding 08 # 和屏幕右侧边距
window_gap 08 # 窗口之间的边距
layout bsp # 布局,默认 bsp (平铺),可选 float
mouse_modifier fn # 鼠标交互时的修饰键 (默认 fn)
mouse_action1 move \
mouse_action2 resize \
mouse_drop_action swap

使用

快捷键除了使用推荐的 skhd 之外,也可以使用 [[Hammerspoon]]

参考