Files
komorebi/docs/linux/example-configurations.md
T
LGUG2Z d781028a2a refactor(repo): move the KDE and macOS docs under docs/ (pure move)
komorebi-for-kde/docs/ -> docs/linux/
komorebi-for-mac/docs/ -> docs/macos/

The Windows docs stay where they are (docs/). Renames only, so links and include paths
that named the old directories are broken at this revision; they are fixed in the revision
that fixes the paths of the whole layout move.
2026-11-05 15:03:27 -08:00

6.9 KiB

Example configurations

komorebi, and tiling window managers in general, are very complex pieces of software. To make starting out easier, the repository has an example configuration, docs/komorebi.example.json, which is kept working: a test loads it with every change.

Besides komorebi.json, komorebi for KDE is configured by the NixOS module, which installs it and starts it with every Plasma session (Installing komorebi), and by a key binding file in the format of skhd, whkd or sxhkd (Key bindings); examples of both are further down.

komorebi.json

The example sets some defaults and gives the first monitor eight workspaces, each with a different layout. This page has the file as it is:

{
  "app_specific_configuration_path": "$HOME/.config/komorebi/applications.json",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 15,
  "default_container_padding": 15,
  "border": true,
  "border_width": 6,
  "border_offset": 5,
  "floating_window_aspect_ratio": "Widescreen",
  "floating_layer_behaviour": "Float",
  "resize_delta": 100,
  "ignore_rules": [],
  "floating_applications": [],
  "manage_rules": [],
  "monitors": [
    {
      "workspaces": [
        {
          "name": "I",
          "layout": "BSP",
          "initial_workspace_rules": [
//            {
//              "kind": "Exe",
//              "id": "firefox",
//              "matching_strategy": "Equals"
//            }
          ]
        },
        {
          "name": "II",
          "layout": "VerticalStack"
        },
        {
          "name": "III",
          "layout": "HorizontalStack"
        },
        {
          "name": "IV",
          "layout": "UltrawideVerticalStack"
        },
        {
          "name": "V",
          "layout": "Rows"
        },
        {
          "name": "VI",
          "layout": "Grid"
        },
        {
          "name": "VII",
          "layout": "RightMainVerticalStack"
        },
        {
          "name": "VIII",
          "layout": "Scrolling"
        }
      ]
    }
  ]
}

komorebic quickstart writes it, the applications.json below and an skhdrc of sample key bindings, where the daemon looks for them (Quickstart and autostart). Or put it there yourself, ~/.config/komorebi/komorebi.json, or give it to the daemon with komorebic start --config. Configuration explains every key and where the daemon looks. The settings of a monitor with more than one entry in monitors, and of each workspace, are there too.

Application specific configuration

app_specific_configuration_path names a file of rules for the applications that need them, which the repository has a start of in komorebic/applications.json. komorebic quickstart puts a copy where the example says, ~/.config/komorebi/applications.json; a path with no file behind it is skipped. Application specific configuration explains the format.

Padding

While you can set the workspace padding (the space between the outer edges of the windows and the edge of the monitor) and the container padding (the space between each of the tiled windows) for each workspace on its own, you can also set a default for both of these values that applies to all workspaces, using default_workspace_padding and default_container_padding.

The floating layer

floating_layer_behaviour is Float in the example: a window that opens while a workspace is on its floating layer floats, centered, where the default is to tile it. A window that opens while the workspace is on its tiling layer is tiled either way.

Layouts

BSP

+-------+-----+
|       |     |
|       +--+--+
|       |  |--|
+-------+--+--+

Vertical Stack

+-------+-----+
|       |     |
|       +-----+
|       |     |
+-------+-----+

RightMainVerticalStack

+-----+-------+
|     |       |
+-----+       |
|     |       |
+-----+-------+

Horizontal Stack

+------+------+
|             |
|------+------+
|      |      |
+------+------+

Columns

+--+--+--+--+
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
+--+--+--+--+

Rows

If you have a vertical monitor, I recommend using this layout.

+-----------+
|-----------|
|-----------|
|-----------|
+-----------+

Ultrawide Vertical Stack

If you have an ultrawide monitor, I recommend using this layout.

+-----+-----------+-----+
|     |           |     |
|     |           +-----+
|     |           |     |
|     |           +-----+
|     |           |     |
+-----+-----------+-----+

Grid

If you like the grid layout in LeftWM this is almost exactly the same!

The grid layout does not support resizing windows tiles.

+-----+-----+   +---+---+---+   +---+---+---+   +---+---+---+
|     |     |   |   |   |   |   |   |   |   |   |   |   |   |
|     |     |   |   |   |   |   |   |   |   |   |   |   +---+
+-----+-----+   |   +---+---+   +---+---+---+   +---+---|   |
|     |     |   |   |   |   |   |   |   |   |   |   |   +---+
|     |     |   |   |   |   |   |   |   |   |   |   |   |   |
+-----+-----+   +---+---+---+   +---+---+---+   +---+---+---+
  4 windows       5 windows       6 windows       7 windows

A NixOS configuration

The module and the sample key bindings of the repository, with every binding a static shortcut can be made one, and the engine for the rest:

{
  services.desktopManager.plasma6.enable = true;

  services.komorebi = {
    enable = true;
    keybindings = {
      format = "skhd";
      file = ./skhdrc;
      mode = "auto";
      # the names an skhdrc gives applications are those of macOS
      appAliases."Google Chrome" = [ "google-chrome" ];
    };
  };
}

The key bindings can also be written in the configuration itself:

{
  services.komorebi.keybindings = {
    format = "sxhkd";
    text = ''
      alt + {h,j,k,l}
          komorebic focus {left,down,up,right}
      alt + shift + {h,j,k,l}
          komorebic move {left,down,up,right}
    '';
  };
}

Key bindings

skhdrc.sample, whkdrc.sample and sxhkdrc.sample bind the same keys to the same komorebic commands in the three formats: focusing, moving, stacking and resizing windows, the layouts, and the workspaces. Each is a starting point for a file of your own, in the format you know. Their bindings are all plain ones, so with mode = "auto" every one of them is a static shortcut, and with the default mode, engine, the daemon runs every one.

Copy one to ~/.config/komorebi, where the daemon and komorebic hotkeys compile look for a key binding file when they are given none, to use it without NixOS:

mkdir -p ~/.config/komorebi
cp docs/skhdrc.sample ~/.config/komorebi/skhdrc