komorebi
A tiling window manager for Windows written in Rust, providing dynamic tiling layouts and multi-monitor workspace management.
komorebi is a tiling window manager for Windows 10 and 11, written in Rust. It
sits on top of the native Windows desktop compositor and augments it with
automatic tiling layouts, virtual workspaces, and multi-monitor support —
capabilities that Windows itself has never provided. Unlike most tiling WMs that
are Linux-exclusive, komorebi brings the ergonomics of i3 or Hyprland to Windows
without requiring WSL or a Linux subsystem.
Features
- Dynamic tiling layouts — BSP, columns, rows, vertical stack, horizontal stack, ultrawide column, and more; switchable per workspace
- Virtual workspaces — independent workspaces per monitor, each with its own layout and window set
- Multi-monitor support — each monitor gets its own workspace stack; focus and window movement work across displays
- Application-aware rules — per-application float rules, border rules, and workspace assignment via regex matching on window title or class
komorebicCLI — every action (focus, move, resize, layout change) is triggered through a named pipe CLI; scriptable from any language- whkd integration — pairs with
whkd, a standalone hotkey daemon written in Rust, for keybinding management without AutoHotkey - Transparent borders — optional coloured window borders to indicate focus state
- YAML / JSON configuration — declarative config file with per-application rules and workspace definitions
- Animation support — optional smooth window movement animations (Windows 11)
- Scripting hooks —
on_focus_changeandon_layout_changeevent hooks for integration with status bars like Yasb or Zebar
Installation
cargo install komorebi --locked
cargo install whkd --locked # optional hotkey daemon
Pre-built binaries are available on the
releases page for x86-64 Windows.
Download komorebi.exe and komorebic.exe and place them somewhere on your
PATH.
Scoop (Windows):
scoop bucket add extras
scoop install komorebi
scoop install whkd
WinGet:
winget install LGUG2Z.komorebi
winget install LGUG2Z.whkd
komorebi is a Windows-only tool. It has no Linux or macOS build.
Quick Start
Start the window manager:
komorebic start --await-configuration
Apply a configuration file:
komorebic load-custom-layout ~/.config/komorebi/komorebi.json
Basic whkd keybindings file (~/.config/whkd/whkdrc):
alt + h : komorebic focus left
alt + j : komorebic focus down
alt + k : komorebic focus up
alt + l : komorebic focus right
alt + shift + h : komorebic move left
alt + shift + j : komorebic move down
alt + shift + k : komorebic move up
alt + shift + l : komorebic move right
alt + f : komorebic toggle-float
alt + shift + f : komorebic toggle-monocle
alt + 1 : komorebic focus-workspace 0
alt + 2 : komorebic focus-workspace 1
alt + 3 : komorebic focus-workspace 2
alt + shift + 1 : komorebic move-to-workspace 0
alt + shift + 2 : komorebic move-to-workspace 1
Start whkd alongside komorebi:
komorebic start --await-configuration
whkd &
komorebic complete-configurationConfiguration
The main config file lives at ~/.config/komorebi/komorebi.json (or .yaml):
{
"default_layout": "BSP",
"border": true,
"border_width": 2,
"border_colours": {
"single": "#e8673c",
"stack": "#5c6bc0",
"monocle": "#26a69a"
},
"monitors": [
{
"workspaces": [
{ "name": "1: web", "layout": "BSP" },
{ "name": "2: code", "layout": "VerticalStack" },
{ "name": "3: chat", "layout": "Columns" }
]
}
],
"float_rules": [
{ "kind": "Class", "id": "MessageWindow" },
{
"kind": "Title",
"matching_strategy": "Regex",
"id": "^Picture in Picture$"
}
],
"workspace_rules": [
{
"kind": "Class",
"id": "Chrome_WidgetWin_1",
"monitor_index": 0,
"workspace_index": 0
}
]
}Available Layouts
| Layout | Description |
|---|---|
BSP | Binary space partitioning — recursive halving |
Columns | Equal-width vertical columns |
Rows | Equal-height horizontal rows |
VerticalStack | One main pane + vertical stack on right |
HorizontalStack | One main pane + horizontal stack below |
UltrawideVerticalStack | Centre main + left and right stacks (ultrawide monitors) |
Grid | Even grid arrangement |
RightMainVerticalStack | Main pane on right, stack on left |
komorebic CLI reference
# Focus and movement
komorebic focus left|right|up|down
komorebic move left|right|up|down
komorebic cycle-focus previous|next
komorebic move-to-monitor 0
komorebic move-to-workspace 2
# Layouts
komorebic change-layout BSP
komorebic cycle-layout next
# Workspaces
komorebic focus-workspace 0
komorebic new-workspace
# Window state
komorebic toggle-float
komorebic toggle-monocle
komorebic toggle-maximize
# Resize
komorebic resize-axis horizontal increase
komorebic resize-delta 50
# Reload config
komorebic load-custom-layout ~/.config/komorebi/komorebi.jsonkomorebi vs i3 / Hyprland
| Feature | komorebi | i3 (Linux) | Hyprland (Linux) |
|---|---|---|---|
| Platform | Windows | Linux (X11) | Linux (Wayland) |
| Configuration | JSON/YAML | Custom DSL | Custom DSL |
| Animations | ✅ (Win 11) | ❌ | ✅ |
| Hotkey daemon | whkd (separate) | Built-in | Built-in |
| Status bar | Yasb / Zebar | i3bar / Polybar | Waybar |
| Gaps | ✅ | ✅ | ✅ |
| Multi-monitor | ✅ | ✅ | ✅ |