KiwiDesk

KiwiDesk

原生质感的macOS平铺窗口管理器

系统官网

应用介绍

Mac 上想用平铺窗口管理,装完才发现是另一套世界:配置写在文本文件里,改一行要回终端 reload,有的还要求关掉 SIP——为了摆窗口把系统完整性保护关了,这代价不小。KiwiDesk 换了个做法:它首先是个 Mac 应用,带滑块和实时预览的原生设置窗口,装上就开始平铺,不需要先写配置;只申请辅助功能权限,不碰 SIP,不装内核扩展。

它跟 i3 那一脉也不一样——不用分割容器树,每个空间就是一个扁平的窗口列表,布局是作用在这个列表上的纯函数。换布局就是换一个公式重排同一批窗口,不存在树结构手术,也不会丢状态。七种布局里包括 PaperWM / Niri 那种横向滚动列,还有 bsp、主从栈、monocle、网格和可调轨道,每种的参数(分割比例、主区数量、列宽、行列数)都能在设置里或 Lua 里按全局或按空间单独调。macOS 的原生 Desktops 保持原样,鼠标照常能用,快捷键也不跟系统自带的打架。

要求 macOS 14 以上的 Apple Silicon 机器。许可证是 BSL 1.1(商业源代码许可),不是标准开源协议,源码可看可自己构建,但商用限制需要自己确认。

软件功能



七种布局:bsp 二分分割、stack 主从栈、scrolling 滚动列(PaperWM 风格)、monocle 单窗最大化、grid 网格、track 可调轨道、floating 保持 macOS 原生行为,随时切换,同一批窗口直接按新公式重排。

原生设置界面:SwiftUI 写的设置窗口,间距边框、颜色动画、布局默认值、快捷键、配置档、应用规则都有可视化面板和实时预览,不用为改一个数字去编辑配置文件再 reload。

不关 SIP:只要辅助功能权限,没有内核扩展,不修改系统完整性保护;所有私有系统符号都在运行时解析,每条平铺路径都有公开 Accessibility 接口兜底,系统升级最多让快路径变慢,不会让它崩掉或者停止工作。

保留原生 Desktops:不另起一套虚拟桌面,而是在 macOS 自己的 Mission Control 桌面上排布窗口,还能把窗口发到指定桌面、切换桌面、给桌面绑定配置档。

三种操作方式:图形设置界面应付日常调整,命令行和内置的沙箱化 Lua 5.5 虚拟机用于复杂工作流,三者配置同一套东西。

模态快捷键层:用 define_layer 定义 Vim 风格的按键层,pull_or_spawn 能打开应用并把它的窗口拉到面前、再按就在这些窗口之间循环;走 Carbon 实现,不需要输入监控权限。

级联配置档:配置档可以绑定到显示器或桌面,继承默认值后只覆盖需要改的部分,不用为每种场景各维护一份完整配置。

置顶窗口:把某个窗口钉住让它跟着你跨桌面走,或者只在一块屏幕上跟随,而且是真正参与平铺的一块,不是浮在上面的一堆。

视觉叠层与 IPC:可自定义的焦点环、应用栏和空间栏叠层,另有 UNIX socket 的 JSON 事件流(kiwidesk subscribe),方便接自己的脚本和状态栏。

动画与无障碍:60/120 Hz DisplayLink 弹簧动画,设置界面全键盘可操作并支持 VoiceOver 朗读(每个控件同时播报名称和当前值),开箱即有多语言。

安装方式:brew install --cask kiwicanopy/tap/kiwidesk,或从官网下载签名并公证过的 dmg;cask 还会把 kiwidesk 命令行放进 PATH,两种方式都自带自动更新。