diff --git a/release/v0-1-22.html b/release/v0-1-22.html index 1898407d6..dd2905370 100644 --- a/release/v0-1-22.html +++ b/release/v0-1-22.html @@ -4304,7 +4304,7 @@

Gapless

1px border

A 1px border is drawn around the window edge. Users may see a gap for a single pixel, if the system theme has a transparent edge - this is the windows themed edge, and is not present for all applications.

-
  {
+
{
   "border_offset": 0,
   "border_width": 1
 }
diff --git a/search/search_index.json b/search/search_index.json
index 096ce41e4..d875df3ef 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"index.html","title":"Index","text":"

komorebi is a tiling window manager that works as an extension to Microsoft's Desktop Window Manager in Windows 10 and above.

komorebi allows you to control application windows, virtual workspaces and display monitors with a CLI which can be used with third-party software such as AutoHotKey to set user-defined keyboard shortcuts.

komorebi aims to make as few modifications as possible to the operating system and desktop environment by default. Users are free to make such modifications in their own configuration files for komorebi, but these will always remain opt-in and off-by-default.

There is a Discord server available for komorebi-related discussion, help, troubleshooting etc. If you have any specific feature requests or bugs to report, please create an issue on GitHub.

There is also a YouTube channel where I share komorebi live programming videos and tutorial videos.

"},{"location":"design.html","title":"Design","text":""},{"location":"design.html#description","title":"Description","text":"

komorebi only responds to WinEvents and the messages it receives on a dedicated socket.

komorebic is a CLI that writes messages on komorebi's socket.

komorebi doesn't handle any keyboard or mouse inputs; a third party program (e.g. whkd) is needed in order to translate keyboard and mouse events to komorebic commands.

This architecture, popularised by bspwm on Linux and yabai on macOS, is outlined as follows:

          PROCESS                SOCKET\nwhkd/ahk  -------->  komorebic  <------>  komorebi\n
"},{"location":"design.html#data-model","title":"Data Model","text":"

komorebi holds a list of physical monitors.

A monitor is just a rectangle of the available work area which contains one or more virtual workspaces.

A workspace holds a list of containers.

A container is just a rectangle where one or more application windows can be displayed.

This means that:

  • Every monitor has its own collection of virtual workspaces
  • Workspaces only know about containers and their dimensions, not about individual application windows
  • Every application window must belong to a container, even if that container only contains one application window
  • Many application windows can be stacked and cycled through in the same container within a workspace
"},{"location":"example-configurations.html","title":"Example configurations","text":"

komorebi, and tiling window managers in general, are very complex pieces of software.

In an attempt to reduce some of the initial configuration burden for users who are looking to try out the software for the first time, example configurations are provided and updated whenever appropriate.

"},{"location":"example-configurations.html#downloading-example-configurations","title":"Downloading example configurations","text":"

Run the following command to download example configuration files for komorebi and whkd. Pay attention to the output of the command to see where the example files have been downloaded. For most new users this will be in the $Env:USERPROFILE directory.

komorebic quickstart\n

With the example configurations downloaded, you can now start komorebi and `whkd.

komorebic start --whkd\n
"},{"location":"example-configurations.html#komorebijson","title":"komorebi.json","text":"

The example window manager configuration sets some sane defaults and provides five preconfigured workspaces on the primary monitor each with a different layout.

{\n\"$schema\": \"https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.25/schema.json\",\n\"app_specific_configuration_path\": \"$Env:USERPROFILE/applications.yaml\",\n\"window_hiding_behaviour\": \"Cloak\",\n\"cross_monitor_move_behaviour\": \"Insert\",\n\"default_workspace_padding\": 20,\n\"default_container_padding\": 20,\n\"border\": true,\n\"border_width\": 8,\n\"border_offset\": -1,\n\"border_colours\": {\n\"single\": \"#42a5f5\",\n\"stack\": \"#00a542\",\n\"monocle\": \"#ff3399\",\n\"unfocused\": \"#808080\"\n},\n\"stackbar\": {\n\"height\": 40,\n\"mode\": \"OnStack\",\n\"tabs\": {\n\"width\": 300,\n\"focused_text\": \"#00a542\",\n\"unfocused_text\": \"#b3b3b3\",\n\"background\": \"#141414\"\n}\n},\n\"monitors\": [\n{\n\"workspaces\": [\n{\n\"name\": \"I\",\n\"layout\": \"BSP\"\n},\n{\n\"name\": \"II\",\n\"layout\": \"VerticalStack\"\n},\n{\n\"name\": \"III\",\n\"layout\": \"HorizontalStack\"\n},\n{\n\"name\": \"IV\",\n\"layout\": \"UltrawideVerticalStack\"\n},\n{\n\"name\": \"V\",\n\"layout\": \"Rows\"\n},\n{\n\"name\": \"VI\",\n\"layout\": \"Grid\"\n},\n{\n\"name\": \"VII\",\n\"layout\": \"RightMainVerticalStack\"\n}\n]\n}\n]\n}\n
"},{"location":"example-configurations.html#application-specific-configuration","title":"Application-specific configuration","text":"

There is a community-maintained repository of \"apps behaving badly\" that do not conform to Windows application development guidelines and behave erratically when used with komorebi without additional configuration.

You can always download the latest version of these configurations by running komorebic fetch-asc. The output of this command will also provide a line that you can paste into komorebi.json to ensure that the window manager looks for the file in the correction location.

When installing and running komorebi for the first time, the komorebic quickstart command will usually download this file to the $Env:USERPROFILE directory.

"},{"location":"example-configurations.html#padding","title":"Padding","text":"

While you can set the workspace padding (the space between the outer edges of the windows and the bezel of your monitor) and the container padding (the space between each of the tiled windows) for each workspace independently, you can also set a default for both of these values that will apply to all workspaces using default_workspace_padding and default_container_padding.

"},{"location":"example-configurations.html#active-window-border","title":"Active window border","text":"

You may have seen videos and screenshots of people using komorebi with a thick, colourful active window border. You can also enable this by setting active_window_border to true. However, please be warned that this feature is a crude hack trying to compensate for the insistence of Microsoft Windows design teams to make custom borders with widths that are actually visible to the user a thing of the past and removing this capability from the Win32 API.

I know it's buggy, and I know that most of the it sucks, but this is something you should be bring up with the billion dollar company and not with me, the solo developer.

"},{"location":"example-configurations.html#border-colours","title":"Border colours","text":"

If you choose to use the active window border, you can set different colours to give you visual queues when you are focused on a single window, a stack of windows, or a window that is in monocole mode.

The example colours given are blue single, green for stack and pink for monocle.

"},{"location":"example-configurations.html#layouts","title":"Layouts","text":""},{"location":"example-configurations.html#bsp","title":"BSP","text":"
+-------+-----+\n|       |     |\n|       +--+--+\n|       |  |--|\n+-------+--+--+\n
"},{"location":"example-configurations.html#vertical-stack","title":"Vertical Stack","text":"
+-------+-----+\n|       |     |\n|       +-----+\n|       |     |\n+-------+-----+\n
"},{"location":"example-configurations.html#rightmainverticalstack","title":"RightMainVerticalStack","text":"
+-----+-------+\n|     |       |\n+-----+       |\n|     |       |\n+-----+-------+\n
"},{"location":"example-configurations.html#horizontal-stack","title":"Horizontal Stack","text":"
+------+------+\n|             |\n|------+------+\n|      |      |\n+------+------+\n
"},{"location":"example-configurations.html#columns","title":"Columns","text":"
+--+--+--+--+\n|  |  |  |  |\n|  |  |  |  |\n|  |  |  |  |\n+--+--+--+--+\n
"},{"location":"example-configurations.html#rows","title":"Rows","text":"

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

+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n
"},{"location":"example-configurations.html#ultrawide-vertical-stack","title":"Ultrawide Vertical Stack","text":"

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

+-----+-----------+-----+\n|     |           |     |\n|     |           +-----+\n|     |           |     |\n|     |           +-----+\n|     |           |     |\n+-----+-----------+-----+\n
"},{"location":"example-configurations.html#grid","title":"Grid","text":"

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

+-----+-----+   +---+---+---+   +---+---+---+   +---+---+---+\n|     |     |   |   |   |   |   |   |   |   |   |   |   |   |\n|     |     |   |   |   |   |   |   |   |   |   |   |   +---+\n+-----+-----+   |   +---+---+   +---+---+---+   +---+---|   |\n|     |     |   |   |   |   |   |   |   |   |   |   |   +---+\n|     |     |   |   |   |   |   |   |   |   |   |   |   |   |\n+-----+-----+   +---+---+---+   +---+---+---+   +---+---+---+\n  4 windows       5 windows       6 windows       7 windows\n
"},{"location":"example-configurations.html#whkdrc","title":"whkdrc","text":"

whkd is a fairly basic piece of software with a simple configuration format: key bindings go to the left of the colon, and shell commands go to the right of the colon. By default, the whkdrc file should be located in the $Env:USERPROFILE/.config/ directory.

Please remember that whkd does not support overriding Microsoft's limitations on hotkey bindings that include the Windows key. If this is important to you, I recommend using AutoHotKey to set up your key bindings for komorebic commands instead.

.shell powershell\n\n# Reload whkd configuration\n# alt + o                 : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd\nalt + o                 : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell\nalt + shift + o         : komorebic reload-configuration\n\n# App shortcuts - these require shell to be pwsh / powershell\n# The apps will be focused if open, or launched if not open\n# alt + f                 : if ($wshell.AppActivate('Firefox') -eq $False) { start firefox }\n# alt + b                 : if ($wshell.AppActivate('Chrome') -eq $False) { start chrome }\n\nalt + q                 : komorebic close\nalt + m                 : komorebic minimize\n\n# Focus windows\nalt + h                 : komorebic focus left\nalt + j                 : komorebic focus down\nalt + k                 : komorebic focus up\nalt + l                 : komorebic focus right\nalt + shift + oem_4     : komorebic cycle-focus previous # oem_4 is [\nalt + shift + oem_6     : komorebic cycle-focus next # oem_6 is ]\n\n# Move windows\nalt + shift + h         : komorebic move left\nalt + shift + j         : komorebic move down\nalt + shift + k         : komorebic move up\nalt + shift + l         : komorebic move right\nalt + shift + return    : komorebic promote\n\n# Stack windows\nalt + left              : komorebic stack left\nalt + down              : komorebic stack down\nalt + up                : komorebic stack up\nalt + right             : komorebic stack right\nalt + oem_1             : komorebic unstack # oem_1 is ;\nalt + oem_4             : komorebic cycle-stack previous # oem_4 is [\nalt + oem_6             : komorebic cycle-stack next # oem_6 is ]\n\n# Resize\nalt + oem_plus          : komorebic resize-axis horizontal increase\nalt + oem_minus         : komorebic resize-axis horizontal decrease\nalt + shift + oem_plus  : komorebic resize-axis vertical increase\nalt + shift + oem_minus : komorebic resize-axis vertical decrease\n\n# Manipulate windows\nalt + t                 : komorebic toggle-float\nalt + shift + f         : komorebic toggle-monocle\n\n# Window manager options\nalt + shift + r         : komorebic retile\nalt + p                 : komorebic toggle-pause\n\n# Layouts\nalt + x                 : komorebic flip-layout horizontal\nalt + y                 : komorebic flip-layout vertical\n\n# Workspaces\nalt + 1                 : komorebic focus-workspace 0\nalt + 2                 : komorebic focus-workspace 1\nalt + 3                 : komorebic focus-workspace 2\nalt + 4                 : komorebic focus-workspace 3\nalt + 5                 : komorebic focus-workspace 4\nalt + 6                 : komorebic focus-workspace 5\nalt + 7                 : komorebic focus-workspace 6\nalt + 8                 : komorebic focus-workspace 7\n\n# Move windows across workspaces\nalt + shift + 1         : komorebic move-to-workspace 0\nalt + shift + 2         : komorebic move-to-workspace 1\nalt + shift + 3         : komorebic move-to-workspace 2\nalt + shift + 4         : komorebic move-to-workspace 3\nalt + shift + 5         : komorebic move-to-workspace 4\nalt + shift + 6         : komorebic move-to-workspace 5\nalt + shift + 7         : komorebic move-to-workspace 6\nalt + shift + 8         : komorebic move-to-workspace 7\n
"},{"location":"example-configurations.html#setting-shell","title":"Setting .shell","text":"

There is one special directive at the top of the file, .shell which can be set to either powershell, pwsh or cmd. Which one you use will depend on which shell you use in your terminal.

  • powershell - set this if you are using the version of PowerShell that comes installed with Windows 10+ (the executable file for this is powershell.exe)

  • pwsh - set this if you are using PowerShell 7+, which you have installed yourself either through the Windows Store or WinGet (the executable file for this is pwsh.exe)

  • cmd - set this if you don't want to use PowerShell at all and instead you want to call commands through the shell used by the old-school Command Prompt (the executable file for this is cmd.exe)

"},{"location":"example-configurations.html#key-codes","title":"Key codes","text":"

Key codes for alphanumeric and arrow keys are just what you would expect. For punctuation and other keys, please refer to the Virtual Key Codes reference.

If you want to use one of those key codes, put them into lower case and remove the VK_ prefix. For example, the keycode VK_OEM_PLUS becomes oem_plus in the sample configuration above.

"},{"location":"installation.html","title":"Getting started","text":"

komorebi is a tiling window manager for Windows that is comprised comprised of two main binaries, komorebi.exe, which contains the window manager itself, and komorebic.exe, which is the main way to send commands to the tiling window manager.

It is important to note that neither komorebi.exe or komorebic.exe handle key bindings, because komorebi is a tiling window manager and not a hotkey daemon.

This getting started guide suggests the installation of whkd to allow you to bind komorebic.exe commands to hotkeys to allow you to communicate with the tiling window manager using keyboard shortcuts.

However, whkd is a very simple hotkey daemon, and notably, does not include workarounds for Microsoft's restrictions on hotkey combinations that can use the Windows key.

If using hotkey combinations with the Windows key is important to you, I suggest that once you are familiar with the main komorebic.exe commands used to manipulate the window manager, you use AutoHotKey to handle your key bindings.

"},{"location":"installation.html#installation","title":"Installation","text":"

komorebi is available pre-built to install via Scoop and WinGet, and you may also built it from source if you would prefer.

  • Scoop
  • WinGet
  • Building from source
  • Offline
"},{"location":"installation.html#long-path-support","title":"Long path support","text":"

It highly recommended that you enable support for long paths in Windows by running the following command in an Administrator Terminal before installing komorebi.

Set-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem' -Name 'LongPathsEnabled' -Value 1\n
"},{"location":"installation.html#disabling-unnecessary-system-animations","title":"Disabling unnecessary system animations","text":"

It is highly recommended that you enable the \"Turn off all unnecessary animations (when possible)\" option in \"Control Panel > Ease of Access > Ease of Access Centre / Make the computer easier to see\" for the best performance with komorebi.

"},{"location":"installation.html#scoop","title":"Scoop","text":"

Make sure you have installed scoop and verified that installed binaries are available in your $PATH before proceeding.

Issues with komorebi and related commands not being recognized in the terminal ultimately come down to the $PATH environment variable not being correctly configured by your package manager and should not be raised as bugs or issues either on the komorebi GitHub repository or Discord server.

"},{"location":"installation.html#install-komorebi-and-whkd","title":"Install komorebi and whkd","text":"

First add the extras bucket

scoop bucket add extras\n

Then install the komorebi and whkd packages using scoop install

scoop install komorebi whkd\n

Once komorebi is installed, proceed to get the example configurations.

"},{"location":"installation.html#winget","title":"WinGet","text":"

Make sure you have installed the latest version of winget and verified that installed binaries are available in your $PATH before proceeding.

Issues with komorebi and related commands not being recognized in the terminal ultimately come down to the $PATH environment variable not being correctly configured by your package manager and should not be raised as bugs or issues either on the komorebi GitHub repository or Discord server.

"},{"location":"installation.html#install-komorebi-and-whkd_1","title":"Install komorebi and whkd","text":"

Install the komorebi and whkd packages using winget install

winget install LGUG2Z.komorebi\nwinget install LGUG2Z.whkd\n

Once komorebi is installed, proceed to get the example configurations.

"},{"location":"installation.html#building-from-source","title":"Building from source","text":"

Make sure you have installed rustup, a stable rust compiler toolchain, and the Visual Studio Visual Studio prerequisites.

Clone the git repository, enter the directory, and build the following binaries:

cargo +stable install --path komorebi --locked\ncargo +stable install --path komorebic --locked\ncargo +stable install --path komorebic-no-console --locked\ncargo +stable install --path komorebi-gui --locked\n

If the binaries have been built and added to your $PATH correctly, you should see some output when running komorebi --help and komorebic --help

"},{"location":"installation.html#offline","title":"Offline","text":"

Download the latest komorebi and whkd MSI installers on an internet-connected computer, then copy them to an offline machine to install.

Once installed, proceed to get the example configurations (none of the commands for first-time set up and running komorebi require an internet connection).

"},{"location":"troubleshooting.html","title":"Troubleshooting","text":""},{"location":"troubleshooting.html#autohotkey-executable-not-found","title":"AutoHotKey executable not found","text":"

If you try to start komorebi with AHK using komorebic start --ahk, and you have not installed AHK using scoop, you'll probably receive an error:

Error: could not find autohotkey, please make sure it is installed before using the --ahk flag\n

Depending on how AHK is installed the executable on your system may have a different name. In order to account for this, you may set the KOMOREBI_AHK_EXE environment variable in your PowerShell profile to match the name of the executable as it is found on your system.

After setting KOMOREBI_AHK_EXE make sure to either reload your PowerShell profile or open a new terminal tab.

"},{"location":"troubleshooting.html#komorebi-is-unresponsive-when-the-display-wakes-from-sleep","title":"Komorebi is unresponsive when the display wakes from sleep","text":"

This can happen in rare cases when your monitor state is not preserved after it wakes from sleep.

"},{"location":"troubleshooting.html#problem","title":"Problem","text":"

Your hotkeys in whkd work, but it feels as if komorebi knows nothing about the previous state (you can't control previous windows, although newly launched ones can be manipulated as normal).

"},{"location":"troubleshooting.html#solution","title":"Solution","text":"

Some monitors, such as the Samsung G8/G9 (LED, Neo, OLED) have an adaptive sync or variable refresh rate setting within the actual monitor OSD that can disrupt how the device is persisted in the komorebi state following suspension.

To fix this, please try to disable Adaptive Sync or any other VRR branded alias by referring to the manufacturer's documentation.

Warning

Disabling VRR within Windows (e.g. Nvidia Control Panel) may work and can indeed change the configuration you see within your monitor's OSD, but some monitors will re-enable the setting regardless following suspension.

"},{"location":"troubleshooting.html#reproducing","title":"Reproducing","text":"

Ensure komorebi is in an operational state by executing komorebic start as normal.

If komorebi is already unresponsive, then please restart komorebi first by running komorebic stop and komorebic start.

  1. komorebic state
{\n\"monitors\": {\n\"elements\": [\n{\n\"id\": 65537,\n\"name\": \"DISPLAY1\",\n\"device\": \"SAM71AA\",\n\"device_id\": \"SAM71AA-5&a1a3e88&0&UID24834\",\n\"size\": {\n\"left\": 0,\n\"top\": 0,\n\"right\": 5120,\n\"bottom\": 1440\n}\n}\n]\n}\n}\n

This appears to be fine -- komorebi is aware of the device and associated window handles.

  1. Let your display go to sleep.

Simply turning the monitor off is not enough to reproduce the problem; you must let Windows turn off the display itself.

To avoid waiting an eternity:

  • Control Panel -> Hardware and Sound -> Power Options -> Edit Plan Settings

    Turn off the display: 1 minute

Allow a minute for the display to reset, then once it actually shuts off allow for any additional time as prompted by your monitor for the cycle to complete.

  1. Wake your display again by pressing any key.

komorebi should now be unresponsive.

  1. komorebic state

Don't stop komorebi just yet.

Since it's unresponsive, you can open another shell instead to execute the above command.

{\n\"monitors\": {\n\"elements\": [\n{\n\"id\": 65537,\n\"name\": \"DISPLAY1\",\n\"device\": null,\n\"device_id\": null\n}\n]\n}\n}\n

We can see the komorebi state is no longer associated with the previous device: null, suggesting an issue when the display resumes from a suspended state.

"},{"location":"cli/adjust-container-padding.html","title":"adjust-container-padding","text":"
Adjust container padding on the focused workspace\n\nUsage: komorebic.exe adjust-container-padding <SIZING> <ADJUSTMENT>\n\nArguments:\n  <SIZING>\n          [possible values: increase, decrease]\n\n  <ADJUSTMENT>\n          Pixels to adjust by as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/adjust-workspace-padding.html","title":"adjust-workspace-padding","text":"
Adjust workspace padding on the focused workspace\n\nUsage: komorebic.exe adjust-workspace-padding <SIZING> <ADJUSTMENT>\n\nArguments:\n  <SIZING>\n          [possible values: increase, decrease]\n\n  <ADJUSTMENT>\n          Pixels to adjust by as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/ahk-app-specific-configuration.html","title":"ahk-app-specific-configuration","text":"
Generate common app-specific configurations and fixes to use in komorebi.ahk\n\nUsage: komorebic.exe ahk-app-specific-configuration <PATH> [OVERRIDE_PATH]\n\nArguments:\n  <PATH>\n          YAML file from which the application-specific configurations should be loaded\n\n  [OVERRIDE_PATH]\n          Optional YAML file of overrides to apply over the first file\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/ahk-library.html","title":"ahk-library","text":"
Generate a library of AutoHotKey helper functions\n\nUsage: komorebic.exe ahk-library\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/application-specific-configuration-schema.html","title":"application-specific-configuration-schema","text":"
Generate a JSON Schema for applications.yaml\n\nUsage: komorebic.exe application-specific-configuration-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/border-colour.html","title":"border-colour","text":"
Set the colour for a window border kind\n\nUsage: komorebic.exe border-colour [OPTIONS] <R> <G> <B>\n\nArguments:\n  <R>\n          Red\n\n  <G>\n          Green\n\n  <B>\n          Blue\n\nOptions:\n  -w, --window-kind <WINDOW_KIND>\n          [default: single]\n          [possible values: single, stack, monocle, unfocused]\n\n  -h, --help\n          Print help\n
"},{"location":"cli/border-offset.html","title":"border-offset","text":"
Set the border offset\n\nUsage: komorebic.exe border-offset <OFFSET>\n\nArguments:\n  <OFFSET>\n          Desired offset of the window border\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/border-width.html","title":"border-width","text":"
Set the border width\n\nUsage: komorebic.exe border-width <WIDTH>\n\nArguments:\n  <WIDTH>\n          Desired width of the window border\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/border.html","title":"border","text":"
Enable or disable borders\n\nUsage: komorebic.exe border <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/change-layout.html","title":"change-layout","text":"
Set the layout on the focused workspace\n\nUsage: komorebic.exe change-layout <DEFAULT_LAYOUT>\n\nArguments:\n  <DEFAULT_LAYOUT>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/check.html","title":"check","text":"
Check komorebi configuration and related files for common errors\n\nUsage: komorebic.exe check\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/clear-named-workspace-layout-rules.html","title":"clear-named-workspace-layout-rules","text":"
Clear all dynamic layout rules for the specified workspace\n\nUsage: komorebic.exe clear-named-workspace-layout-rules <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/clear-workspace-layout-rules.html","title":"clear-workspace-layout-rules","text":"
Clear all dynamic layout rules for the specified workspace\n\nUsage: komorebic.exe clear-workspace-layout-rules <MONITOR> <WORKSPACE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/close.html","title":"close","text":"
Close the focused window\n\nUsage: komorebic.exe close\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/complete-configuration.html","title":"complete-configuration","text":"
Signal that the final configuration option has been sent\n\nUsage: komorebic.exe complete-configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/configuration.html","title":"configuration","text":"
Show the path to komorebi.json\n\nUsage: komorebic.exe configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/container-padding.html","title":"container-padding","text":"
Set the container padding for the specified workspace\n\nUsage: komorebic.exe container-padding <MONITOR> <WORKSPACE> <SIZE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cross-monitor-move-behaviour.html","title":"cross-monitor-move-behaviour","text":"
Set the behaviour when moving windows across monitor boundaries\n\nUsage: komorebic.exe cross-monitor-move-behaviour <MOVE_BEHAVIOUR>\n\nArguments:\n  <MOVE_BEHAVIOUR>\n          Possible values:\n          - swap:   Swap the window container with the window container at the edge of the adjacent monitor\n          - insert: Insert the window container into the focused workspace on the adjacent monitor\n          - no-op:  Do nothing if trying to move a window container in the direction of an adjacent monitor\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/cycle-focus.html","title":"cycle-focus","text":"
Change focus to the window in the specified cycle direction\n\nUsage: komorebic.exe cycle-focus <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-layout.html","title":"cycle-layout","text":"
Cycle between available layouts\n\nUsage: komorebic.exe cycle-layout <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-monitor.html","title":"cycle-monitor","text":"
Focus the monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move-to-monitor.html","title":"cycle-move-to-monitor","text":"
Move the focused window to the monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-move-to-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move-to-workspace.html","title":"cycle-move-to-workspace","text":"
Move the focused window to the workspace in the given cycle direction\n\nUsage: komorebic.exe cycle-move-to-workspace <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move-workspace-to-monitor.html","title":"cycle-move-workspace-to-monitor","text":"
Move the focused workspace monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-move-workspace-to-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move.html","title":"cycle-move","text":"
Move the focused window in the specified cycle direction\n\nUsage: komorebic.exe cycle-move <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-send-to-monitor.html","title":"cycle-send-to-monitor","text":"
Send the focused window to the monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-send-to-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-send-to-workspace.html","title":"cycle-send-to-workspace","text":"
Send the focused window to the workspace in the given cycle direction\n\nUsage: komorebic.exe cycle-send-to-workspace <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-stack.html","title":"cycle-stack","text":"
Cycle the focused stack in the specified cycle direction\n\nUsage: komorebic.exe cycle-stack <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-workspace.html","title":"cycle-workspace","text":"
Focus the workspace in the given cycle direction\n\nUsage: komorebic.exe cycle-workspace <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/disable-autostart.html","title":"disable-autostart","text":"
Deletes the komorebi.lnk shortcut in shell:startup to disable autostart\n\nUsage: komorebic.exe disable-autostart\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/display-index-preference.html","title":"display-index-preference","text":"
Set the display index preference for a monitor identified using its display name\n\nUsage: komorebic.exe display-index-preference <INDEX_PREFERENCE> <DISPLAY>\n\nArguments:\n  <INDEX_PREFERENCE>\n          Preferred monitor index (zero-indexed)\n\n  <DISPLAY>\n          Display name as identified in komorebic state\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/enable-autostart.html","title":"enable-autostart","text":"
Generates the komorebi.lnk shortcut in shell:startup to autostart komorebi\n\nUsage: komorebic.exe enable-autostart [OPTIONS]\n\nOptions:\n  -c, --config <CONFIG>\n          Path to a static configuration JSON file\n\n  -f, --ffm\n          Enable komorebi's custom focus-follows-mouse implementation\n\n      --whkd\n          Enable autostart of whkd\n\n      --ahk\n          Enable autostart of ahk\n\n  -h, --help\n          Print help\n
"},{"location":"cli/ensure-named-workspaces.html","title":"ensure-named-workspaces","text":"
Create these many named workspaces for the specified monitor\n\nUsage: komorebic.exe ensure-named-workspaces <MONITOR> [NAMES]...\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  [NAMES]...\n          Names of desired workspaces\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/ensure-workspaces.html","title":"ensure-workspaces","text":"
Create at least this many workspaces for the specified monitor\n\nUsage: komorebic.exe ensure-workspaces <MONITOR> <WORKSPACE_COUNT>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE_COUNT>\n          Number of desired workspaces\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/fetch-app-specific-configuration.html","title":"fetch-app-specific-configuration","text":"
Fetch the latest version of applications.yaml from komorebi-application-specific-configuration\n\nUsage: komorebic.exe fetch-app-specific-configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/flip-layout.html","title":"flip-layout","text":"
Flip the layout on the focused workspace (BSP only)\n\nUsage: komorebic.exe flip-layout <AXIS>\n\nArguments:\n  <AXIS>\n          [possible values: horizontal, vertical, horizontal-and-vertical]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/float-rule.html","title":"float-rule","text":"
Add a rule to always float the specified application\n\nUsage: komorebic.exe float-rule <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-follows-mouse.html","title":"focus-follows-mouse","text":"
Enable or disable focus follows mouse for the operating system\n\nUsage: komorebic.exe focus-follows-mouse [OPTIONS] <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -i, --implementation <IMPLEMENTATION>\n          [default: windows]\n\n          Possible values:\n          - komorebi: A custom FFM implementation (slightly more CPU-intensive)\n          - windows:  The native (legacy) Windows FFM implementation\n\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/focus-last-workspace.html","title":"focus-last-workspace","text":"
Focus the last focused workspace on the focused monitor\n\nUsage: komorebic.exe focus-last-workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-monitor-workspace.html","title":"focus-monitor-workspace","text":"
Focus the specified workspace on the target monitor\n\nUsage: komorebic.exe focus-monitor-workspace <TARGET_MONITOR> <TARGET_WORKSPACE>\n\nArguments:\n  <TARGET_MONITOR>\n          Target monitor index (zero-indexed)\n\n  <TARGET_WORKSPACE>\n          Workspace index on the target monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-monitor.html","title":"focus-monitor","text":"
Focus the specified monitor\n\nUsage: komorebic.exe focus-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-named-workspace.html","title":"focus-named-workspace","text":"
Focus the specified workspace\n\nUsage: komorebic.exe focus-named-workspace <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-workspace.html","title":"focus-workspace","text":"
Focus the specified workspace on the focused monitor\n\nUsage: komorebic.exe focus-workspace <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-workspaces.html","title":"focus-workspaces","text":"
Focus the specified workspace on all monitors\n\nUsage: komorebic.exe focus-workspaces <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus.html","title":"focus","text":"
Change focus to the window in the specified direction\n\nUsage: komorebic.exe focus <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focused-workspace-container-padding.html","title":"focused-workspace-container-padding","text":"
Set container padding on the focused workspace\n\nUsage: komorebic.exe focused-workspace-container-padding <SIZE>\n\nArguments:\n  <SIZE>\n          Pixels size to set as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focused-workspace-padding.html","title":"focused-workspace-padding","text":"
Set workspace padding on the focused workspace\n\nUsage: komorebic.exe focused-workspace-padding <SIZE>\n\nArguments:\n  <SIZE>\n          Pixels size to set as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/force-focus.html","title":"force-focus","text":"
Forcibly focus the window at the cursor with a left mouse click\n\nUsage: komorebic.exe force-focus\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/format-app-specific-configuration.html","title":"format-app-specific-configuration","text":"
Format a YAML file for use with the 'ahk-app-specific-configuration' command\n\nUsage: komorebic.exe format-app-specific-configuration <PATH>\n\nArguments:\n  <PATH>\n          YAML file from which the application-specific configurations should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/generate-static-config.html","title":"generate-static-config","text":"
Generates a static configuration JSON file based on the current window manager state\n\nUsage: komorebic.exe generate-static-config\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/global-state.html","title":"global-state","text":"
Show a JSON representation of the current global state\n\nUsage: komorebic.exe global-state\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/global-work-area-offset.html","title":"global-work-area-offset","text":"
Set offsets to exclude parts of the work area from tiling\n\nUsage: komorebic.exe global-work-area-offset <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <LEFT>\n          Size of the left work area offset (set right to left * 2 to maintain right padding)\n\n  <TOP>\n          Size of the top work area offset (set bottom to the same value to maintain bottom padding)\n\n  <RIGHT>\n          Size of the right work area offset\n\n  <BOTTOM>\n          Size of the bottom work area offset\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/gui.html","title":"gui","text":"
Launch the komorebi-gui debugging tool\n\nUsage: komorebic.exe gui\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/identify-layered-application.html","title":"identify-layered-application","text":"
Identify an application that has WS_EX_LAYERED, but should still be managed\n\nUsage: komorebic.exe identify-layered-application <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/identify-object-name-change-application.html","title":"identify-object-name-change-application","text":"
Identify an application that sends EVENT_OBJECT_NAMECHANGE on launch\n\nUsage: komorebic.exe identify-object-name-change-application <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/identify-tray-application.html","title":"identify-tray-application","text":"
Identify an application that closes to the system tray\n\nUsage: komorebic.exe identify-tray-application <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/initial-named-workspace-rule.html","title":"initial-named-workspace-rule","text":"
Add a rule to associate an application with a named workspace on first show\n\nUsage: komorebic.exe initial-named-workspace-rule <IDENTIFIER> <ID> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <WORKSPACE>\n          Name of a workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/initial-workspace-rule.html","title":"initial-workspace-rule","text":"
Add a rule to associate an application with a workspace on first show\n\nUsage: komorebic.exe initial-workspace-rule <IDENTIFIER> <ID> <MONITOR> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/invisible-borders.html","title":"invisible-borders","text":"
Set the invisible border dimensions around each window\n\nUsage: komorebic.exe invisible-borders <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <LEFT>\n          Size of the left invisible border\n\n  <TOP>\n          Size of the top invisible border (usually 0)\n\n  <RIGHT>\n          Size of the right invisible border (usually left * 2)\n\n  <BOTTOM>\n          Size of the bottom invisible border (usually the same as left)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/load-custom-layout.html","title":"load-custom-layout","text":"
Load a custom layout from file for the focused workspace\n\nUsage: komorebic.exe load-custom-layout <PATH>\n\nArguments:\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/load-resize.html","title":"load-resize","text":"
Load the resize layout dimensions from a file\n\nUsage: komorebic.exe load-resize <PATH>\n\nArguments:\n  <PATH>\n          File from which the resize layout dimensions should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/log.html","title":"log","text":"
Tail komorebi.exe's process logs (cancel with Ctrl-C)\n\nUsage: komorebic.exe log\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/manage-rule.html","title":"manage-rule","text":"
Add a rule to always manage the specified application\n\nUsage: komorebic.exe manage-rule <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/manage.html","title":"manage","text":"
Force komorebi to manage the focused window\n\nUsage: komorebic.exe manage\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/minimize.html","title":"minimize","text":"
Minimize the focused window\n\nUsage: komorebic.exe minimize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/monitor-index-preference.html","title":"monitor-index-preference","text":"
Set the monitor index preference for a monitor identified using its size\n\nUsage: komorebic.exe monitor-index-preference <INDEX_PREFERENCE> <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <INDEX_PREFERENCE>\n          Preferred monitor index (zero-indexed)\n\n  <LEFT>\n          Left value of the monitor's size Rect\n\n  <TOP>\n          Top value of the monitor's size Rect\n\n  <RIGHT>\n          Right value of the monitor's size Rect\n\n  <BOTTOM>\n          Bottom value of the monitor's size Rect\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/monitor-work-area-offset.html","title":"monitor-work-area-offset","text":"
Set offsets for a monitor to exclude parts of the work area from tiling\n\nUsage: komorebic.exe monitor-work-area-offset <MONITOR> <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <LEFT>\n          Size of the left work area offset (set right to left * 2 to maintain right padding)\n\n  <TOP>\n          Size of the top work area offset (set bottom to the same value to maintain bottom padding)\n\n  <RIGHT>\n          Size of the right work area offset\n\n  <BOTTOM>\n          Size of the bottom work area offset\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/mouse-follows-focus.html","title":"mouse-follows-focus","text":"
Enable or disable mouse follows focus on all workspaces\n\nUsage: komorebic.exe mouse-follows-focus <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-monitor-workspace.html","title":"move-to-monitor-workspace","text":"
Move the focused window to the specified monitor workspace\n\nUsage: komorebic.exe move-to-monitor-workspace <TARGET_MONITOR> <TARGET_WORKSPACE>\n\nArguments:\n  <TARGET_MONITOR>\n          Target monitor index (zero-indexed)\n\n  <TARGET_WORKSPACE>\n          Workspace index on the target monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-monitor.html","title":"move-to-monitor","text":"
Move the focused window to the specified monitor\n\nUsage: komorebic.exe move-to-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-named-workspace.html","title":"move-to-named-workspace","text":"
Move the focused window to the specified workspace\n\nUsage: komorebic.exe move-to-named-workspace <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-workspace.html","title":"move-to-workspace","text":"
Move the focused window to the specified workspace\n\nUsage: komorebic.exe move-to-workspace <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-workspace-to-monitor.html","title":"move-workspace-to-monitor","text":"
Move the focused workspace to the specified monitor\n\nUsage: komorebic.exe move-workspace-to-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move.html","title":"move","text":"
Move the focused window in the specified direction\n\nUsage: komorebic.exe move <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-container-padding.html","title":"named-workspace-container-padding","text":"
Set the container padding for the specified workspace\n\nUsage: komorebic.exe named-workspace-container-padding <WORKSPACE> <SIZE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-custom-layout-rule.html","title":"named-workspace-custom-layout-rule","text":"
Add a dynamic custom layout for the specified workspace\n\nUsage: komorebic.exe named-workspace-custom-layout-rule <WORKSPACE> <AT_CONTAINER_COUNT> <PATH>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-custom-layout.html","title":"named-workspace-custom-layout","text":"
Set a custom layout for the specified workspace\n\nUsage: komorebic.exe named-workspace-custom-layout <WORKSPACE> <PATH>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-layout-rule.html","title":"named-workspace-layout-rule","text":"
Add a dynamic layout rule for the specified workspace\n\nUsage: komorebic.exe named-workspace-layout-rule <WORKSPACE> <AT_CONTAINER_COUNT> <LAYOUT>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <LAYOUT>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-layout.html","title":"named-workspace-layout","text":"
Set the layout for the specified workspace\n\nUsage: komorebic.exe named-workspace-layout <WORKSPACE> <VALUE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <VALUE>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-padding.html","title":"named-workspace-padding","text":"
Set the workspace padding for the specified workspace\n\nUsage: komorebic.exe named-workspace-padding <WORKSPACE> <SIZE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-rule.html","title":"named-workspace-rule","text":"
Add a rule to associate an application with a named workspace\n\nUsage: komorebic.exe named-workspace-rule <IDENTIFIER> <ID> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <WORKSPACE>\n          Name of a workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-tiling.html","title":"named-workspace-tiling","text":"
Enable or disable window tiling for the specified workspace\n\nUsage: komorebic.exe named-workspace-tiling <WORKSPACE> <VALUE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <VALUE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/new-workspace.html","title":"new-workspace","text":"
Create and append a new workspace on the focused monitor\n\nUsage: komorebic.exe new-workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/notification-schema.html","title":"notification-schema","text":"
Generate a JSON Schema of subscription notifications\n\nUsage: komorebic.exe notification-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/promote-focus.html","title":"promote-focus","text":"
Promote the user focus to the top of the tree\n\nUsage: komorebic.exe promote-focus\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/promote-window.html","title":"promote-window","text":"
Promote the window in the specified direction\n\nUsage: komorebic.exe promote-window <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/promote.html","title":"promote","text":"
Promote the focused window to the top of the tree\n\nUsage: komorebic.exe promote\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/pwsh-app-specific-configuration.html","title":"pwsh-app-specific-configuration","text":"
Generate common app-specific configurations and fixes in a PowerShell script\n\nUsage: komorebic.exe pwsh-app-specific-configuration <PATH> [OVERRIDE_PATH]\n\nArguments:\n  <PATH>\n          YAML file from which the application-specific configurations should be loaded\n\n  [OVERRIDE_PATH]\n          Optional YAML file of overrides to apply over the first file\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/query.html","title":"query","text":"
Query the current window manager state\n\nUsage: komorebic.exe query <STATE_QUERY>\n\nArguments:\n  <STATE_QUERY>\n          [possible values: focused-monitor-index, focused-workspace-index, focused-container-index, focused-window-index]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/quick-load-resize.html","title":"quick-load-resize","text":"
Load the last quicksaved resize layout dimensions\n\nUsage: komorebic.exe quick-load-resize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/quick-save-resize.html","title":"quick-save-resize","text":"
Quicksave the current resize layout dimensions\n\nUsage: komorebic.exe quick-save-resize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/quickstart.html","title":"quickstart","text":"
Gather example configurations for a new-user quickstart\n\nUsage: komorebic.exe quickstart\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/reload-configuration.html","title":"reload-configuration","text":"
Reload ~/komorebi.ahk (if it exists)\n\nUsage: komorebic.exe reload-configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/remove-title-bar.html","title":"remove-title-bar","text":"
Whitelist an application for title bar removal\n\nUsage: komorebic.exe remove-title-bar <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/resize-axis.html","title":"resize-axis","text":"
Resize the focused window or primary column along the specified axis\n\nUsage: komorebic.exe resize-axis <AXIS> <SIZING>\n\nArguments:\n  <AXIS>\n          [possible values: horizontal, vertical, horizontal-and-vertical]\n\n  <SIZING>\n          [possible values: increase, decrease]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/resize-delta.html","title":"resize-delta","text":"
Set the resize delta (used by resize-edge and resize-axis)\n\nUsage: komorebic.exe resize-delta <PIXELS>\n\nArguments:\n  <PIXELS>\n          The delta of pixels by which to increase or decrease window dimensions when resizing\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/resize-edge.html","title":"resize-edge","text":"
Resize the focused window in the specified direction\n\nUsage: komorebic.exe resize-edge <EDGE> <SIZING>\n\nArguments:\n  <EDGE>\n          [possible values: left, right, up, down]\n\n  <SIZING>\n          [possible values: increase, decrease]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/restore-windows.html","title":"restore-windows","text":"
Restore all hidden windows (debugging command)\n\nUsage: komorebic.exe restore-windows\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/retile.html","title":"retile","text":"
Force the retiling of all managed windows\n\nUsage: komorebic.exe retile\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/save-resize.html","title":"save-resize","text":"
Save the current resize layout dimensions to a file\n\nUsage: komorebic.exe save-resize <PATH>\n\nArguments:\n  <PATH>\n          File to which the resize layout dimensions should be saved\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-monitor-workspace.html","title":"send-to-monitor-workspace","text":"
Send the focused window to the specified monitor workspace\n\nUsage: komorebic.exe send-to-monitor-workspace <TARGET_MONITOR> <TARGET_WORKSPACE>\n\nArguments:\n  <TARGET_MONITOR>\n          Target monitor index (zero-indexed)\n\n  <TARGET_WORKSPACE>\n          Workspace index on the target monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-monitor.html","title":"send-to-monitor","text":"
Send the focused window to the specified monitor\n\nUsage: komorebic.exe send-to-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-named-workspace.html","title":"send-to-named-workspace","text":"
Send the focused window to the specified workspace\n\nUsage: komorebic.exe send-to-named-workspace <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-workspace.html","title":"send-to-workspace","text":"
Send the focused window to the specified workspace\n\nUsage: komorebic.exe send-to-workspace <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/socket-schema.html","title":"socket-schema","text":"
Generate a JSON Schema of socket messages\n\nUsage: komorebic.exe socket-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/stack.html","title":"stack","text":"
Stack the focused window in the specified direction\n\nUsage: komorebic.exe stack <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/start.html","title":"start","text":"
Start komorebi.exe as a background process\n\nUsage: komorebic.exe start [OPTIONS]\n\nOptions:\n  -f, --ffm\n          Allow the use of komorebi's custom focus-follows-mouse implementation\n\n  -c, --config <CONFIG>\n          Path to a static configuration JSON file\n\n  -a, --await-configuration\n          Wait for 'komorebic complete-configuration' to be sent before processing events\n\n  -t, --tcp-port <TCP_PORT>\n          Start a TCP server on the given port to allow the direct sending of SocketMessages\n\n      --whkd\n          Start whkd in a background process\n\n      --ahk\n          Start autohotkey configuration file\n\n  -h, --help\n          Print help\n
"},{"location":"cli/state.html","title":"state","text":"
Show a JSON representation of the current window manager state\n\nUsage: komorebic.exe state\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/static-config-schema.html","title":"static-config-schema","text":"
Generate a JSON Schema of the static configuration file\n\nUsage: komorebic.exe static-config-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/stop.html","title":"stop","text":"
Stop the komorebi.exe process and restore all hidden windows\n\nUsage: komorebic.exe stop [OPTIONS]\n\nOptions:\n      --whkd\n          Stop whkd if it is running as a background process\n\n  -h, --help\n          Print help\n
"},{"location":"cli/subscribe-pipe.html","title":"subscribe-pipe","text":"
Subscribe to komorebi events using a Named Pipe\n\nUsage: komorebic.exe subscribe-pipe <NAMED_PIPE>\n\nArguments:\n  <NAMED_PIPE>\n          Name of the pipe to send event notifications to (without \"\\\\.\\pipe\\\" prepended)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/subscribe-socket.html","title":"subscribe-socket","text":"
Subscribe to komorebi events using a Unix Domain Socket\n\nUsage: komorebic.exe subscribe-socket <SOCKET>\n\nArguments:\n  <SOCKET>\n          Name of the socket to send event notifications to\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/swap-workspaces-with-monitor.html","title":"swap-workspaces-with-monitor","text":"
Swap focused monitor workspaces with specified monitor\n\nUsage: komorebic.exe swap-workspaces-with-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-cross-monitor-move-behaviour.html","title":"toggle-cross-monitor-move-behaviour","text":"
Toggle the behaviour when moving windows across monitor boundaries\n\nUsage: komorebic.exe toggle-cross-monitor-move-behaviour\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-float.html","title":"toggle-float","text":"
Toggle floating mode for the focused window\n\nUsage: komorebic.exe toggle-float\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-focus-follows-mouse.html","title":"toggle-focus-follows-mouse","text":"
Toggle focus follows mouse for the operating system\n\nUsage: komorebic.exe toggle-focus-follows-mouse [OPTIONS]\n\nOptions:\n  -i, --implementation <IMPLEMENTATION>\n          [default: windows]\n\n          Possible values:\n          - komorebi: A custom FFM implementation (slightly more CPU-intensive)\n          - windows:  The native (legacy) Windows FFM implementation\n\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/toggle-maximize.html","title":"toggle-maximize","text":"
Toggle native maximization for the focused window\n\nUsage: komorebic.exe toggle-maximize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-monocle.html","title":"toggle-monocle","text":"
Toggle monocle mode for the focused container\n\nUsage: komorebic.exe toggle-monocle\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-mouse-follows-focus.html","title":"toggle-mouse-follows-focus","text":"
Toggle mouse follows focus on all workspaces\n\nUsage: komorebic.exe toggle-mouse-follows-focus\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-pause.html","title":"toggle-pause","text":"
Toggle window tiling on the focused workspace\n\nUsage: komorebic.exe toggle-pause\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-tiling.html","title":"toggle-tiling","text":"
Toggle window tiling on the focused workspace\n\nUsage: komorebic.exe toggle-tiling\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-title-bars.html","title":"toggle-title-bars","text":"
Toggle title bars for whitelisted applications\n\nUsage: komorebic.exe toggle-title-bars\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-window-container-behaviour.html","title":"toggle-window-container-behaviour","text":"
Toggle the behaviour for new windows (stacking or dynamic tiling)\n\nUsage: komorebic.exe toggle-window-container-behaviour\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unmanage.html","title":"unmanage","text":"
Unmanage a window that was forcibly managed\n\nUsage: komorebic.exe unmanage\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unmanaged-window-operation-behaviour.html","title":"unmanaged-window-operation-behaviour","text":"
Set the operation behaviour when the focused window is not managed\n\nUsage: komorebic.exe unmanaged-window-operation-behaviour <OPERATION_BEHAVIOUR>\n\nArguments:\n  <OPERATION_BEHAVIOUR>\n          Possible values:\n          - op:    Process komorebic commands on temporarily unmanaged/floated windows\n          - no-op: Ignore komorebic commands on temporarily unmanaged/floated windows\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/unstack.html","title":"unstack","text":"
Unstack the focused window\n\nUsage: komorebic.exe unstack\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unsubscribe-pipe.html","title":"unsubscribe-pipe","text":"
Unsubscribe from komorebi events\n\nUsage: komorebic.exe unsubscribe-pipe <NAMED_PIPE>\n\nArguments:\n  <NAMED_PIPE>\n          Name of the pipe to stop sending event notifications to (without \"\\\\.\\pipe\\\" prepended)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unsubscribe-socket.html","title":"unsubscribe-socket","text":"
Unsubscribe from komorebi events\n\nUsage: komorebic.exe unsubscribe-socket <SOCKET>\n\nArguments:\n  <SOCKET>\n          Name of the socket to stop sending event notifications to\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/visible-windows.html","title":"visible-windows","text":"
Show a JSON representation of visible windows\n\nUsage: komorebic.exe visible-windows\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/watch-configuration.html","title":"watch-configuration","text":"
Enable or disable watching of ~/komorebi.ahk (if it exists)\n\nUsage: komorebic.exe watch-configuration <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/whkdrc.html","title":"whkdrc","text":"
Show the path to whkdrc\n\nUsage: komorebic.exe whkdrc\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/window-hiding-behaviour.html","title":"window-hiding-behaviour","text":"
Set the window behaviour when switching workspaces / cycling stacks\n\nUsage: komorebic.exe window-hiding-behaviour <HIDING_BEHAVIOUR>\n\nArguments:\n  <HIDING_BEHAVIOUR>\n          Possible values:\n          - hide:     Use the SW_HIDE flag to hide windows when switching workspaces (has issues with Electron apps)\n          - minimize: Use the SW_MINIMIZE flag to hide windows when switching workspaces (has issues with frequent workspace switching)\n          - cloak:    Use the undocumented SetCloak Win32 function to hide windows when switching workspaces (has foregrounding issues)\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/workspace-custom-layout-rule.html","title":"workspace-custom-layout-rule","text":"
Add a dynamic custom layout for the specified workspace\n\nUsage: komorebic.exe workspace-custom-layout-rule <MONITOR> <WORKSPACE> <AT_CONTAINER_COUNT> <PATH>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-custom-layout.html","title":"workspace-custom-layout","text":"
Set a custom layout for the specified workspace\n\nUsage: komorebic.exe workspace-custom-layout <MONITOR> <WORKSPACE> <PATH>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-layout-rule.html","title":"workspace-layout-rule","text":"
Add a dynamic layout rule for the specified workspace\n\nUsage: komorebic.exe workspace-layout-rule <MONITOR> <WORKSPACE> <AT_CONTAINER_COUNT> <LAYOUT>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <LAYOUT>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-layout.html","title":"workspace-layout","text":"
Set the layout for the specified workspace\n\nUsage: komorebic.exe workspace-layout <MONITOR> <WORKSPACE> <VALUE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <VALUE>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-name.html","title":"workspace-name","text":"
Set the workspace name for the specified workspace\n\nUsage: komorebic.exe workspace-name <MONITOR> <WORKSPACE> <VALUE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <VALUE>\n          Name of the workspace as a String\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-padding.html","title":"workspace-padding","text":"
Set the workspace padding for the specified workspace\n\nUsage: komorebic.exe workspace-padding <MONITOR> <WORKSPACE> <SIZE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-rule.html","title":"workspace-rule","text":"
Add a rule to associate an application with a workspace\n\nUsage: komorebic.exe workspace-rule <IDENTIFIER> <ID> <MONITOR> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-tiling.html","title":"workspace-tiling","text":"
Enable or disable window tiling for the specified workspace\n\nUsage: komorebic.exe workspace-tiling <MONITOR> <WORKSPACE> <VALUE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <VALUE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"common-workflows/autohotkey.html","title":"AutoHotkey","text":"

If you would like to use Autohotkey, please make sure you have AutoHotKey v2 installed.

Generally, users who opt for AHK will have specific needs that can only be addressed by the advanced functionality of AHK, and so they are assumed to be able to craft their own configuration files.

If you would like to try out AHK, here is a simple sample configuration which largely matches the whkdrc sample configuration.

#Requires AutoHotkey v2.0.2\n#SingleInstance Force\n\nKomorebic(cmd) {\n    RunWait(format(\"komorebic.exe {}\", cmd), , \"Hide\")\n}\n\n!q::Komorebic(\"close\")\n!m::Komorebic(\"minimize\")\n\n; Focus windows\n!h::Komorebic(\"focus left\")\n!j::Komorebic(\"focus down\")\n!k::Komorebic(\"focus up\")\n!l::Komorebic(\"focus right\")\n\n!+[::Komorebic(\"cycle-focus previous\")\n!+]::Komorebic(\"cycle-focus next\")\n\n; Move windows\n!+h::Komorebic(\"move left\")\n!+j::Komorebic(\"move down\")\n!+k::Komorebic(\"move up\")\n!+l::Komorebic(\"move right\")\n\n; Stack windows\n!Left::Komorebic(\"stack left\")\n!Down::Komorebic(\"stack down\")\n!Up::Komorebic(\"stack up\")\n!Right::Komorebic(\"stack right\")\n!;::Komorebic(\"unstack\")\n![::Komorebic(\"cycle-stack previous\")\n!]::Komorebic(\"cycle-stack next\")\n\n; Resize\n!=::Komorebic(\"resize-axis horizontal increase\")\n!-::Komorebic(\"resize-axis horizontal decrease\")\n!+=::Komorebic(\"resize-axis vertical increase\")\n!+_::Komorebic(\"resize-axis vertical decrease\")\n\n; Manipulate windows\n!t::Komorebic(\"toggle-float\")\n!f::Komorebic(\"toggle-monocle\")\n\n; Window manager options\n!+r::Komorebic(\"retile\")\n!p::Komorebic(\"toggle-pause\")\n\n; Layouts\n!x::Komorebic(\"flip-layout horizontal\")\n!y::Komorebic(\"flip-layout vertical\")\n\n; Workspaces\n!1::Komorebic(\"focus-workspace 0\")\n!2::Komorebic(\"focus-workspace 1\")\n!3::Komorebic(\"focus-workspace 2\")\n!4::Komorebic(\"focus-workspace 3\")\n!5::Komorebic(\"focus-workspace 4\")\n!6::Komorebic(\"focus-workspace 5\")\n!7::Komorebic(\"focus-workspace 6\")\n!8::Komorebic(\"focus-workspace 7\")\n\n; Move windows across workspaces\n!+1::Komorebic(\"move-to-workspace 0\")\n!+2::Komorebic(\"move-to-workspace 1\")\n!+3::Komorebic(\"move-to-workspace 2\")\n!+4::Komorebic(\"move-to-workspace 3\")\n!+5::Komorebic(\"move-to-workspace 4\")\n!+6::Komorebic(\"move-to-workspace 5\")\n!+7::Komorebic(\"move-to-workspace 6\")\n!+8::Komorebic(\"move-to-workspace 7\")\n

By default, the komorebi.ahk file should be located in the $Env:USERPROFILE directory, however, if $Env:KOMOREBI_CONFIG_HOME is set, it should be located there.

Once the file is in place, you can stop komorebi and whkd by running komorebic stop --whkd, and then start komorebi with Autohotkey by running komorebic start --ahk.

"},{"location":"common-workflows/borders.html","title":"Borders","text":"

If you would like to add a visual border around both the currently focused window and unfocused windows ensure the following options are defined in the komorebi.json configuration file.

{\n\"border\": true,\n\"border_width\": 8,\n\"border_offset\": -1,\n\"border_style\": \"System\",\n\"border_colours\": {\n\"single\": \"#42a5f5\",\n\"stack\": \"#00a542\",\n\"monocle\": \"#ff3399\",\n\"unfocused\": \"#808080\"\n}\n}\n

It is important to note that borders will only apply to windows managed by komorebi.

This feature is not considered stable, and you may encounter visual artifacts from time to time.

"},{"location":"common-workflows/custom-layouts.html","title":"Custom Layouts","text":"

Particularly for users of ultrawide monitors, traditional tiling layouts may not seem like the most efficient use of screen space. If you feel this is the case with any of the default layouts, you are also welcome to create your own custom layouts and save them as JSON or YAML.

If you're not comfortable writing the layouts directly in JSON or YAML, you can use the komorebi Custom Layout Generator to interactively define a custom layout, and then copy the generated JSON content.

Custom layouts can be loaded on the current workspace or configured for a specific workspace in the komorebi.json configuration file.

{\n\"monitors\": [\n{\n\"workspaces\": [\n{\n\"name\": \"personal\",\n\"custom_layout\": \"C:/Users/LGUG2Z/my-custom-layout.json\"\n},\n]\n}\n]\n}\n

The fundamental building block of a custom komorebi layout is the Column.

Columns come in three variants:

  • Primary: This is where your primary focus will be on the screen most of the time. There must be exactly one Primary Column in any custom layout. Optionally, you can specify the percentage of the screen width that you want the Primary Column to occupy.
  • Secondary: This is an optional column that can either be full height of split horizontally into a fixed number of maximum rows. There can be any number of Secondary Columns in a custom layout.
  • Tertiary: This is the final column where any remaining windows will be split horizontally into rows as they get added.

If there is only one window on the screen when a custom layout is selected, that window will take up the full work area of the screen.

If the number of windows is equal to or less than the total number of columns defined in a custom layout, the windows will be arranged in an equal-width columns.

When the number of windows is greater than the number of columns defined in the custom layout, the windows will begin to be arranged according to the constraints set on the Primary and Secondary columns of the layout.

Here is an example custom layout that can be used as a starting point for your own:

- column: Secondary\nconfiguration: !Horizontal 2 # max number of rows\n- column: Primary\nconfiguration: !WidthPercentage 50 # percentage of screen\n- column: Tertiary\nconfiguration: Horizontal\n

"},{"location":"common-workflows/dynamic-layout-switching.html","title":"Dynamic Layout Switching","text":"

With komorebi it is possible to define rules to automatically change the layout on a specified workspace when a threshold of window containers is met.

{\n\"monitors\": [\n{\n\"workspaces\": [\n{\n\"name\": \"personal\",\n\"layout_rules\": {\n\"1\": \"BSP\"\n}\n\"custom_layout_rules\": {\n\"5\": \"C:/Users/LGUG2Z/my-custom-layout.json\"\n}\n},\n]\n}\n]\n}\n

In this example, when there are one or more window containers visible on the screen, the BSP layout is used, and when there are five or more window containers visible, a custom layout is used.

However, if you add workspace layout rules, you will not be able to manually change the layout of a workspace until all layout rules for that workspace have been cleared.

# for example, to clear rules from monitor 0, workspace 0\nkomorebic clear-workspace-layout-rules 0 0\n
"},{"location":"common-workflows/focus-follows-mouse.html","title":"Focus Follows Mouse","text":"

komorebi supports two focus-follows-mouse implementations; the native Windows Xmouse implementation, which treats the desktop, the task bar, and the system tray as windows and switches focus to them eagerly, and a custom komorebi implementation, which only considers windows managed by komorebi as valid targets to switch focus to when moving the mouse.

To enable the komorebi implementation you must start the process with the --ffm flag to explicitly enable the feature. This is because the mouse tracking required for this feature significantly increases the CPU usage of the process (on my machine, it jumps from <1% to ~4~), and this CPU increase persists regardless of whether focus-follows-mouse is enabled or disabled at any given time via komorebic's configuration commands.

If the komorebi process has been started with the --ffm flag, you can enable focus follows mouse behaviour in the komorebi.json configuration file.

{\n\"focus_follows_mouse\": \"Komorebi\"\n}\n

When calling any of the komorebic commands related to focus-follows-mouse functionality, the windows implementation will be chosen as the default implementation. You can optionally specify the komorebi implementation by passing it as an argument to the --implementation flag:

komorebic.exe toggle-focus-follows-mouse --implementation komorebi\n
"},{"location":"common-workflows/force-manage-windows.html","title":"Force Manage Windows","text":"

\u2757\ufe0fNOTE: A significant number of force-manage window rules for the most common applications are already generated for you

In some rare cases, a window may not automatically be registered to be managed by komorebi. You can add rules to enforce this behaviour in the komorebi.json configuration file.

{\n\"manage_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
"},{"location":"common-workflows/ignore-windows.html","title":"Ignore Windows","text":"

\u2757\ufe0fNOTE: A significant number of ignored window rules for the most common applications are already generated for you

Sometimes you will want a specific application to never be tiled, and instead float all the time. You can add rules to enforce this behaviour in the komorebi.json configuration file.

{\n\"float_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
"},{"location":"common-workflows/komorebi-config-home.html","title":"KOMOREBI_CONFIG_HOME","text":"

If you do not want to keep komorebi-related files in your $Env:USERPROFILE directory, you can specify a custom directory by setting the $Env:KOMOREBI_CONFIG_HOME environment variable.

For example, to use the ~/.config/komorebi directory:

# Run this command to make sure that the directory has been created\nmkdir -p ~/.config/komorebi\n\n# Run this command to open up your PowerShell profile configuration in Notepad\nnotepad $PROFILE\n\n# Add this line (with your login user!) to the bottom of your PowerShell profile configuration\n$Env:KOMOREBI_CONFIG_HOME = 'C:\\Users\\LGUG2Z\\.config\\komorebi'\n\n# Save the changes and then reload the PowerShell profile\n. $PROFILE\n

If you already have configuration files that you wish to keep, move them to the ~/.config/komorebi directory.

The next time you run komorebic start, any files created by or loaded by komorebi will be placed or expected to exist in this folder.

"},{"location":"common-workflows/mouse-follows-focus.html","title":"Mouse Follows Focus","text":"

By default, the mouse will move to the center of the window when the focus is changed in a given direction. This behaviour is know as 'mouse follows focus'. This behaviour can be disabled in the komorebi.json configuration file.

{\n\"mouse_follows_focus\": false,\n}\n

"},{"location":"common-workflows/remove-gaps.html","title":"Remove Gaps","text":"

If you would like to remove all gaps by default, both between windows themselves, and between the monitor edges and the windows, you can set the following configuration options to 0 and -1 in the komorebi.json configuration file.

{\n\"default_workspace_padding\": 0,\n\"default_container_padding\": 0,\n\"border_width\": 0,\n\"border_offset\": -1\n}\n

A restart of komorebi is required after changing these settings.

"},{"location":"common-workflows/stackbar.html","title":"Stackbar","text":"

If you would like to add a visual stackbar to show which windows are in a container stack ensure the following options are defined in the komorebi.json configuration file.

{\n\"stackbar\": {\n\"height\": 40,\n\"mode\": \"OnStack\",\n\"tabs\": {\n\"width\": 300,\n\"focused_text\": \"#00a542\",\n\"unfocused_text\": \"#b3b3b3\",\n\"background\": \"#141414\"\n}\n}\n}\n

This feature is not considered stable, and you may encounter visual artifacts from time to time.

"},{"location":"common-workflows/tray-and-multi-window-applications.html","title":"Tray and Multi-Window Applications","text":"

\u2757\ufe0fNOTE: A significant number of tray and multi-window application rules for the most common applications are already generated for you

If you are experiencing behaviour where closing a window leaves a blank tile, but minimizing the same window does not, you have probably enabled a 'close/minimize to tray' option for that application. You can tell komorebi to handle this application appropriately by identifying it via the executable name or the window class.

{\n\"tray_and_multi_window_applications\": [\n{\n\"kind\": \"Class\",\n\"id\": \"SDL_app\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
"},{"location":"release/v0-1-22.html","title":"v0.1.22","text":"

In addition to the changelog of new features and fixes, please note the following changes from v0.1.21 to adjust your configuration files accordingly.

"},{"location":"release/v0-1-22.html#tldr","title":"tl;dr","text":"

The way windows are sized and drawn has been improved to remove the need to manually specify and remove invisible borders for applications that overflow them. If you use the active window border, the first time you launch v0.1.22 you may end up with a huge border due to these changes.

active_window_border_width and active_window_border_offset have been renamed to border_width and border_offset as they now also apply outside the context of the active window border.

{\n\"active_window_border\": true,\n\"border_width\": 8,\n\"border_offset\": -1\n}\n

Users of the active window border should start from these settings and read the notes below before making further adjustments.

"},{"location":"release/v0-1-22.html#changes-to-active_window_border-and-window-sizing","title":"Changes to active_window_border, and window sizing:","text":"
  • The border no longer creates a second drop-shadow around the active window
  • Windows are now sized to fill the layout region entirely, ignoring window decorations such as drop shadows
  • Border offset now starts exactly at the paint edge of the window on all sides
  • Windows are sized such that the border offset and border width are taken into account
"},{"location":"release/v0-1-22.html#recommended-patterns","title":"Recommended patterns","text":""},{"location":"release/v0-1-22.html#gapless","title":"Gapless","text":"
  • Disable \"transparency effects\" Personalization > Colors
  • Set the following settings in komorebi.json:
    {\n\"default_workspace_padding\": 0,\n\"default_container_padding\": 0,\n\"border_offset\": -1,\n\"border_width\": 0\n}\n
"},{"location":"release/v0-1-22.html#1px-border","title":"1px border","text":"

A 1px border is drawn around the window edge. Users may see a gap for a single pixel, if the system theme has a transparent edge - this is the windows themed edge, and is not present for all applications.

  {\n\"border_offset\": 0,\n\"border_width\": 1\n}\n
"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"index.html","title":"Index","text":"

komorebi is a tiling window manager that works as an extension to Microsoft's Desktop Window Manager in Windows 10 and above.

komorebi allows you to control application windows, virtual workspaces and display monitors with a CLI which can be used with third-party software such as AutoHotKey to set user-defined keyboard shortcuts.

komorebi aims to make as few modifications as possible to the operating system and desktop environment by default. Users are free to make such modifications in their own configuration files for komorebi, but these will always remain opt-in and off-by-default.

There is a Discord server available for komorebi-related discussion, help, troubleshooting etc. If you have any specific feature requests or bugs to report, please create an issue on GitHub.

There is also a YouTube channel where I share komorebi live programming videos and tutorial videos.

"},{"location":"design.html","title":"Design","text":""},{"location":"design.html#description","title":"Description","text":"

komorebi only responds to WinEvents and the messages it receives on a dedicated socket.

komorebic is a CLI that writes messages on komorebi's socket.

komorebi doesn't handle any keyboard or mouse inputs; a third party program (e.g. whkd) is needed in order to translate keyboard and mouse events to komorebic commands.

This architecture, popularised by bspwm on Linux and yabai on macOS, is outlined as follows:

          PROCESS                SOCKET\nwhkd/ahk  -------->  komorebic  <------>  komorebi\n
"},{"location":"design.html#data-model","title":"Data Model","text":"

komorebi holds a list of physical monitors.

A monitor is just a rectangle of the available work area which contains one or more virtual workspaces.

A workspace holds a list of containers.

A container is just a rectangle where one or more application windows can be displayed.

This means that:

  • Every monitor has its own collection of virtual workspaces
  • Workspaces only know about containers and their dimensions, not about individual application windows
  • Every application window must belong to a container, even if that container only contains one application window
  • Many application windows can be stacked and cycled through in the same container within a workspace
"},{"location":"example-configurations.html","title":"Example configurations","text":"

komorebi, and tiling window managers in general, are very complex pieces of software.

In an attempt to reduce some of the initial configuration burden for users who are looking to try out the software for the first time, example configurations are provided and updated whenever appropriate.

"},{"location":"example-configurations.html#downloading-example-configurations","title":"Downloading example configurations","text":"

Run the following command to download example configuration files for komorebi and whkd. Pay attention to the output of the command to see where the example files have been downloaded. For most new users this will be in the $Env:USERPROFILE directory.

komorebic quickstart\n

With the example configurations downloaded, you can now start komorebi and `whkd.

komorebic start --whkd\n
"},{"location":"example-configurations.html#komorebijson","title":"komorebi.json","text":"

The example window manager configuration sets some sane defaults and provides five preconfigured workspaces on the primary monitor each with a different layout.

{\n\"$schema\": \"https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.25/schema.json\",\n\"app_specific_configuration_path\": \"$Env:USERPROFILE/applications.yaml\",\n\"window_hiding_behaviour\": \"Cloak\",\n\"cross_monitor_move_behaviour\": \"Insert\",\n\"default_workspace_padding\": 20,\n\"default_container_padding\": 20,\n\"border\": true,\n\"border_width\": 8,\n\"border_offset\": -1,\n\"border_colours\": {\n\"single\": \"#42a5f5\",\n\"stack\": \"#00a542\",\n\"monocle\": \"#ff3399\",\n\"unfocused\": \"#808080\"\n},\n\"stackbar\": {\n\"height\": 40,\n\"mode\": \"OnStack\",\n\"tabs\": {\n\"width\": 300,\n\"focused_text\": \"#00a542\",\n\"unfocused_text\": \"#b3b3b3\",\n\"background\": \"#141414\"\n}\n},\n\"monitors\": [\n{\n\"workspaces\": [\n{\n\"name\": \"I\",\n\"layout\": \"BSP\"\n},\n{\n\"name\": \"II\",\n\"layout\": \"VerticalStack\"\n},\n{\n\"name\": \"III\",\n\"layout\": \"HorizontalStack\"\n},\n{\n\"name\": \"IV\",\n\"layout\": \"UltrawideVerticalStack\"\n},\n{\n\"name\": \"V\",\n\"layout\": \"Rows\"\n},\n{\n\"name\": \"VI\",\n\"layout\": \"Grid\"\n},\n{\n\"name\": \"VII\",\n\"layout\": \"RightMainVerticalStack\"\n}\n]\n}\n]\n}\n
"},{"location":"example-configurations.html#application-specific-configuration","title":"Application-specific configuration","text":"

There is a community-maintained repository of \"apps behaving badly\" that do not conform to Windows application development guidelines and behave erratically when used with komorebi without additional configuration.

You can always download the latest version of these configurations by running komorebic fetch-asc. The output of this command will also provide a line that you can paste into komorebi.json to ensure that the window manager looks for the file in the correction location.

When installing and running komorebi for the first time, the komorebic quickstart command will usually download this file to the $Env:USERPROFILE directory.

"},{"location":"example-configurations.html#padding","title":"Padding","text":"

While you can set the workspace padding (the space between the outer edges of the windows and the bezel of your monitor) and the container padding (the space between each of the tiled windows) for each workspace independently, you can also set a default for both of these values that will apply to all workspaces using default_workspace_padding and default_container_padding.

"},{"location":"example-configurations.html#active-window-border","title":"Active window border","text":"

You may have seen videos and screenshots of people using komorebi with a thick, colourful active window border. You can also enable this by setting active_window_border to true. However, please be warned that this feature is a crude hack trying to compensate for the insistence of Microsoft Windows design teams to make custom borders with widths that are actually visible to the user a thing of the past and removing this capability from the Win32 API.

I know it's buggy, and I know that most of the it sucks, but this is something you should be bring up with the billion dollar company and not with me, the solo developer.

"},{"location":"example-configurations.html#border-colours","title":"Border colours","text":"

If you choose to use the active window border, you can set different colours to give you visual queues when you are focused on a single window, a stack of windows, or a window that is in monocole mode.

The example colours given are blue single, green for stack and pink for monocle.

"},{"location":"example-configurations.html#layouts","title":"Layouts","text":""},{"location":"example-configurations.html#bsp","title":"BSP","text":"
+-------+-----+\n|       |     |\n|       +--+--+\n|       |  |--|\n+-------+--+--+\n
"},{"location":"example-configurations.html#vertical-stack","title":"Vertical Stack","text":"
+-------+-----+\n|       |     |\n|       +-----+\n|       |     |\n+-------+-----+\n
"},{"location":"example-configurations.html#rightmainverticalstack","title":"RightMainVerticalStack","text":"
+-----+-------+\n|     |       |\n+-----+       |\n|     |       |\n+-----+-------+\n
"},{"location":"example-configurations.html#horizontal-stack","title":"Horizontal Stack","text":"
+------+------+\n|             |\n|------+------+\n|      |      |\n+------+------+\n
"},{"location":"example-configurations.html#columns","title":"Columns","text":"
+--+--+--+--+\n|  |  |  |  |\n|  |  |  |  |\n|  |  |  |  |\n+--+--+--+--+\n
"},{"location":"example-configurations.html#rows","title":"Rows","text":"

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

+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n
"},{"location":"example-configurations.html#ultrawide-vertical-stack","title":"Ultrawide Vertical Stack","text":"

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

+-----+-----------+-----+\n|     |           |     |\n|     |           +-----+\n|     |           |     |\n|     |           +-----+\n|     |           |     |\n+-----+-----------+-----+\n
"},{"location":"example-configurations.html#grid","title":"Grid","text":"

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

+-----+-----+   +---+---+---+   +---+---+---+   +---+---+---+\n|     |     |   |   |   |   |   |   |   |   |   |   |   |   |\n|     |     |   |   |   |   |   |   |   |   |   |   |   +---+\n+-----+-----+   |   +---+---+   +---+---+---+   +---+---|   |\n|     |     |   |   |   |   |   |   |   |   |   |   |   +---+\n|     |     |   |   |   |   |   |   |   |   |   |   |   |   |\n+-----+-----+   +---+---+---+   +---+---+---+   +---+---+---+\n  4 windows       5 windows       6 windows       7 windows\n
"},{"location":"example-configurations.html#whkdrc","title":"whkdrc","text":"

whkd is a fairly basic piece of software with a simple configuration format: key bindings go to the left of the colon, and shell commands go to the right of the colon. By default, the whkdrc file should be located in the $Env:USERPROFILE/.config/ directory.

Please remember that whkd does not support overriding Microsoft's limitations on hotkey bindings that include the Windows key. If this is important to you, I recommend using AutoHotKey to set up your key bindings for komorebic commands instead.

.shell powershell\n\n# Reload whkd configuration\n# alt + o                 : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd\nalt + o                 : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell\nalt + shift + o         : komorebic reload-configuration\n\n# App shortcuts - these require shell to be pwsh / powershell\n# The apps will be focused if open, or launched if not open\n# alt + f                 : if ($wshell.AppActivate('Firefox') -eq $False) { start firefox }\n# alt + b                 : if ($wshell.AppActivate('Chrome') -eq $False) { start chrome }\n\nalt + q                 : komorebic close\nalt + m                 : komorebic minimize\n\n# Focus windows\nalt + h                 : komorebic focus left\nalt + j                 : komorebic focus down\nalt + k                 : komorebic focus up\nalt + l                 : komorebic focus right\nalt + shift + oem_4     : komorebic cycle-focus previous # oem_4 is [\nalt + shift + oem_6     : komorebic cycle-focus next # oem_6 is ]\n\n# Move windows\nalt + shift + h         : komorebic move left\nalt + shift + j         : komorebic move down\nalt + shift + k         : komorebic move up\nalt + shift + l         : komorebic move right\nalt + shift + return    : komorebic promote\n\n# Stack windows\nalt + left              : komorebic stack left\nalt + down              : komorebic stack down\nalt + up                : komorebic stack up\nalt + right             : komorebic stack right\nalt + oem_1             : komorebic unstack # oem_1 is ;\nalt + oem_4             : komorebic cycle-stack previous # oem_4 is [\nalt + oem_6             : komorebic cycle-stack next # oem_6 is ]\n\n# Resize\nalt + oem_plus          : komorebic resize-axis horizontal increase\nalt + oem_minus         : komorebic resize-axis horizontal decrease\nalt + shift + oem_plus  : komorebic resize-axis vertical increase\nalt + shift + oem_minus : komorebic resize-axis vertical decrease\n\n# Manipulate windows\nalt + t                 : komorebic toggle-float\nalt + shift + f         : komorebic toggle-monocle\n\n# Window manager options\nalt + shift + r         : komorebic retile\nalt + p                 : komorebic toggle-pause\n\n# Layouts\nalt + x                 : komorebic flip-layout horizontal\nalt + y                 : komorebic flip-layout vertical\n\n# Workspaces\nalt + 1                 : komorebic focus-workspace 0\nalt + 2                 : komorebic focus-workspace 1\nalt + 3                 : komorebic focus-workspace 2\nalt + 4                 : komorebic focus-workspace 3\nalt + 5                 : komorebic focus-workspace 4\nalt + 6                 : komorebic focus-workspace 5\nalt + 7                 : komorebic focus-workspace 6\nalt + 8                 : komorebic focus-workspace 7\n\n# Move windows across workspaces\nalt + shift + 1         : komorebic move-to-workspace 0\nalt + shift + 2         : komorebic move-to-workspace 1\nalt + shift + 3         : komorebic move-to-workspace 2\nalt + shift + 4         : komorebic move-to-workspace 3\nalt + shift + 5         : komorebic move-to-workspace 4\nalt + shift + 6         : komorebic move-to-workspace 5\nalt + shift + 7         : komorebic move-to-workspace 6\nalt + shift + 8         : komorebic move-to-workspace 7\n
"},{"location":"example-configurations.html#setting-shell","title":"Setting .shell","text":"

There is one special directive at the top of the file, .shell which can be set to either powershell, pwsh or cmd. Which one you use will depend on which shell you use in your terminal.

  • powershell - set this if you are using the version of PowerShell that comes installed with Windows 10+ (the executable file for this is powershell.exe)

  • pwsh - set this if you are using PowerShell 7+, which you have installed yourself either through the Windows Store or WinGet (the executable file for this is pwsh.exe)

  • cmd - set this if you don't want to use PowerShell at all and instead you want to call commands through the shell used by the old-school Command Prompt (the executable file for this is cmd.exe)

"},{"location":"example-configurations.html#key-codes","title":"Key codes","text":"

Key codes for alphanumeric and arrow keys are just what you would expect. For punctuation and other keys, please refer to the Virtual Key Codes reference.

If you want to use one of those key codes, put them into lower case and remove the VK_ prefix. For example, the keycode VK_OEM_PLUS becomes oem_plus in the sample configuration above.

"},{"location":"installation.html","title":"Getting started","text":"

komorebi is a tiling window manager for Windows that is comprised comprised of two main binaries, komorebi.exe, which contains the window manager itself, and komorebic.exe, which is the main way to send commands to the tiling window manager.

It is important to note that neither komorebi.exe or komorebic.exe handle key bindings, because komorebi is a tiling window manager and not a hotkey daemon.

This getting started guide suggests the installation of whkd to allow you to bind komorebic.exe commands to hotkeys to allow you to communicate with the tiling window manager using keyboard shortcuts.

However, whkd is a very simple hotkey daemon, and notably, does not include workarounds for Microsoft's restrictions on hotkey combinations that can use the Windows key.

If using hotkey combinations with the Windows key is important to you, I suggest that once you are familiar with the main komorebic.exe commands used to manipulate the window manager, you use AutoHotKey to handle your key bindings.

"},{"location":"installation.html#installation","title":"Installation","text":"

komorebi is available pre-built to install via Scoop and WinGet, and you may also built it from source if you would prefer.

  • Scoop
  • WinGet
  • Building from source
  • Offline
"},{"location":"installation.html#long-path-support","title":"Long path support","text":"

It highly recommended that you enable support for long paths in Windows by running the following command in an Administrator Terminal before installing komorebi.

Set-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem' -Name 'LongPathsEnabled' -Value 1\n
"},{"location":"installation.html#disabling-unnecessary-system-animations","title":"Disabling unnecessary system animations","text":"

It is highly recommended that you enable the \"Turn off all unnecessary animations (when possible)\" option in \"Control Panel > Ease of Access > Ease of Access Centre / Make the computer easier to see\" for the best performance with komorebi.

"},{"location":"installation.html#scoop","title":"Scoop","text":"

Make sure you have installed scoop and verified that installed binaries are available in your $PATH before proceeding.

Issues with komorebi and related commands not being recognized in the terminal ultimately come down to the $PATH environment variable not being correctly configured by your package manager and should not be raised as bugs or issues either on the komorebi GitHub repository or Discord server.

"},{"location":"installation.html#install-komorebi-and-whkd","title":"Install komorebi and whkd","text":"

First add the extras bucket

scoop bucket add extras\n

Then install the komorebi and whkd packages using scoop install

scoop install komorebi whkd\n

Once komorebi is installed, proceed to get the example configurations.

"},{"location":"installation.html#winget","title":"WinGet","text":"

Make sure you have installed the latest version of winget and verified that installed binaries are available in your $PATH before proceeding.

Issues with komorebi and related commands not being recognized in the terminal ultimately come down to the $PATH environment variable not being correctly configured by your package manager and should not be raised as bugs or issues either on the komorebi GitHub repository or Discord server.

"},{"location":"installation.html#install-komorebi-and-whkd_1","title":"Install komorebi and whkd","text":"

Install the komorebi and whkd packages using winget install

winget install LGUG2Z.komorebi\nwinget install LGUG2Z.whkd\n

Once komorebi is installed, proceed to get the example configurations.

"},{"location":"installation.html#building-from-source","title":"Building from source","text":"

Make sure you have installed rustup, a stable rust compiler toolchain, and the Visual Studio Visual Studio prerequisites.

Clone the git repository, enter the directory, and build the following binaries:

cargo +stable install --path komorebi --locked\ncargo +stable install --path komorebic --locked\ncargo +stable install --path komorebic-no-console --locked\ncargo +stable install --path komorebi-gui --locked\n

If the binaries have been built and added to your $PATH correctly, you should see some output when running komorebi --help and komorebic --help

"},{"location":"installation.html#offline","title":"Offline","text":"

Download the latest komorebi and whkd MSI installers on an internet-connected computer, then copy them to an offline machine to install.

Once installed, proceed to get the example configurations (none of the commands for first-time set up and running komorebi require an internet connection).

"},{"location":"troubleshooting.html","title":"Troubleshooting","text":""},{"location":"troubleshooting.html#autohotkey-executable-not-found","title":"AutoHotKey executable not found","text":"

If you try to start komorebi with AHK using komorebic start --ahk, and you have not installed AHK using scoop, you'll probably receive an error:

Error: could not find autohotkey, please make sure it is installed before using the --ahk flag\n

Depending on how AHK is installed the executable on your system may have a different name. In order to account for this, you may set the KOMOREBI_AHK_EXE environment variable in your PowerShell profile to match the name of the executable as it is found on your system.

After setting KOMOREBI_AHK_EXE make sure to either reload your PowerShell profile or open a new terminal tab.

"},{"location":"troubleshooting.html#komorebi-is-unresponsive-when-the-display-wakes-from-sleep","title":"Komorebi is unresponsive when the display wakes from sleep","text":"

This can happen in rare cases when your monitor state is not preserved after it wakes from sleep.

"},{"location":"troubleshooting.html#problem","title":"Problem","text":"

Your hotkeys in whkd work, but it feels as if komorebi knows nothing about the previous state (you can't control previous windows, although newly launched ones can be manipulated as normal).

"},{"location":"troubleshooting.html#solution","title":"Solution","text":"

Some monitors, such as the Samsung G8/G9 (LED, Neo, OLED) have an adaptive sync or variable refresh rate setting within the actual monitor OSD that can disrupt how the device is persisted in the komorebi state following suspension.

To fix this, please try to disable Adaptive Sync or any other VRR branded alias by referring to the manufacturer's documentation.

Warning

Disabling VRR within Windows (e.g. Nvidia Control Panel) may work and can indeed change the configuration you see within your monitor's OSD, but some monitors will re-enable the setting regardless following suspension.

"},{"location":"troubleshooting.html#reproducing","title":"Reproducing","text":"

Ensure komorebi is in an operational state by executing komorebic start as normal.

If komorebi is already unresponsive, then please restart komorebi first by running komorebic stop and komorebic start.

  1. komorebic state
{\n\"monitors\": {\n\"elements\": [\n{\n\"id\": 65537,\n\"name\": \"DISPLAY1\",\n\"device\": \"SAM71AA\",\n\"device_id\": \"SAM71AA-5&a1a3e88&0&UID24834\",\n\"size\": {\n\"left\": 0,\n\"top\": 0,\n\"right\": 5120,\n\"bottom\": 1440\n}\n}\n]\n}\n}\n

This appears to be fine -- komorebi is aware of the device and associated window handles.

  1. Let your display go to sleep.

Simply turning the monitor off is not enough to reproduce the problem; you must let Windows turn off the display itself.

To avoid waiting an eternity:

  • Control Panel -> Hardware and Sound -> Power Options -> Edit Plan Settings

    Turn off the display: 1 minute

Allow a minute for the display to reset, then once it actually shuts off allow for any additional time as prompted by your monitor for the cycle to complete.

  1. Wake your display again by pressing any key.

komorebi should now be unresponsive.

  1. komorebic state

Don't stop komorebi just yet.

Since it's unresponsive, you can open another shell instead to execute the above command.

{\n\"monitors\": {\n\"elements\": [\n{\n\"id\": 65537,\n\"name\": \"DISPLAY1\",\n\"device\": null,\n\"device_id\": null\n}\n]\n}\n}\n

We can see the komorebi state is no longer associated with the previous device: null, suggesting an issue when the display resumes from a suspended state.

"},{"location":"cli/adjust-container-padding.html","title":"adjust-container-padding","text":"
Adjust container padding on the focused workspace\n\nUsage: komorebic.exe adjust-container-padding <SIZING> <ADJUSTMENT>\n\nArguments:\n  <SIZING>\n          [possible values: increase, decrease]\n\n  <ADJUSTMENT>\n          Pixels to adjust by as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/adjust-workspace-padding.html","title":"adjust-workspace-padding","text":"
Adjust workspace padding on the focused workspace\n\nUsage: komorebic.exe adjust-workspace-padding <SIZING> <ADJUSTMENT>\n\nArguments:\n  <SIZING>\n          [possible values: increase, decrease]\n\n  <ADJUSTMENT>\n          Pixels to adjust by as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/ahk-app-specific-configuration.html","title":"ahk-app-specific-configuration","text":"
Generate common app-specific configurations and fixes to use in komorebi.ahk\n\nUsage: komorebic.exe ahk-app-specific-configuration <PATH> [OVERRIDE_PATH]\n\nArguments:\n  <PATH>\n          YAML file from which the application-specific configurations should be loaded\n\n  [OVERRIDE_PATH]\n          Optional YAML file of overrides to apply over the first file\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/ahk-library.html","title":"ahk-library","text":"
Generate a library of AutoHotKey helper functions\n\nUsage: komorebic.exe ahk-library\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/application-specific-configuration-schema.html","title":"application-specific-configuration-schema","text":"
Generate a JSON Schema for applications.yaml\n\nUsage: komorebic.exe application-specific-configuration-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/border-colour.html","title":"border-colour","text":"
Set the colour for a window border kind\n\nUsage: komorebic.exe border-colour [OPTIONS] <R> <G> <B>\n\nArguments:\n  <R>\n          Red\n\n  <G>\n          Green\n\n  <B>\n          Blue\n\nOptions:\n  -w, --window-kind <WINDOW_KIND>\n          [default: single]\n          [possible values: single, stack, monocle, unfocused]\n\n  -h, --help\n          Print help\n
"},{"location":"cli/border-offset.html","title":"border-offset","text":"
Set the border offset\n\nUsage: komorebic.exe border-offset <OFFSET>\n\nArguments:\n  <OFFSET>\n          Desired offset of the window border\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/border-width.html","title":"border-width","text":"
Set the border width\n\nUsage: komorebic.exe border-width <WIDTH>\n\nArguments:\n  <WIDTH>\n          Desired width of the window border\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/border.html","title":"border","text":"
Enable or disable borders\n\nUsage: komorebic.exe border <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/change-layout.html","title":"change-layout","text":"
Set the layout on the focused workspace\n\nUsage: komorebic.exe change-layout <DEFAULT_LAYOUT>\n\nArguments:\n  <DEFAULT_LAYOUT>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/check.html","title":"check","text":"
Check komorebi configuration and related files for common errors\n\nUsage: komorebic.exe check\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/clear-named-workspace-layout-rules.html","title":"clear-named-workspace-layout-rules","text":"
Clear all dynamic layout rules for the specified workspace\n\nUsage: komorebic.exe clear-named-workspace-layout-rules <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/clear-workspace-layout-rules.html","title":"clear-workspace-layout-rules","text":"
Clear all dynamic layout rules for the specified workspace\n\nUsage: komorebic.exe clear-workspace-layout-rules <MONITOR> <WORKSPACE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/close.html","title":"close","text":"
Close the focused window\n\nUsage: komorebic.exe close\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/complete-configuration.html","title":"complete-configuration","text":"
Signal that the final configuration option has been sent\n\nUsage: komorebic.exe complete-configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/configuration.html","title":"configuration","text":"
Show the path to komorebi.json\n\nUsage: komorebic.exe configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/container-padding.html","title":"container-padding","text":"
Set the container padding for the specified workspace\n\nUsage: komorebic.exe container-padding <MONITOR> <WORKSPACE> <SIZE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cross-monitor-move-behaviour.html","title":"cross-monitor-move-behaviour","text":"
Set the behaviour when moving windows across monitor boundaries\n\nUsage: komorebic.exe cross-monitor-move-behaviour <MOVE_BEHAVIOUR>\n\nArguments:\n  <MOVE_BEHAVIOUR>\n          Possible values:\n          - swap:   Swap the window container with the window container at the edge of the adjacent monitor\n          - insert: Insert the window container into the focused workspace on the adjacent monitor\n          - no-op:  Do nothing if trying to move a window container in the direction of an adjacent monitor\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/cycle-focus.html","title":"cycle-focus","text":"
Change focus to the window in the specified cycle direction\n\nUsage: komorebic.exe cycle-focus <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-layout.html","title":"cycle-layout","text":"
Cycle between available layouts\n\nUsage: komorebic.exe cycle-layout <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-monitor.html","title":"cycle-monitor","text":"
Focus the monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move-to-monitor.html","title":"cycle-move-to-monitor","text":"
Move the focused window to the monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-move-to-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move-to-workspace.html","title":"cycle-move-to-workspace","text":"
Move the focused window to the workspace in the given cycle direction\n\nUsage: komorebic.exe cycle-move-to-workspace <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move-workspace-to-monitor.html","title":"cycle-move-workspace-to-monitor","text":"
Move the focused workspace monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-move-workspace-to-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-move.html","title":"cycle-move","text":"
Move the focused window in the specified cycle direction\n\nUsage: komorebic.exe cycle-move <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-send-to-monitor.html","title":"cycle-send-to-monitor","text":"
Send the focused window to the monitor in the given cycle direction\n\nUsage: komorebic.exe cycle-send-to-monitor <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-send-to-workspace.html","title":"cycle-send-to-workspace","text":"
Send the focused window to the workspace in the given cycle direction\n\nUsage: komorebic.exe cycle-send-to-workspace <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-stack.html","title":"cycle-stack","text":"
Cycle the focused stack in the specified cycle direction\n\nUsage: komorebic.exe cycle-stack <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/cycle-workspace.html","title":"cycle-workspace","text":"
Focus the workspace in the given cycle direction\n\nUsage: komorebic.exe cycle-workspace <CYCLE_DIRECTION>\n\nArguments:\n  <CYCLE_DIRECTION>\n          [possible values: previous, next]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/disable-autostart.html","title":"disable-autostart","text":"
Deletes the komorebi.lnk shortcut in shell:startup to disable autostart\n\nUsage: komorebic.exe disable-autostart\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/display-index-preference.html","title":"display-index-preference","text":"
Set the display index preference for a monitor identified using its display name\n\nUsage: komorebic.exe display-index-preference <INDEX_PREFERENCE> <DISPLAY>\n\nArguments:\n  <INDEX_PREFERENCE>\n          Preferred monitor index (zero-indexed)\n\n  <DISPLAY>\n          Display name as identified in komorebic state\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/enable-autostart.html","title":"enable-autostart","text":"
Generates the komorebi.lnk shortcut in shell:startup to autostart komorebi\n\nUsage: komorebic.exe enable-autostart [OPTIONS]\n\nOptions:\n  -c, --config <CONFIG>\n          Path to a static configuration JSON file\n\n  -f, --ffm\n          Enable komorebi's custom focus-follows-mouse implementation\n\n      --whkd\n          Enable autostart of whkd\n\n      --ahk\n          Enable autostart of ahk\n\n  -h, --help\n          Print help\n
"},{"location":"cli/ensure-named-workspaces.html","title":"ensure-named-workspaces","text":"
Create these many named workspaces for the specified monitor\n\nUsage: komorebic.exe ensure-named-workspaces <MONITOR> [NAMES]...\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  [NAMES]...\n          Names of desired workspaces\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/ensure-workspaces.html","title":"ensure-workspaces","text":"
Create at least this many workspaces for the specified monitor\n\nUsage: komorebic.exe ensure-workspaces <MONITOR> <WORKSPACE_COUNT>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE_COUNT>\n          Number of desired workspaces\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/fetch-app-specific-configuration.html","title":"fetch-app-specific-configuration","text":"
Fetch the latest version of applications.yaml from komorebi-application-specific-configuration\n\nUsage: komorebic.exe fetch-app-specific-configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/flip-layout.html","title":"flip-layout","text":"
Flip the layout on the focused workspace (BSP only)\n\nUsage: komorebic.exe flip-layout <AXIS>\n\nArguments:\n  <AXIS>\n          [possible values: horizontal, vertical, horizontal-and-vertical]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/float-rule.html","title":"float-rule","text":"
Add a rule to always float the specified application\n\nUsage: komorebic.exe float-rule <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-follows-mouse.html","title":"focus-follows-mouse","text":"
Enable or disable focus follows mouse for the operating system\n\nUsage: komorebic.exe focus-follows-mouse [OPTIONS] <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -i, --implementation <IMPLEMENTATION>\n          [default: windows]\n\n          Possible values:\n          - komorebi: A custom FFM implementation (slightly more CPU-intensive)\n          - windows:  The native (legacy) Windows FFM implementation\n\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/focus-last-workspace.html","title":"focus-last-workspace","text":"
Focus the last focused workspace on the focused monitor\n\nUsage: komorebic.exe focus-last-workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-monitor-workspace.html","title":"focus-monitor-workspace","text":"
Focus the specified workspace on the target monitor\n\nUsage: komorebic.exe focus-monitor-workspace <TARGET_MONITOR> <TARGET_WORKSPACE>\n\nArguments:\n  <TARGET_MONITOR>\n          Target monitor index (zero-indexed)\n\n  <TARGET_WORKSPACE>\n          Workspace index on the target monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-monitor.html","title":"focus-monitor","text":"
Focus the specified monitor\n\nUsage: komorebic.exe focus-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-named-workspace.html","title":"focus-named-workspace","text":"
Focus the specified workspace\n\nUsage: komorebic.exe focus-named-workspace <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-workspace.html","title":"focus-workspace","text":"
Focus the specified workspace on the focused monitor\n\nUsage: komorebic.exe focus-workspace <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus-workspaces.html","title":"focus-workspaces","text":"
Focus the specified workspace on all monitors\n\nUsage: komorebic.exe focus-workspaces <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focus.html","title":"focus","text":"
Change focus to the window in the specified direction\n\nUsage: komorebic.exe focus <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focused-workspace-container-padding.html","title":"focused-workspace-container-padding","text":"
Set container padding on the focused workspace\n\nUsage: komorebic.exe focused-workspace-container-padding <SIZE>\n\nArguments:\n  <SIZE>\n          Pixels size to set as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/focused-workspace-padding.html","title":"focused-workspace-padding","text":"
Set workspace padding on the focused workspace\n\nUsage: komorebic.exe focused-workspace-padding <SIZE>\n\nArguments:\n  <SIZE>\n          Pixels size to set as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/force-focus.html","title":"force-focus","text":"
Forcibly focus the window at the cursor with a left mouse click\n\nUsage: komorebic.exe force-focus\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/format-app-specific-configuration.html","title":"format-app-specific-configuration","text":"
Format a YAML file for use with the 'ahk-app-specific-configuration' command\n\nUsage: komorebic.exe format-app-specific-configuration <PATH>\n\nArguments:\n  <PATH>\n          YAML file from which the application-specific configurations should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/generate-static-config.html","title":"generate-static-config","text":"
Generates a static configuration JSON file based on the current window manager state\n\nUsage: komorebic.exe generate-static-config\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/global-state.html","title":"global-state","text":"
Show a JSON representation of the current global state\n\nUsage: komorebic.exe global-state\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/global-work-area-offset.html","title":"global-work-area-offset","text":"
Set offsets to exclude parts of the work area from tiling\n\nUsage: komorebic.exe global-work-area-offset <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <LEFT>\n          Size of the left work area offset (set right to left * 2 to maintain right padding)\n\n  <TOP>\n          Size of the top work area offset (set bottom to the same value to maintain bottom padding)\n\n  <RIGHT>\n          Size of the right work area offset\n\n  <BOTTOM>\n          Size of the bottom work area offset\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/gui.html","title":"gui","text":"
Launch the komorebi-gui debugging tool\n\nUsage: komorebic.exe gui\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/identify-layered-application.html","title":"identify-layered-application","text":"
Identify an application that has WS_EX_LAYERED, but should still be managed\n\nUsage: komorebic.exe identify-layered-application <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/identify-object-name-change-application.html","title":"identify-object-name-change-application","text":"
Identify an application that sends EVENT_OBJECT_NAMECHANGE on launch\n\nUsage: komorebic.exe identify-object-name-change-application <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/identify-tray-application.html","title":"identify-tray-application","text":"
Identify an application that closes to the system tray\n\nUsage: komorebic.exe identify-tray-application <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/initial-named-workspace-rule.html","title":"initial-named-workspace-rule","text":"
Add a rule to associate an application with a named workspace on first show\n\nUsage: komorebic.exe initial-named-workspace-rule <IDENTIFIER> <ID> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <WORKSPACE>\n          Name of a workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/initial-workspace-rule.html","title":"initial-workspace-rule","text":"
Add a rule to associate an application with a workspace on first show\n\nUsage: komorebic.exe initial-workspace-rule <IDENTIFIER> <ID> <MONITOR> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/invisible-borders.html","title":"invisible-borders","text":"
Set the invisible border dimensions around each window\n\nUsage: komorebic.exe invisible-borders <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <LEFT>\n          Size of the left invisible border\n\n  <TOP>\n          Size of the top invisible border (usually 0)\n\n  <RIGHT>\n          Size of the right invisible border (usually left * 2)\n\n  <BOTTOM>\n          Size of the bottom invisible border (usually the same as left)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/load-custom-layout.html","title":"load-custom-layout","text":"
Load a custom layout from file for the focused workspace\n\nUsage: komorebic.exe load-custom-layout <PATH>\n\nArguments:\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/load-resize.html","title":"load-resize","text":"
Load the resize layout dimensions from a file\n\nUsage: komorebic.exe load-resize <PATH>\n\nArguments:\n  <PATH>\n          File from which the resize layout dimensions should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/log.html","title":"log","text":"
Tail komorebi.exe's process logs (cancel with Ctrl-C)\n\nUsage: komorebic.exe log\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/manage-rule.html","title":"manage-rule","text":"
Add a rule to always manage the specified application\n\nUsage: komorebic.exe manage-rule <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/manage.html","title":"manage","text":"
Force komorebi to manage the focused window\n\nUsage: komorebic.exe manage\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/minimize.html","title":"minimize","text":"
Minimize the focused window\n\nUsage: komorebic.exe minimize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/monitor-index-preference.html","title":"monitor-index-preference","text":"
Set the monitor index preference for a monitor identified using its size\n\nUsage: komorebic.exe monitor-index-preference <INDEX_PREFERENCE> <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <INDEX_PREFERENCE>\n          Preferred monitor index (zero-indexed)\n\n  <LEFT>\n          Left value of the monitor's size Rect\n\n  <TOP>\n          Top value of the monitor's size Rect\n\n  <RIGHT>\n          Right value of the monitor's size Rect\n\n  <BOTTOM>\n          Bottom value of the monitor's size Rect\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/monitor-work-area-offset.html","title":"monitor-work-area-offset","text":"
Set offsets for a monitor to exclude parts of the work area from tiling\n\nUsage: komorebic.exe monitor-work-area-offset <MONITOR> <LEFT> <TOP> <RIGHT> <BOTTOM>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <LEFT>\n          Size of the left work area offset (set right to left * 2 to maintain right padding)\n\n  <TOP>\n          Size of the top work area offset (set bottom to the same value to maintain bottom padding)\n\n  <RIGHT>\n          Size of the right work area offset\n\n  <BOTTOM>\n          Size of the bottom work area offset\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/mouse-follows-focus.html","title":"mouse-follows-focus","text":"
Enable or disable mouse follows focus on all workspaces\n\nUsage: komorebic.exe mouse-follows-focus <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-monitor-workspace.html","title":"move-to-monitor-workspace","text":"
Move the focused window to the specified monitor workspace\n\nUsage: komorebic.exe move-to-monitor-workspace <TARGET_MONITOR> <TARGET_WORKSPACE>\n\nArguments:\n  <TARGET_MONITOR>\n          Target monitor index (zero-indexed)\n\n  <TARGET_WORKSPACE>\n          Workspace index on the target monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-monitor.html","title":"move-to-monitor","text":"
Move the focused window to the specified monitor\n\nUsage: komorebic.exe move-to-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-named-workspace.html","title":"move-to-named-workspace","text":"
Move the focused window to the specified workspace\n\nUsage: komorebic.exe move-to-named-workspace <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-to-workspace.html","title":"move-to-workspace","text":"
Move the focused window to the specified workspace\n\nUsage: komorebic.exe move-to-workspace <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move-workspace-to-monitor.html","title":"move-workspace-to-monitor","text":"
Move the focused workspace to the specified monitor\n\nUsage: komorebic.exe move-workspace-to-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/move.html","title":"move","text":"
Move the focused window in the specified direction\n\nUsage: komorebic.exe move <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-container-padding.html","title":"named-workspace-container-padding","text":"
Set the container padding for the specified workspace\n\nUsage: komorebic.exe named-workspace-container-padding <WORKSPACE> <SIZE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-custom-layout-rule.html","title":"named-workspace-custom-layout-rule","text":"
Add a dynamic custom layout for the specified workspace\n\nUsage: komorebic.exe named-workspace-custom-layout-rule <WORKSPACE> <AT_CONTAINER_COUNT> <PATH>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-custom-layout.html","title":"named-workspace-custom-layout","text":"
Set a custom layout for the specified workspace\n\nUsage: komorebic.exe named-workspace-custom-layout <WORKSPACE> <PATH>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-layout-rule.html","title":"named-workspace-layout-rule","text":"
Add a dynamic layout rule for the specified workspace\n\nUsage: komorebic.exe named-workspace-layout-rule <WORKSPACE> <AT_CONTAINER_COUNT> <LAYOUT>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <LAYOUT>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-layout.html","title":"named-workspace-layout","text":"
Set the layout for the specified workspace\n\nUsage: komorebic.exe named-workspace-layout <WORKSPACE> <VALUE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <VALUE>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-padding.html","title":"named-workspace-padding","text":"
Set the workspace padding for the specified workspace\n\nUsage: komorebic.exe named-workspace-padding <WORKSPACE> <SIZE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-rule.html","title":"named-workspace-rule","text":"
Add a rule to associate an application with a named workspace\n\nUsage: komorebic.exe named-workspace-rule <IDENTIFIER> <ID> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <WORKSPACE>\n          Name of a workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/named-workspace-tiling.html","title":"named-workspace-tiling","text":"
Enable or disable window tiling for the specified workspace\n\nUsage: komorebic.exe named-workspace-tiling <WORKSPACE> <VALUE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\n  <VALUE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/new-workspace.html","title":"new-workspace","text":"
Create and append a new workspace on the focused monitor\n\nUsage: komorebic.exe new-workspace\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/notification-schema.html","title":"notification-schema","text":"
Generate a JSON Schema of subscription notifications\n\nUsage: komorebic.exe notification-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/promote-focus.html","title":"promote-focus","text":"
Promote the user focus to the top of the tree\n\nUsage: komorebic.exe promote-focus\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/promote-window.html","title":"promote-window","text":"
Promote the window in the specified direction\n\nUsage: komorebic.exe promote-window <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/promote.html","title":"promote","text":"
Promote the focused window to the top of the tree\n\nUsage: komorebic.exe promote\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/pwsh-app-specific-configuration.html","title":"pwsh-app-specific-configuration","text":"
Generate common app-specific configurations and fixes in a PowerShell script\n\nUsage: komorebic.exe pwsh-app-specific-configuration <PATH> [OVERRIDE_PATH]\n\nArguments:\n  <PATH>\n          YAML file from which the application-specific configurations should be loaded\n\n  [OVERRIDE_PATH]\n          Optional YAML file of overrides to apply over the first file\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/query.html","title":"query","text":"
Query the current window manager state\n\nUsage: komorebic.exe query <STATE_QUERY>\n\nArguments:\n  <STATE_QUERY>\n          [possible values: focused-monitor-index, focused-workspace-index, focused-container-index, focused-window-index]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/quick-load-resize.html","title":"quick-load-resize","text":"
Load the last quicksaved resize layout dimensions\n\nUsage: komorebic.exe quick-load-resize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/quick-save-resize.html","title":"quick-save-resize","text":"
Quicksave the current resize layout dimensions\n\nUsage: komorebic.exe quick-save-resize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/quickstart.html","title":"quickstart","text":"
Gather example configurations for a new-user quickstart\n\nUsage: komorebic.exe quickstart\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/reload-configuration.html","title":"reload-configuration","text":"
Reload ~/komorebi.ahk (if it exists)\n\nUsage: komorebic.exe reload-configuration\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/remove-title-bar.html","title":"remove-title-bar","text":"
Whitelist an application for title bar removal\n\nUsage: komorebic.exe remove-title-bar <IDENTIFIER> <ID>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/resize-axis.html","title":"resize-axis","text":"
Resize the focused window or primary column along the specified axis\n\nUsage: komorebic.exe resize-axis <AXIS> <SIZING>\n\nArguments:\n  <AXIS>\n          [possible values: horizontal, vertical, horizontal-and-vertical]\n\n  <SIZING>\n          [possible values: increase, decrease]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/resize-delta.html","title":"resize-delta","text":"
Set the resize delta (used by resize-edge and resize-axis)\n\nUsage: komorebic.exe resize-delta <PIXELS>\n\nArguments:\n  <PIXELS>\n          The delta of pixels by which to increase or decrease window dimensions when resizing\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/resize-edge.html","title":"resize-edge","text":"
Resize the focused window in the specified direction\n\nUsage: komorebic.exe resize-edge <EDGE> <SIZING>\n\nArguments:\n  <EDGE>\n          [possible values: left, right, up, down]\n\n  <SIZING>\n          [possible values: increase, decrease]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/restore-windows.html","title":"restore-windows","text":"
Restore all hidden windows (debugging command)\n\nUsage: komorebic.exe restore-windows\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/retile.html","title":"retile","text":"
Force the retiling of all managed windows\n\nUsage: komorebic.exe retile\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/save-resize.html","title":"save-resize","text":"
Save the current resize layout dimensions to a file\n\nUsage: komorebic.exe save-resize <PATH>\n\nArguments:\n  <PATH>\n          File to which the resize layout dimensions should be saved\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-monitor-workspace.html","title":"send-to-monitor-workspace","text":"
Send the focused window to the specified monitor workspace\n\nUsage: komorebic.exe send-to-monitor-workspace <TARGET_MONITOR> <TARGET_WORKSPACE>\n\nArguments:\n  <TARGET_MONITOR>\n          Target monitor index (zero-indexed)\n\n  <TARGET_WORKSPACE>\n          Workspace index on the target monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-monitor.html","title":"send-to-monitor","text":"
Send the focused window to the specified monitor\n\nUsage: komorebic.exe send-to-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-named-workspace.html","title":"send-to-named-workspace","text":"
Send the focused window to the specified workspace\n\nUsage: komorebic.exe send-to-named-workspace <WORKSPACE>\n\nArguments:\n  <WORKSPACE>\n          Target workspace name\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/send-to-workspace.html","title":"send-to-workspace","text":"
Send the focused window to the specified workspace\n\nUsage: komorebic.exe send-to-workspace <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/socket-schema.html","title":"socket-schema","text":"
Generate a JSON Schema of socket messages\n\nUsage: komorebic.exe socket-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/stack.html","title":"stack","text":"
Stack the focused window in the specified direction\n\nUsage: komorebic.exe stack <OPERATION_DIRECTION>\n\nArguments:\n  <OPERATION_DIRECTION>\n          [possible values: left, right, up, down]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/start.html","title":"start","text":"
Start komorebi.exe as a background process\n\nUsage: komorebic.exe start [OPTIONS]\n\nOptions:\n  -f, --ffm\n          Allow the use of komorebi's custom focus-follows-mouse implementation\n\n  -c, --config <CONFIG>\n          Path to a static configuration JSON file\n\n  -a, --await-configuration\n          Wait for 'komorebic complete-configuration' to be sent before processing events\n\n  -t, --tcp-port <TCP_PORT>\n          Start a TCP server on the given port to allow the direct sending of SocketMessages\n\n      --whkd\n          Start whkd in a background process\n\n      --ahk\n          Start autohotkey configuration file\n\n  -h, --help\n          Print help\n
"},{"location":"cli/state.html","title":"state","text":"
Show a JSON representation of the current window manager state\n\nUsage: komorebic.exe state\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/static-config-schema.html","title":"static-config-schema","text":"
Generate a JSON Schema of the static configuration file\n\nUsage: komorebic.exe static-config-schema\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/stop.html","title":"stop","text":"
Stop the komorebi.exe process and restore all hidden windows\n\nUsage: komorebic.exe stop [OPTIONS]\n\nOptions:\n      --whkd\n          Stop whkd if it is running as a background process\n\n  -h, --help\n          Print help\n
"},{"location":"cli/subscribe-pipe.html","title":"subscribe-pipe","text":"
Subscribe to komorebi events using a Named Pipe\n\nUsage: komorebic.exe subscribe-pipe <NAMED_PIPE>\n\nArguments:\n  <NAMED_PIPE>\n          Name of the pipe to send event notifications to (without \"\\\\.\\pipe\\\" prepended)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/subscribe-socket.html","title":"subscribe-socket","text":"
Subscribe to komorebi events using a Unix Domain Socket\n\nUsage: komorebic.exe subscribe-socket <SOCKET>\n\nArguments:\n  <SOCKET>\n          Name of the socket to send event notifications to\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/swap-workspaces-with-monitor.html","title":"swap-workspaces-with-monitor","text":"
Swap focused monitor workspaces with specified monitor\n\nUsage: komorebic.exe swap-workspaces-with-monitor <TARGET>\n\nArguments:\n  <TARGET>\n          Target index (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-cross-monitor-move-behaviour.html","title":"toggle-cross-monitor-move-behaviour","text":"
Toggle the behaviour when moving windows across monitor boundaries\n\nUsage: komorebic.exe toggle-cross-monitor-move-behaviour\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-float.html","title":"toggle-float","text":"
Toggle floating mode for the focused window\n\nUsage: komorebic.exe toggle-float\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-focus-follows-mouse.html","title":"toggle-focus-follows-mouse","text":"
Toggle focus follows mouse for the operating system\n\nUsage: komorebic.exe toggle-focus-follows-mouse [OPTIONS]\n\nOptions:\n  -i, --implementation <IMPLEMENTATION>\n          [default: windows]\n\n          Possible values:\n          - komorebi: A custom FFM implementation (slightly more CPU-intensive)\n          - windows:  The native (legacy) Windows FFM implementation\n\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/toggle-maximize.html","title":"toggle-maximize","text":"
Toggle native maximization for the focused window\n\nUsage: komorebic.exe toggle-maximize\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-monocle.html","title":"toggle-monocle","text":"
Toggle monocle mode for the focused container\n\nUsage: komorebic.exe toggle-monocle\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-mouse-follows-focus.html","title":"toggle-mouse-follows-focus","text":"
Toggle mouse follows focus on all workspaces\n\nUsage: komorebic.exe toggle-mouse-follows-focus\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-pause.html","title":"toggle-pause","text":"
Toggle window tiling on the focused workspace\n\nUsage: komorebic.exe toggle-pause\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-tiling.html","title":"toggle-tiling","text":"
Toggle window tiling on the focused workspace\n\nUsage: komorebic.exe toggle-tiling\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-title-bars.html","title":"toggle-title-bars","text":"
Toggle title bars for whitelisted applications\n\nUsage: komorebic.exe toggle-title-bars\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/toggle-window-container-behaviour.html","title":"toggle-window-container-behaviour","text":"
Toggle the behaviour for new windows (stacking or dynamic tiling)\n\nUsage: komorebic.exe toggle-window-container-behaviour\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unmanage.html","title":"unmanage","text":"
Unmanage a window that was forcibly managed\n\nUsage: komorebic.exe unmanage\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unmanaged-window-operation-behaviour.html","title":"unmanaged-window-operation-behaviour","text":"
Set the operation behaviour when the focused window is not managed\n\nUsage: komorebic.exe unmanaged-window-operation-behaviour <OPERATION_BEHAVIOUR>\n\nArguments:\n  <OPERATION_BEHAVIOUR>\n          Possible values:\n          - op:    Process komorebic commands on temporarily unmanaged/floated windows\n          - no-op: Ignore komorebic commands on temporarily unmanaged/floated windows\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/unstack.html","title":"unstack","text":"
Unstack the focused window\n\nUsage: komorebic.exe unstack\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unsubscribe-pipe.html","title":"unsubscribe-pipe","text":"
Unsubscribe from komorebi events\n\nUsage: komorebic.exe unsubscribe-pipe <NAMED_PIPE>\n\nArguments:\n  <NAMED_PIPE>\n          Name of the pipe to stop sending event notifications to (without \"\\\\.\\pipe\\\" prepended)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/unsubscribe-socket.html","title":"unsubscribe-socket","text":"
Unsubscribe from komorebi events\n\nUsage: komorebic.exe unsubscribe-socket <SOCKET>\n\nArguments:\n  <SOCKET>\n          Name of the socket to stop sending event notifications to\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/visible-windows.html","title":"visible-windows","text":"
Show a JSON representation of visible windows\n\nUsage: komorebic.exe visible-windows\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/watch-configuration.html","title":"watch-configuration","text":"
Enable or disable watching of ~/komorebi.ahk (if it exists)\n\nUsage: komorebic.exe watch-configuration <BOOLEAN_STATE>\n\nArguments:\n  <BOOLEAN_STATE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/whkdrc.html","title":"whkdrc","text":"
Show the path to whkdrc\n\nUsage: komorebic.exe whkdrc\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/window-hiding-behaviour.html","title":"window-hiding-behaviour","text":"
Set the window behaviour when switching workspaces / cycling stacks\n\nUsage: komorebic.exe window-hiding-behaviour <HIDING_BEHAVIOUR>\n\nArguments:\n  <HIDING_BEHAVIOUR>\n          Possible values:\n          - hide:     Use the SW_HIDE flag to hide windows when switching workspaces (has issues with Electron apps)\n          - minimize: Use the SW_MINIMIZE flag to hide windows when switching workspaces (has issues with frequent workspace switching)\n          - cloak:    Use the undocumented SetCloak Win32 function to hide windows when switching workspaces (has foregrounding issues)\n\nOptions:\n  -h, --help\n          Print help (see a summary with '-h')\n
"},{"location":"cli/workspace-custom-layout-rule.html","title":"workspace-custom-layout-rule","text":"
Add a dynamic custom layout for the specified workspace\n\nUsage: komorebic.exe workspace-custom-layout-rule <MONITOR> <WORKSPACE> <AT_CONTAINER_COUNT> <PATH>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-custom-layout.html","title":"workspace-custom-layout","text":"
Set a custom layout for the specified workspace\n\nUsage: komorebic.exe workspace-custom-layout <MONITOR> <WORKSPACE> <PATH>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <PATH>\n          JSON or YAML file from which the custom layout definition should be loaded\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-layout-rule.html","title":"workspace-layout-rule","text":"
Add a dynamic layout rule for the specified workspace\n\nUsage: komorebic.exe workspace-layout-rule <MONITOR> <WORKSPACE> <AT_CONTAINER_COUNT> <LAYOUT>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <AT_CONTAINER_COUNT>\n          The number of window containers on-screen required to trigger this layout rule\n\n  <LAYOUT>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-layout.html","title":"workspace-layout","text":"
Set the layout for the specified workspace\n\nUsage: komorebic.exe workspace-layout <MONITOR> <WORKSPACE> <VALUE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <VALUE>\n          [possible values: bsp, columns, rows, vertical-stack, horizontal-stack, ultrawide-vertical-stack, grid, right-main-vertical-stack]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-name.html","title":"workspace-name","text":"
Set the workspace name for the specified workspace\n\nUsage: komorebic.exe workspace-name <MONITOR> <WORKSPACE> <VALUE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <VALUE>\n          Name of the workspace as a String\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-padding.html","title":"workspace-padding","text":"
Set the workspace padding for the specified workspace\n\nUsage: komorebic.exe workspace-padding <MONITOR> <WORKSPACE> <SIZE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <SIZE>\n          Pixels to pad with as an integer\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-rule.html","title":"workspace-rule","text":"
Add a rule to associate an application with a workspace\n\nUsage: komorebic.exe workspace-rule <IDENTIFIER> <ID> <MONITOR> <WORKSPACE>\n\nArguments:\n  <IDENTIFIER>\n          [possible values: exe, class, title, path]\n\n  <ID>\n          Identifier as a string\n\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"cli/workspace-tiling.html","title":"workspace-tiling","text":"
Enable or disable window tiling for the specified workspace\n\nUsage: komorebic.exe workspace-tiling <MONITOR> <WORKSPACE> <VALUE>\n\nArguments:\n  <MONITOR>\n          Monitor index (zero-indexed)\n\n  <WORKSPACE>\n          Workspace index on the specified monitor (zero-indexed)\n\n  <VALUE>\n          [possible values: enable, disable]\n\nOptions:\n  -h, --help\n          Print help\n
"},{"location":"common-workflows/autohotkey.html","title":"AutoHotkey","text":"

If you would like to use Autohotkey, please make sure you have AutoHotKey v2 installed.

Generally, users who opt for AHK will have specific needs that can only be addressed by the advanced functionality of AHK, and so they are assumed to be able to craft their own configuration files.

If you would like to try out AHK, here is a simple sample configuration which largely matches the whkdrc sample configuration.

#Requires AutoHotkey v2.0.2\n#SingleInstance Force\n\nKomorebic(cmd) {\n    RunWait(format(\"komorebic.exe {}\", cmd), , \"Hide\")\n}\n\n!q::Komorebic(\"close\")\n!m::Komorebic(\"minimize\")\n\n; Focus windows\n!h::Komorebic(\"focus left\")\n!j::Komorebic(\"focus down\")\n!k::Komorebic(\"focus up\")\n!l::Komorebic(\"focus right\")\n\n!+[::Komorebic(\"cycle-focus previous\")\n!+]::Komorebic(\"cycle-focus next\")\n\n; Move windows\n!+h::Komorebic(\"move left\")\n!+j::Komorebic(\"move down\")\n!+k::Komorebic(\"move up\")\n!+l::Komorebic(\"move right\")\n\n; Stack windows\n!Left::Komorebic(\"stack left\")\n!Down::Komorebic(\"stack down\")\n!Up::Komorebic(\"stack up\")\n!Right::Komorebic(\"stack right\")\n!;::Komorebic(\"unstack\")\n![::Komorebic(\"cycle-stack previous\")\n!]::Komorebic(\"cycle-stack next\")\n\n; Resize\n!=::Komorebic(\"resize-axis horizontal increase\")\n!-::Komorebic(\"resize-axis horizontal decrease\")\n!+=::Komorebic(\"resize-axis vertical increase\")\n!+_::Komorebic(\"resize-axis vertical decrease\")\n\n; Manipulate windows\n!t::Komorebic(\"toggle-float\")\n!f::Komorebic(\"toggle-monocle\")\n\n; Window manager options\n!+r::Komorebic(\"retile\")\n!p::Komorebic(\"toggle-pause\")\n\n; Layouts\n!x::Komorebic(\"flip-layout horizontal\")\n!y::Komorebic(\"flip-layout vertical\")\n\n; Workspaces\n!1::Komorebic(\"focus-workspace 0\")\n!2::Komorebic(\"focus-workspace 1\")\n!3::Komorebic(\"focus-workspace 2\")\n!4::Komorebic(\"focus-workspace 3\")\n!5::Komorebic(\"focus-workspace 4\")\n!6::Komorebic(\"focus-workspace 5\")\n!7::Komorebic(\"focus-workspace 6\")\n!8::Komorebic(\"focus-workspace 7\")\n\n; Move windows across workspaces\n!+1::Komorebic(\"move-to-workspace 0\")\n!+2::Komorebic(\"move-to-workspace 1\")\n!+3::Komorebic(\"move-to-workspace 2\")\n!+4::Komorebic(\"move-to-workspace 3\")\n!+5::Komorebic(\"move-to-workspace 4\")\n!+6::Komorebic(\"move-to-workspace 5\")\n!+7::Komorebic(\"move-to-workspace 6\")\n!+8::Komorebic(\"move-to-workspace 7\")\n

By default, the komorebi.ahk file should be located in the $Env:USERPROFILE directory, however, if $Env:KOMOREBI_CONFIG_HOME is set, it should be located there.

Once the file is in place, you can stop komorebi and whkd by running komorebic stop --whkd, and then start komorebi with Autohotkey by running komorebic start --ahk.

"},{"location":"common-workflows/borders.html","title":"Borders","text":"

If you would like to add a visual border around both the currently focused window and unfocused windows ensure the following options are defined in the komorebi.json configuration file.

{\n\"border\": true,\n\"border_width\": 8,\n\"border_offset\": -1,\n\"border_style\": \"System\",\n\"border_colours\": {\n\"single\": \"#42a5f5\",\n\"stack\": \"#00a542\",\n\"monocle\": \"#ff3399\",\n\"unfocused\": \"#808080\"\n}\n}\n

It is important to note that borders will only apply to windows managed by komorebi.

This feature is not considered stable, and you may encounter visual artifacts from time to time.

"},{"location":"common-workflows/custom-layouts.html","title":"Custom Layouts","text":"

Particularly for users of ultrawide monitors, traditional tiling layouts may not seem like the most efficient use of screen space. If you feel this is the case with any of the default layouts, you are also welcome to create your own custom layouts and save them as JSON or YAML.

If you're not comfortable writing the layouts directly in JSON or YAML, you can use the komorebi Custom Layout Generator to interactively define a custom layout, and then copy the generated JSON content.

Custom layouts can be loaded on the current workspace or configured for a specific workspace in the komorebi.json configuration file.

{\n\"monitors\": [\n{\n\"workspaces\": [\n{\n\"name\": \"personal\",\n\"custom_layout\": \"C:/Users/LGUG2Z/my-custom-layout.json\"\n},\n]\n}\n]\n}\n

The fundamental building block of a custom komorebi layout is the Column.

Columns come in three variants:

  • Primary: This is where your primary focus will be on the screen most of the time. There must be exactly one Primary Column in any custom layout. Optionally, you can specify the percentage of the screen width that you want the Primary Column to occupy.
  • Secondary: This is an optional column that can either be full height of split horizontally into a fixed number of maximum rows. There can be any number of Secondary Columns in a custom layout.
  • Tertiary: This is the final column where any remaining windows will be split horizontally into rows as they get added.

If there is only one window on the screen when a custom layout is selected, that window will take up the full work area of the screen.

If the number of windows is equal to or less than the total number of columns defined in a custom layout, the windows will be arranged in an equal-width columns.

When the number of windows is greater than the number of columns defined in the custom layout, the windows will begin to be arranged according to the constraints set on the Primary and Secondary columns of the layout.

Here is an example custom layout that can be used as a starting point for your own:

- column: Secondary\nconfiguration: !Horizontal 2 # max number of rows\n- column: Primary\nconfiguration: !WidthPercentage 50 # percentage of screen\n- column: Tertiary\nconfiguration: Horizontal\n

"},{"location":"common-workflows/dynamic-layout-switching.html","title":"Dynamic Layout Switching","text":"

With komorebi it is possible to define rules to automatically change the layout on a specified workspace when a threshold of window containers is met.

{\n\"monitors\": [\n{\n\"workspaces\": [\n{\n\"name\": \"personal\",\n\"layout_rules\": {\n\"1\": \"BSP\"\n}\n\"custom_layout_rules\": {\n\"5\": \"C:/Users/LGUG2Z/my-custom-layout.json\"\n}\n},\n]\n}\n]\n}\n

In this example, when there are one or more window containers visible on the screen, the BSP layout is used, and when there are five or more window containers visible, a custom layout is used.

However, if you add workspace layout rules, you will not be able to manually change the layout of a workspace until all layout rules for that workspace have been cleared.

# for example, to clear rules from monitor 0, workspace 0\nkomorebic clear-workspace-layout-rules 0 0\n
"},{"location":"common-workflows/focus-follows-mouse.html","title":"Focus Follows Mouse","text":"

komorebi supports two focus-follows-mouse implementations; the native Windows Xmouse implementation, which treats the desktop, the task bar, and the system tray as windows and switches focus to them eagerly, and a custom komorebi implementation, which only considers windows managed by komorebi as valid targets to switch focus to when moving the mouse.

To enable the komorebi implementation you must start the process with the --ffm flag to explicitly enable the feature. This is because the mouse tracking required for this feature significantly increases the CPU usage of the process (on my machine, it jumps from <1% to ~4~), and this CPU increase persists regardless of whether focus-follows-mouse is enabled or disabled at any given time via komorebic's configuration commands.

If the komorebi process has been started with the --ffm flag, you can enable focus follows mouse behaviour in the komorebi.json configuration file.

{\n\"focus_follows_mouse\": \"Komorebi\"\n}\n

When calling any of the komorebic commands related to focus-follows-mouse functionality, the windows implementation will be chosen as the default implementation. You can optionally specify the komorebi implementation by passing it as an argument to the --implementation flag:

komorebic.exe toggle-focus-follows-mouse --implementation komorebi\n
"},{"location":"common-workflows/force-manage-windows.html","title":"Force Manage Windows","text":"

\u2757\ufe0fNOTE: A significant number of force-manage window rules for the most common applications are already generated for you

In some rare cases, a window may not automatically be registered to be managed by komorebi. You can add rules to enforce this behaviour in the komorebi.json configuration file.

{\n\"manage_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
"},{"location":"common-workflows/ignore-windows.html","title":"Ignore Windows","text":"

\u2757\ufe0fNOTE: A significant number of ignored window rules for the most common applications are already generated for you

Sometimes you will want a specific application to never be tiled, and instead float all the time. You can add rules to enforce this behaviour in the komorebi.json configuration file.

{\n\"float_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
"},{"location":"common-workflows/komorebi-config-home.html","title":"KOMOREBI_CONFIG_HOME","text":"

If you do not want to keep komorebi-related files in your $Env:USERPROFILE directory, you can specify a custom directory by setting the $Env:KOMOREBI_CONFIG_HOME environment variable.

For example, to use the ~/.config/komorebi directory:

# Run this command to make sure that the directory has been created\nmkdir -p ~/.config/komorebi\n\n# Run this command to open up your PowerShell profile configuration in Notepad\nnotepad $PROFILE\n\n# Add this line (with your login user!) to the bottom of your PowerShell profile configuration\n$Env:KOMOREBI_CONFIG_HOME = 'C:\\Users\\LGUG2Z\\.config\\komorebi'\n\n# Save the changes and then reload the PowerShell profile\n. $PROFILE\n

If you already have configuration files that you wish to keep, move them to the ~/.config/komorebi directory.

The next time you run komorebic start, any files created by or loaded by komorebi will be placed or expected to exist in this folder.

"},{"location":"common-workflows/mouse-follows-focus.html","title":"Mouse Follows Focus","text":"

By default, the mouse will move to the center of the window when the focus is changed in a given direction. This behaviour is know as 'mouse follows focus'. This behaviour can be disabled in the komorebi.json configuration file.

{\n\"mouse_follows_focus\": false,\n}\n

"},{"location":"common-workflows/remove-gaps.html","title":"Remove Gaps","text":"

If you would like to remove all gaps by default, both between windows themselves, and between the monitor edges and the windows, you can set the following configuration options to 0 and -1 in the komorebi.json configuration file.

{\n\"default_workspace_padding\": 0,\n\"default_container_padding\": 0,\n\"border_width\": 0,\n\"border_offset\": -1\n}\n

A restart of komorebi is required after changing these settings.

"},{"location":"common-workflows/stackbar.html","title":"Stackbar","text":"

If you would like to add a visual stackbar to show which windows are in a container stack ensure the following options are defined in the komorebi.json configuration file.

{\n\"stackbar\": {\n\"height\": 40,\n\"mode\": \"OnStack\",\n\"tabs\": {\n\"width\": 300,\n\"focused_text\": \"#00a542\",\n\"unfocused_text\": \"#b3b3b3\",\n\"background\": \"#141414\"\n}\n}\n}\n

This feature is not considered stable, and you may encounter visual artifacts from time to time.

"},{"location":"common-workflows/tray-and-multi-window-applications.html","title":"Tray and Multi-Window Applications","text":"

\u2757\ufe0fNOTE: A significant number of tray and multi-window application rules for the most common applications are already generated for you

If you are experiencing behaviour where closing a window leaves a blank tile, but minimizing the same window does not, you have probably enabled a 'close/minimize to tray' option for that application. You can tell komorebi to handle this application appropriately by identifying it via the executable name or the window class.

{\n\"tray_and_multi_window_applications\": [\n{\n\"kind\": \"Class\",\n\"id\": \"SDL_app\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
"},{"location":"release/v0-1-22.html","title":"v0.1.22","text":"

In addition to the changelog of new features and fixes, please note the following changes from v0.1.21 to adjust your configuration files accordingly.

"},{"location":"release/v0-1-22.html#tldr","title":"tl;dr","text":"

The way windows are sized and drawn has been improved to remove the need to manually specify and remove invisible borders for applications that overflow them. If you use the active window border, the first time you launch v0.1.22 you may end up with a huge border due to these changes.

active_window_border_width and active_window_border_offset have been renamed to border_width and border_offset as they now also apply outside the context of the active window border.

{\n\"active_window_border\": true,\n\"border_width\": 8,\n\"border_offset\": -1\n}\n

Users of the active window border should start from these settings and read the notes below before making further adjustments.

"},{"location":"release/v0-1-22.html#changes-to-active_window_border-and-window-sizing","title":"Changes to active_window_border, and window sizing:","text":"
  • The border no longer creates a second drop-shadow around the active window
  • Windows are now sized to fill the layout region entirely, ignoring window decorations such as drop shadows
  • Border offset now starts exactly at the paint edge of the window on all sides
  • Windows are sized such that the border offset and border width are taken into account
"},{"location":"release/v0-1-22.html#recommended-patterns","title":"Recommended patterns","text":""},{"location":"release/v0-1-22.html#gapless","title":"Gapless","text":"
  • Disable \"transparency effects\" Personalization > Colors
  • Set the following settings in komorebi.json:
    {\n\"default_workspace_padding\": 0,\n\"default_container_padding\": 0,\n\"border_offset\": -1,\n\"border_width\": 0\n}\n
"},{"location":"release/v0-1-22.html#1px-border","title":"1px border","text":"

A 1px border is drawn around the window edge. Users may see a gap for a single pixel, if the system theme has a transparent edge - this is the windows themed edge, and is not present for all applications.

{\n\"border_offset\": 0,\n\"border_width\": 1\n}\n
"}]} \ No newline at end of file