komorebi 是 Rust 写的 Windows 平铺窗口管理器。它不像 PowerToys 那样给你一个面板手动分区,而是接管所有窗口:新开的窗口按规则自动排满屏幕,用键盘在窗口之间跳。
项目由五个 exe 组成,合计 74.7 MB。配置分两半:主配置只有 52 行,应用匹配规则却有 3264 行,这个比例基本说明了它的设计思路。
五个 exe,各管一块
| 文件 | 体积 | 管什么 |
|---|---|---|
| komorebi.exe | 14667264 字节 | 核心进程,监听窗口事件并重排 |
| komorebi-bar.exe | 26497024 字节 | 屏幕边缘的状态栏 |
| komorebi-gui.exe | 12520448 字节 | 配置编辑器 |
| komorebi-shortcuts.exe | 11112960 字节 | 快捷键冲突检测 |
| komorebic.exe | 9986048 字节 | 命令行控制器 |
五个文件分开编译,体积都在 10 MB 上下,Rust 静态链接的典型大小。其中 komorebic.exe 不是可选辅助工具,而是主要操作入口:开窗口 / 切工作区 / 调布局全部通过给它发命令完成,它的 --help 里列了 213 行命令说明。
主配置 52 行,应用规则 3264 行
跑一次 komorebic quickstart 会生成三个文件:
| 文件 | 体积 | 行数 | 内容 |
|---|---|---|---|
| komorebi.json | 1124 字节 | 52 行 | 全局设置:7 个工作区 / 间距 / 边框 / 隐藏策略 |
| applications.json | 62631 字节 | 3264 行 | 按进程名匹配,决定放哪个工作区 |
| .config\whkdc | — | — | 快捷键定义 |
主配置 52 行就能描述「7 个工作区、窗口间距、边框宽度、跨屏行为」这些全局规则。真正占篇幅的是 applications.json 的 3264 行,它给几百个常见应用预置了规则:某个软件放第几个工作区 / 要不要忽略 / 启动时怎么浮动。
3264 行对 52 行,说明窗口管理器的成本从来不是排窗口,而是跟 300 多个自己管位置的软件打交道。
起服务之前,两个组件都起不来
komorebic quickstart # 生成配置(会问是否覆盖,脚本里要喂 y)
komorebic start --await-configuration
komorebic stop
komorebi-gui.exe 和 komorebi-bar.exe 单独启动会直接退出:实测两个进程启动后 5 秒内就结束,枚举不到任何窗口。它们依赖核心进程在跑,先起服务才有界面。
start --await-configuration 里那个参数要留意:不加它,komorebi 立刻按默认规则重排现有窗口;加了它,会等你把配置发完再动手。
服务没跑时,它直接 panic
这个错很容易让人找错方向:服务没启动时执行 komorebic state,它不是打印「未运行」,而是抛 panic 并带上系统错误码:
thread 'main' (50004) panicked at komorebic\src\main.rs:1577:23:
由于目标计算机积极拒绝,无法连接。 (os error 10061)
看到 10061 先确认 komorebi.exe 在不在跑,别去查网卡。同一个错误码在别的场景是「端口没人监听」,在这里是「服务没启动」。
另一个坑在 quickstart 本身:komorebi.json 和 komorebi.bar.json 已存在时,它会逐个问要不要覆盖,不问就卡在那里,脚本里得提前喂 y。
为什么这篇没有平铺效果的截图
komorebi 一旦启动就接管整个桌面的窗口管理,会立刻重排当前打开的所有窗口。测试机是正在使用的工作机,跑一次就要打乱现有布局,而且恢复不了原样。为了截一张图打断别人的工作,这个代价不对等。
这篇记录的是版本、5 个组件、213 条命令和两份配置的 3316 行,没有「开三个窗口看它们怎么排」的截图。
它和 FancyZones 的差别在操作方式
FancyZones 是「手动把窗口拖进格子」,位置由鼠标决定,学习成本几乎为零;komorebi 是「窗口一出现就自动排好」,用 213 条命令里的键盘操作来切换,前 2 到 3 天会很不顺手。
选它的通常是长期用 i3、sway 这类 Linux 平铺管理器的用户。只是偶尔多开 2 到 3 个窗口对照看文档的,用系统自带的贴靠布局就够。









