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
  • komorebic CLI — 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 hookson_focus_change and on_layout_change event 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-configuration

Configuration

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

LayoutDescription
BSPBinary space partitioning — recursive halving
ColumnsEqual-width vertical columns
RowsEqual-height horizontal rows
VerticalStackOne main pane + vertical stack on right
HorizontalStackOne main pane + horizontal stack below
UltrawideVerticalStackCentre main + left and right stacks (ultrawide monitors)
GridEven grid arrangement
RightMainVerticalStackMain 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.json

komorebi vs i3 / Hyprland

Featurekomorebii3 (Linux)Hyprland (Linux)
PlatformWindowsLinux (X11)Linux (Wayland)
ConfigurationJSON/YAMLCustom DSLCustom DSL
Animations✅ (Win 11)
Hotkey daemonwhkd (separate)Built-inBuilt-in
Status barYasb / Zebari3bar / PolybarWaybar
Gaps
Multi-monitor