yabai 是一款 [[macOS]] 上的平铺式窗口管理器,通过二叉空间分割 (Binary space partitioning) 算法自动调整窗口布局,也支持通过命令行和快捷键(需第三方软件配合)进行窗口管理。
安装
可以直接通过 [[brew]] 安装:
brew install koekeishiya/formulae/yabai安装完成后,拷贝配置文件到 .config 目录下,在这个目录下文件名前缀没有点号:
mkdir ~/.config/yabaicp /opt/homebrew/opt/yabai/share/yabai/examples/yabairc ~/.config/yabai/yabairc启动 yabai:
yabai --start-service注: 如果不准备关闭 [[SIP]],到此就可以运行了,sudoers 无须配置。
关闭 SIP
先参考 [[SIP]] 中的内容关闭系统完整性保护,重新启动后运行:
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 中把其中的两行配置取消注释:
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 (平铺),可选 floatmouse_modifier fn # 鼠标交互时的修饰键 (默认 fn)mouse_action1 move \mouse_action2 resize \mouse_drop_action swap使用
快捷键除了使用推荐的 skhd 之外,也可以使用 [[Hammerspoon]]。