From e3f962df55653dc667b2addfd5397baed776e087 Mon Sep 17 00:00:00 2001
From: LGUG2Z There is a Discord server available for There is also a YouTube channel where I share 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: 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: 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. Run the following command to download example configuration files for With the example configurations downloaded, you can now start The example window manager configuration sets some sane defaults and provides five preconfigured workspaces on the primary monitor each with a different layout. 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 You can always download the latest version of these configurations by running When installing and running 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 You may have seen videos and screenshots of people using 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. 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. If you have a vertical monitor, I recommend using this layout. If you have an ultrawide monitor, I recommend using this layout. If you like the Please remember that There is one special directive at the top of the file, 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 It is important to note that neither This getting started guide suggests the installation of However, If using hotkey combinations with the It highly recommended that you enable support for long paths in Windows by running the following command in an Administrator Terminal before installing Make sure you have installed Issues with First add the extras bucket Then install the Once komorebi is installed, proceed to get the example configurations. Make sure you have installed the latest version of Issues with Install the Once komorebi is installed, proceed to get the example configurations. Make sure you have installed Clone the git repository, enter the directory, and build the following binaries: If the binaries have been built and added to your 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). This can happen in rare cases when your monitor state is not preserved after it wakes from sleep. 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). 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. Ensure komorebi is in an operational state by executing If komorebi is already unresponsive, then please restart komorebi first by running This appears to be fine -- komorebi is aware of the device and associated window handles. 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: 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. Wake your display again by pressing any key. komorebi should now be unresponsive. Don't stop komorebi just yet. Since it's unresponsive, you can open another shell instead to execute the above command. We can see the komorebi state is no longer associated with the previous device: If you would like to add a visual border around the currently focused window, ensure the following options are defined in the It is important to note that the active window border will only apply to windows managed by This feature is not considered stable, and you may encounter visual artifacts from time to time. 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, a simple sample configuration powered by 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 The fundamental building block of a custom komorebi layout is the Column. Columns come in three variants: 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: With 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. To enable the If the When calling any of the \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 \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 If you do not want to keep komorebi-related files in your For example, to use the If you already have configuration files that you wish to keep, move them to the The next time you run 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 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 A restart of 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 This feature is not considered stable, and you may encounter visual artifacts from time to time. \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 In addition to the changelog of new features and fixes, please note the following changes from 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 Users of the active window border should start from these settings and read the notes below before making further adjustments. 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. There is a Discord server available for There is also a YouTube channel where I share 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: 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: 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. Run the following command to download example configuration files for With the example configurations downloaded, you can now start The example window manager configuration sets some sane defaults and provides five preconfigured workspaces on the primary monitor each with a different layout. 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 You can always download the latest version of these configurations by running When installing and running 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 You may have seen videos and screenshots of people using 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. 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. If you have a vertical monitor, I recommend using this layout. If you have an ultrawide monitor, I recommend using this layout. If you like the Please remember that There is one special directive at the top of the file, 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 It is important to note that neither This getting started guide suggests the installation of However, If using hotkey combinations with the It highly recommended that you enable support for long paths in Windows by running the following command in an Administrator Terminal before installing Make sure you have installed Issues with First add the extras bucket Then install the Once komorebi is installed, proceed to get the example configurations. Make sure you have installed the latest version of Issues with Install the Once komorebi is installed, proceed to get the example configurations. Make sure you have installed Clone the git repository, enter the directory, and build the following binaries: If the binaries have been built and added to your 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). If you try to start komorebi with AHK using 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 After setting This can happen in rare cases when your monitor state is not preserved after it wakes from sleep. 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). 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. Ensure komorebi is in an operational state by executing If komorebi is already unresponsive, then please restart komorebi first by running This appears to be fine -- komorebi is aware of the device and associated window handles. 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. komorebi should now be unresponsive. Don't stop komorebi just yet. Since it's unresponsive, you can open another shell instead to execute the above command. We can see the komorebi state is no longer associated with the previous device: If you would like to add a visual border around the currently focused window, ensure the following options are defined in the It is important to note that the active window border will only apply to windows managed by This feature is not considered stable, and you may encounter visual artifacts from time to time. 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, a simple sample configuration powered by 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 The fundamental building block of a custom komorebi layout is the Column. Columns come in three variants: 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: With 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. To enable the If the When calling any of the \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 \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 If you do not want to keep komorebi-related files in your For example, to use the If you already have configuration files that you wish to keep, move them to the The next time you run 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 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 A restart of 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 This feature is not considered stable, and you may encounter visual artifacts from time to time. \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 In addition to the changelog of new features and fixes, please note the following changes from 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 Users of the active window border should start from these settings and read the notes below before making further adjustments. 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. If you try to start komorebi with AHK using 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 After setting This can happen in rare cases when your monitor state is not preserved after it
wakes from sleep.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.komorebi
-related discussion, help, troubleshooting etc. If you have any specific feature requests or bugs to report, please create an issue on GitHub.komorebi
live programming videos and tutorial videos.
"},{"location":"design.html#data-model","title":"Data Model","text":" PROCESS SOCKET\nwhkd/ahk --------> komorebic <------> komorebi\n
"},{"location":"example-configurations.html","title":"Example configurations","text":"komorebi
, and tiling window managers in general, are very complex pieces of software.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
komorebi
and `whkd.
"},{"location":"example-configurations.html#komorebijson","title":"komorebi.json","text":"komorebic start --whkd\n
"},{"location":"example-configurations.html#application-specific-configuration","title":"Application-specific configuration","text":"{\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_width\": 8,\n\"border_offset\": -1,\n\"active_window_border\": false,\n\"active_window_border_colours\": {\n\"single\": \"#42a5f5\",\n\"stack\": \"#00a542\",\n\"monocle\": \"#ff3399\"\n},\n\"stackbar\": {\n\"height\": 40,\n\"mode\": \"Never\",\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
komorebi
without additional configuration.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.komorebi
for the first time, the komorebic quickstart
command will usually download this file to the $Env:USERPROFILE
directory.default_workspace_padding
and default_container_padding
.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.
"},{"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":"+--+--+--+--+\n| | | | |\n| | | | |\n| | | | |\n+--+--+--+--+\n
"},{"location":"example-configurations.html#ultrawide-vertical-stack","title":"Ultrawide Vertical Stack","text":"+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n
"},{"location":"example-configurations.html#grid","title":"Grid","text":"+-----+-----------+-----+\n| | | |\n| | +-----+\n| | | |\n| | +-----+\n| | | |\n+-----+-----------+-----+\n
grid
layout in LeftWM this is almost exactly the same!
"},{"location":"example-configurations.html#whkdrc","title":"whkdrc","text":"+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n| | | | | | | | | | | | | | |\n| | | | | | | | | | | | | +---+\n+-----+-----+ | +---+---+ +---+---+---+ +---+---| |\n| | | | | | | | | | | | | +---+\n| | | | | | | | | | | | | | |\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n 4 windows 5 windows 6 windows 7 windows\n
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.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.
"},{"location":"example-configurations.html#setting-shell","title":"Setting .shell","text":".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\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\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\n
.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.
"},{"location":"example-configurations.html#key-codes","title":"Key codes","text":"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
)VK_
prefix. For example, the keycode VK_OEM_PLUS
becomes oem_plus
in the sample configuration above.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.komorebi.exe
or komorebic.exe
handle key bindings, because komorebi
is a tiling window manager and not a hotkey daemon.whkd
to allow you to bind komorebic.exe
commands to hotkeys to allow you to communicate with the tiling window manager using keyboard shortcuts.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.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.komorebi
is available pre-built to install via Scoop and WinGet, and you may also built it from source if you would prefer.
"},{"location":"installation.html#long-path-support","title":"Long path support","text":"komorebi
.
"},{"location":"installation.html#scoop","title":"Scoop","text":"Set-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem' -Name 'LongPathsEnabled' -Value 1\n
scoop
and verified that installed binaries are available in your $PATH
before proceeding.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.scoop bucket add extras\n
komorebi
and whkd
packages using scoop install
scoop install komorebi whkd\n
winget
and verified that installed binaries are available in your $PATH
before proceeding.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.komorebi
and whkd
packages using winget install
winget install LGUG2Z.komorebi\nwinget install LGUG2Z.whkd\n
rustup
, a stable rust
compiler toolchain, and the Visual Studio Visual Studio prerequisites.cargo +stable install --path komorebi --locked\ncargo +stable install --path komorebic --locked\ncargo +stable install --path komorebic-no-console --locked\n
$PATH
correctly, you should see some output when running komorebi --help
and komorebic --help
komorebic start
as normal.komorebic stop
and komorebic start
.
"},{"location":"cli/active-window-border-colour.html","title":"active-window-border-colour","text":"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
komorebic state
{\n\"monitors\": {\n\"elements\": [\n{\n\"id\": 65537,\n\"name\": \"DISPLAY1\",\n\"device\": null,\n\"device_id\": null,\n}\n]\n}\n}\n
null
, suggesting an issue when the display resumes from a suspended state.
"},{"location":"cli/active-window-border-offset.html","title":"active-window-border-offset","text":"Set the colour for the active window border\n\nUsage: komorebic.exe active-window-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]\n\n -h, --help\n Print help\n
"},{"location":"cli/active-window-border-width.html","title":"active-window-border-width","text":"Set the offset for the active window border\n\nUsage: komorebic.exe active-window-border-offset <OFFSET>\n\nArguments:\n <OFFSET>\n Desired offset of the active window border\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/active-window-border.html","title":"active-window-border","text":"Set the width for the active window border\n\nUsage: komorebic.exe active-window-border-width <WIDTH>\n\nArguments:\n <WIDTH>\n Desired width of the active window border\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/adjust-container-padding.html","title":"adjust-container-padding","text":"Enable or disable the active window border\n\nUsage: komorebic.exe active-window-border <BOOLEAN_STATE>\n\nArguments:\n <BOOLEAN_STATE>\n [possible values: enable, disable]\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/adjust-workspace-padding.html","title":"adjust-workspace-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/ahk-app-specific-configuration.html","title":"ahk-app-specific-configuration","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-library.html","title":"ahk-library","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/application-specific-configuration-schema.html","title":"application-specific-configuration-schema","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/change-layout.html","title":"change-layout","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/check.html","title":"check","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/clear-named-workspace-layout-rules.html","title":"clear-named-workspace-layout-rules","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-workspace-layout-rules.html","title":"clear-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/close.html","title":"close","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/complete-configuration.html","title":"complete-configuration","text":"Close the focused window\n\nUsage: komorebic.exe close\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/configuration.html","title":"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/container-padding.html","title":"container-padding","text":"Show the path to komorebi.json\n\nUsage: komorebic.exe configuration\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/cross-monitor-move-behaviour.html","title":"cross-monitor-move-behaviour","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/cycle-focus.html","title":"cycle-focus","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\nOptions:\n -h, --help\n Print help (see a summary with '-h')\n
"},{"location":"cli/cycle-layout.html","title":"cycle-layout","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-monitor.html","title":"cycle-monitor","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-move-to-monitor.html","title":"cycle-move-to-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-workspace.html","title":"cycle-move-to-workspace","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.html","title":"cycle-move","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-send-to-monitor.html","title":"cycle-send-to-monitor","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-workspace.html","title":"cycle-send-to-workspace","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-stack.html","title":"cycle-stack","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-workspace.html","title":"cycle-workspace","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/disable-autostart.html","title":"disable-autostart","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/display-index-preference.html","title":"display-index-preference","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/enable-autostart.html","title":"enable-autostart","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/ensure-named-workspaces.html","title":"ensure-named-workspaces","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-workspaces.html","title":"ensure-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/fetch-app-specific-configuration.html","title":"fetch-app-specific-configuration","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/flip-layout.html","title":"flip-layout","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/float-rule.html","title":"float-rule","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/focus-follows-mouse.html","title":"focus-follows-mouse","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-last-workspace.html","title":"focus-last-workspace","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-monitor-workspace.html","title":"focus-monitor-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.html","title":"focus-monitor","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-named-workspace.html","title":"focus-named-workspace","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-workspace.html","title":"focus-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-workspaces.html","title":"focus-workspaces","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.html","title":"focus","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/focused-workspace-container-padding.html","title":"focused-workspace-container-padding","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-padding.html","title":"focused-workspace-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/force-focus.html","title":"force-focus","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/format-app-specific-configuration.html","title":"format-app-specific-configuration","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/generate-static-config.html","title":"generate-static-config","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/global-state.html","title":"global-state","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-work-area-offset.html","title":"global-work-area-offset","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/identify-layered-application.html","title":"identify-layered-application","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/identify-object-name-change-application.html","title":"identify-object-name-change-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-tray-application.html","title":"identify-tray-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/initial-named-workspace-rule.html","title":"initial-named-workspace-rule","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-workspace-rule.html","title":"initial-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/invisible-borders.html","title":"invisible-borders","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/load-custom-layout.html","title":"load-custom-layout","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-resize.html","title":"load-resize","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/log.html","title":"log","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/manage-rule.html","title":"manage-rule","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.html","title":"manage","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/minimize.html","title":"minimize","text":"Force komorebi to manage the focused window\n\nUsage: komorebic.exe manage\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/monitor-index-preference.html","title":"monitor-index-preference","text":"Minimize the focused window\n\nUsage: komorebic.exe minimize\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/monitor-work-area-offset.html","title":"monitor-work-area-offset","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/mouse-follows-focus.html","title":"mouse-follows-focus","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/move-to-monitor-workspace.html","title":"move-to-monitor-workspace","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.html","title":"move-to-monitor","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-named-workspace.html","title":"move-to-named-workspace","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-workspace.html","title":"move-to-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-workspace-to-monitor.html","title":"move-workspace-to-monitor","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.html","title":"move","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/named-workspace-container-padding.html","title":"named-workspace-container-padding","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-custom-layout-rule.html","title":"named-workspace-custom-layout-rule","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.html","title":"named-workspace-custom-layout","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-layout-rule.html","title":"named-workspace-layout-rule","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.html","title":"named-workspace-layout","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-padding.html","title":"named-workspace-padding","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-rule.html","title":"named-workspace-rule","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-tiling.html","title":"named-workspace-tiling","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/new-workspace.html","title":"new-workspace","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/notification-schema.html","title":"notification-schema","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/promote-focus.html","title":"promote-focus","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.html","title":"promote","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/pwsh-app-specific-configuration.html","title":"pwsh-app-specific-configuration","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/query.html","title":"query","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/quick-load-resize.html","title":"quick-load-resize","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-save-resize.html","title":"quick-save-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/quickstart.html","title":"quickstart","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/reload-configuration.html","title":"reload-configuration","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/remove-title-bar.html","title":"remove-title-bar","text":"Reload ~/komorebi.ahk (if it exists)\n\nUsage: komorebic.exe reload-configuration\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/resize-axis.html","title":"resize-axis","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-delta.html","title":"resize-delta","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-edge.html","title":"resize-edge","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/restore-windows.html","title":"restore-windows","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/retile.html","title":"retile","text":"Restore all hidden windows (debugging command)\n\nUsage: komorebic.exe restore-windows\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/save-resize.html","title":"save-resize","text":"Force the retiling of all managed windows\n\nUsage: komorebic.exe retile\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/send-to-monitor-workspace.html","title":"send-to-monitor-workspace","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.html","title":"send-to-monitor","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-named-workspace.html","title":"send-to-named-workspace","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-workspace.html","title":"send-to-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/socket-schema.html","title":"socket-schema","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/stack.html","title":"stack","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/start.html","title":"start","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/state.html","title":"state","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/static-config-schema.html","title":"static-config-schema","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/stop.html","title":"stop","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/subscribe-pipe.html","title":"subscribe-pipe","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-socket.html","title":"subscribe-socket","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/swap-workspaces-with-monitor.html","title":"swap-workspaces-with-monitor","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/toggle-cross-monitor-move-behaviour.html","title":"toggle-cross-monitor-move-behaviour","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-float.html","title":"toggle-float","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-focus-follows-mouse.html","title":"toggle-focus-follows-mouse","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-maximize.html","title":"toggle-maximize","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-monocle.html","title":"toggle-monocle","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-mouse-follows-focus.html","title":"toggle-mouse-follows-focus","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-pause.html","title":"toggle-pause","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-tiling.html","title":"toggle-tiling","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-title-bars.html","title":"toggle-title-bars","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-window-container-behaviour.html","title":"toggle-window-container-behaviour","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/unmanage.html","title":"unmanage","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/unmanaged-window-operation-behaviour.html","title":"unmanaged-window-operation-behaviour","text":"Unmanage a window that was forcibly managed\n\nUsage: komorebic.exe unmanage\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/unstack.html","title":"unstack","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/unsubscribe-pipe.html","title":"unsubscribe-pipe","text":"Unstack the focused window\n\nUsage: komorebic.exe unstack\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-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/visible-windows.html","title":"visible-windows","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/watch-configuration.html","title":"watch-configuration","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/whkdrc.html","title":"whkdrc","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/window-hiding-behaviour.html","title":"window-hiding-behaviour","text":"Show the path to whkdrc\n\nUsage: komorebic.exe whkdrc\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/workspace-custom-layout-rule.html","title":"workspace-custom-layout-rule","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.html","title":"workspace-custom-layout","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-layout-rule.html","title":"workspace-layout-rule","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.html","title":"workspace-layout","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-name.html","title":"workspace-name","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-padding.html","title":"workspace-padding","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-rule.html","title":"workspace-rule","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-tiling.html","title":"workspace-tiling","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":"common-workflows/active-window-border.html","title":"Active Window Border","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
komorebi.json
configuration file.{\n\"active_window_border\": true,\n\"active_window_border_style\": \"Rounded\",\n\"active_window_border_colours\": {\n\"single\": {\n\"r\": 66,\n\"g\": 165,\n\"b\": 245\n},\n\"stack\": {\n\"r\": 256,\n\"g\": 165,\n\"b\": 66\n},\n\"monocle\": {\n\"r\": 255,\n\"g\": 51,\n\"b\": 153\n}\n},\n}\n
komorebi
.komorebic.lib.ahk
is provided as a starting point. This sample configuration does not take into account the use of a static configuration file; if you choose to use a static configuration file alongside AHK, you can remove all the configuration options from your komorebi.ahk
and use it solely to handle hotkey bindings.
"},{"location":"common-workflows/custom-layouts.html","title":"Custom Layouts","text":"# save the latest generated komorebic library to ~/komorebic.lib.ahk\niwr https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.20/komorebic.lib.ahk -OutFile $Env:USERPROFILE\\komorebic.lib.ahk\n\n# save the sample komorebi configuration file to ~/komorebi.ahk\niwr https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.20/komorebi.sample.ahk -OutFile $Env:USERPROFILE\\komorebi.ahk\n
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
"},{"location":"common-workflows/dynamic-layout-switching.html","title":"Dynamically Layout Switching","text":"- column: Secondary\nconfiguration: !Horizontal 2 # max number of rows\n- column: Primary\nconfiguration: !WidthPercentage 50 # percentage of screen\n- column: Tertiary\nconfiguration: Horizontal\n
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
"},{"location":"common-workflows/focus-follows-mouse.html","title":"Focus Follows Mouse","text":"# for example, to clear rules from monitor 0, workspace 0\nkomorebic clear-workspace-layout-rules 0 0\n
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.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.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
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:
"},{"location":"common-workflows/force-manage-windows.html","title":"Force Manage Windows","text":"komorebic.exe toggle-focus-follows-mouse --implementation komorebi\n
komorebi
. You can add rules to enforce this behaviour in the komorebi.json
configuration file.
"},{"location":"common-workflows/ignore-windows.html","title":"Ignore Windows","text":"{\n\"manage_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
komorebi.json
configuration file.
"},{"location":"common-workflows/komorebi-config-home.html","title":"{\n\"float_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
KOMOREBI_CONFIG_HOME
","text":"$Env:USERPROFILE
directory, you can specify a custom directory by setting the $Env:KOMOREBI_CONFIG_HOME
environment variable.~/.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
~/.config/komorebi
directory.komorebic start
, any files created by or loaded by komorebi will be placed or expected to exist in this folder.komorebi.json
configuration file.
"},{"location":"common-workflows/remove-gaps.html","title":"Remove Gaps","text":"{\n\"mouse_follows_focus\": false,\n}\n
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
komorebi
is required after changing these settings.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
komorebi
to handle this application appropriately by identifying it via the executable name or the window class.
"},{"location":"release/v0-1-22.html","title":"V0 1 22","text":"{\n\"tray_and_multi_window_applications\": [\n{\n\"kind\": \"Class\",\n\"id\": \"SDL_app\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
v0.1.21
to adjust your configuration files accordingly.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
active_window_border
, and window sizing:","text":"
"},{"location":"release/v0-1-22.html#recommended-patterns","title":"Recommended patterns","text":""},{"location":"release/v0-1-22.html#gapless","title":"Gapless","text":"
"},{"location":"release/v0-1-22.html#1px-border","title":"1px border","text":"komorebi.json
: {\n\"default_workspace_padding\": 0,\n\"default_container_padding\": 0,\n\"border_offset\": -1,\n\"border_width\": 0\n}\n
"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"index.html","title":"Index","text":" {\n\"border_offset\": 0,\n\"border_width\": 1\n}\n
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.komorebi
-related discussion, help, troubleshooting etc. If you have any specific feature requests or bugs to report, please create an issue on GitHub.komorebi
live programming videos and tutorial videos.
"},{"location":"design.html#data-model","title":"Data Model","text":" PROCESS SOCKET\nwhkd/ahk --------> komorebic <------> komorebi\n
"},{"location":"example-configurations.html","title":"Example configurations","text":"komorebi
, and tiling window managers in general, are very complex pieces of software.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
komorebi
and `whkd.
"},{"location":"example-configurations.html#komorebijson","title":"komorebi.json","text":"komorebic start --whkd\n
"},{"location":"example-configurations.html#application-specific-configuration","title":"Application-specific configuration","text":"{\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_width\": 8,\n\"border_offset\": -1,\n\"active_window_border\": false,\n\"active_window_border_colours\": {\n\"single\": \"#42a5f5\",\n\"stack\": \"#00a542\",\n\"monocle\": \"#ff3399\"\n},\n\"stackbar\": {\n\"height\": 40,\n\"mode\": \"Never\",\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
komorebi
without additional configuration.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.komorebi
for the first time, the komorebic quickstart
command will usually download this file to the $Env:USERPROFILE
directory.default_workspace_padding
and default_container_padding
.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.
"},{"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":"+--+--+--+--+\n| | | | |\n| | | | |\n| | | | |\n+--+--+--+--+\n
"},{"location":"example-configurations.html#ultrawide-vertical-stack","title":"Ultrawide Vertical Stack","text":"+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n
"},{"location":"example-configurations.html#grid","title":"Grid","text":"+-----+-----------+-----+\n| | | |\n| | +-----+\n| | | |\n| | +-----+\n| | | |\n+-----+-----------+-----+\n
grid
layout in LeftWM this is almost exactly the same!
"},{"location":"example-configurations.html#whkdrc","title":"whkdrc","text":"+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n| | | | | | | | | | | | | | |\n| | | | | | | | | | | | | +---+\n+-----+-----+ | +---+---+ +---+---+---+ +---+---| |\n| | | | | | | | | | | | | +---+\n| | | | | | | | | | | | | | |\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n 4 windows 5 windows 6 windows 7 windows\n
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.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.
"},{"location":"example-configurations.html#setting-shell","title":"Setting .shell","text":".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\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\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\n
.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.
"},{"location":"example-configurations.html#key-codes","title":"Key codes","text":"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
)VK_
prefix. For example, the keycode VK_OEM_PLUS
becomes oem_plus
in the sample configuration above.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.komorebi.exe
or komorebic.exe
handle key bindings, because komorebi
is a tiling window manager and not a hotkey daemon.whkd
to allow you to bind komorebic.exe
commands to hotkeys to allow you to communicate with the tiling window manager using keyboard shortcuts.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.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.komorebi
is available pre-built to install via Scoop and WinGet, and you may also built it from source if you would prefer.
"},{"location":"installation.html#long-path-support","title":"Long path support","text":"komorebi
.
"},{"location":"installation.html#scoop","title":"Scoop","text":"Set-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem' -Name 'LongPathsEnabled' -Value 1\n
scoop
and verified that installed binaries are available in your $PATH
before proceeding.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.scoop bucket add extras\n
komorebi
and whkd
packages using scoop install
scoop install komorebi whkd\n
winget
and verified that installed binaries are available in your $PATH
before proceeding.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.komorebi
and whkd
packages using winget install
winget install LGUG2Z.komorebi\nwinget install LGUG2Z.whkd\n
rustup
, a stable rust
compiler toolchain, and the Visual Studio Visual Studio prerequisites.cargo +stable install --path komorebi --locked\ncargo +stable install --path komorebic --locked\ncargo +stable install --path komorebic-no-console --locked\n
$PATH
correctly, you should see some output when running komorebi --help
and komorebic --help
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
KOMOREBI_AHK_EXE
environment variable in your PowerShell profile to match the name of the executable as it is found on your system.KOMOREBI_AHK_EXE
make sure to either reload your PowerShell profile or open a new terminal tab.komorebic start
as normal.komorebic stop
and komorebic start
.
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
komorebic state
{\n\"monitors\": {\n\"elements\": [\n{\n\"id\": 65537,\n\"name\": \"DISPLAY1\",\n\"device\": null,\n\"device_id\": null\n}\n]\n}\n}\n
null
, suggesting an issue when the display resumes from a suspended state.
"},{"location":"cli/active-window-border-offset.html","title":"active-window-border-offset","text":"Set the colour for the active window border\n\nUsage: komorebic.exe active-window-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]\n\n -h, --help\n Print help\n
"},{"location":"cli/active-window-border-width.html","title":"active-window-border-width","text":"Set the offset for the active window border\n\nUsage: komorebic.exe active-window-border-offset <OFFSET>\n\nArguments:\n <OFFSET>\n Desired offset of the active window border\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/active-window-border.html","title":"active-window-border","text":"Set the width for the active window border\n\nUsage: komorebic.exe active-window-border-width <WIDTH>\n\nArguments:\n <WIDTH>\n Desired width of the active window border\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/adjust-container-padding.html","title":"adjust-container-padding","text":"Enable or disable the active window border\n\nUsage: komorebic.exe active-window-border <BOOLEAN_STATE>\n\nArguments:\n <BOOLEAN_STATE>\n [possible values: enable, disable]\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/adjust-workspace-padding.html","title":"adjust-workspace-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/ahk-app-specific-configuration.html","title":"ahk-app-specific-configuration","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-library.html","title":"ahk-library","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/application-specific-configuration-schema.html","title":"application-specific-configuration-schema","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/change-layout.html","title":"change-layout","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/check.html","title":"check","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/clear-named-workspace-layout-rules.html","title":"clear-named-workspace-layout-rules","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-workspace-layout-rules.html","title":"clear-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/close.html","title":"close","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/complete-configuration.html","title":"complete-configuration","text":"Close the focused window\n\nUsage: komorebic.exe close\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/configuration.html","title":"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/container-padding.html","title":"container-padding","text":"Show the path to komorebi.json\n\nUsage: komorebic.exe configuration\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/cross-monitor-move-behaviour.html","title":"cross-monitor-move-behaviour","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/cycle-focus.html","title":"cycle-focus","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\nOptions:\n -h, --help\n Print help (see a summary with '-h')\n
"},{"location":"cli/cycle-layout.html","title":"cycle-layout","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-monitor.html","title":"cycle-monitor","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-move-to-monitor.html","title":"cycle-move-to-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-workspace.html","title":"cycle-move-to-workspace","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.html","title":"cycle-move","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-send-to-monitor.html","title":"cycle-send-to-monitor","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-workspace.html","title":"cycle-send-to-workspace","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-stack.html","title":"cycle-stack","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-workspace.html","title":"cycle-workspace","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/disable-autostart.html","title":"disable-autostart","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/display-index-preference.html","title":"display-index-preference","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/enable-autostart.html","title":"enable-autostart","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/ensure-named-workspaces.html","title":"ensure-named-workspaces","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-workspaces.html","title":"ensure-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/fetch-app-specific-configuration.html","title":"fetch-app-specific-configuration","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/flip-layout.html","title":"flip-layout","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/float-rule.html","title":"float-rule","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/focus-follows-mouse.html","title":"focus-follows-mouse","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-last-workspace.html","title":"focus-last-workspace","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-monitor-workspace.html","title":"focus-monitor-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.html","title":"focus-monitor","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-named-workspace.html","title":"focus-named-workspace","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-workspace.html","title":"focus-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-workspaces.html","title":"focus-workspaces","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.html","title":"focus","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/focused-workspace-container-padding.html","title":"focused-workspace-container-padding","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-padding.html","title":"focused-workspace-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/force-focus.html","title":"force-focus","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/format-app-specific-configuration.html","title":"format-app-specific-configuration","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/generate-static-config.html","title":"generate-static-config","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/global-state.html","title":"global-state","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-work-area-offset.html","title":"global-work-area-offset","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/identify-layered-application.html","title":"identify-layered-application","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/identify-object-name-change-application.html","title":"identify-object-name-change-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-tray-application.html","title":"identify-tray-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/initial-named-workspace-rule.html","title":"initial-named-workspace-rule","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-workspace-rule.html","title":"initial-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/invisible-borders.html","title":"invisible-borders","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/load-custom-layout.html","title":"load-custom-layout","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-resize.html","title":"load-resize","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/log.html","title":"log","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/manage-rule.html","title":"manage-rule","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.html","title":"manage","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/minimize.html","title":"minimize","text":"Force komorebi to manage the focused window\n\nUsage: komorebic.exe manage\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/monitor-index-preference.html","title":"monitor-index-preference","text":"Minimize the focused window\n\nUsage: komorebic.exe minimize\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/monitor-work-area-offset.html","title":"monitor-work-area-offset","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/mouse-follows-focus.html","title":"mouse-follows-focus","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/move-to-monitor-workspace.html","title":"move-to-monitor-workspace","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.html","title":"move-to-monitor","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-named-workspace.html","title":"move-to-named-workspace","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-workspace.html","title":"move-to-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-workspace-to-monitor.html","title":"move-workspace-to-monitor","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.html","title":"move","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/named-workspace-container-padding.html","title":"named-workspace-container-padding","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-custom-layout-rule.html","title":"named-workspace-custom-layout-rule","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.html","title":"named-workspace-custom-layout","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-layout-rule.html","title":"named-workspace-layout-rule","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.html","title":"named-workspace-layout","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-padding.html","title":"named-workspace-padding","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-rule.html","title":"named-workspace-rule","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-tiling.html","title":"named-workspace-tiling","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/new-workspace.html","title":"new-workspace","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/notification-schema.html","title":"notification-schema","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/promote-focus.html","title":"promote-focus","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.html","title":"promote","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/pwsh-app-specific-configuration.html","title":"pwsh-app-specific-configuration","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/query.html","title":"query","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/quick-load-resize.html","title":"quick-load-resize","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-save-resize.html","title":"quick-save-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/quickstart.html","title":"quickstart","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/reload-configuration.html","title":"reload-configuration","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/remove-title-bar.html","title":"remove-title-bar","text":"Reload ~/komorebi.ahk (if it exists)\n\nUsage: komorebic.exe reload-configuration\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/resize-axis.html","title":"resize-axis","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-delta.html","title":"resize-delta","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-edge.html","title":"resize-edge","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/restore-windows.html","title":"restore-windows","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/retile.html","title":"retile","text":"Restore all hidden windows (debugging command)\n\nUsage: komorebic.exe restore-windows\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/save-resize.html","title":"save-resize","text":"Force the retiling of all managed windows\n\nUsage: komorebic.exe retile\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/send-to-monitor-workspace.html","title":"send-to-monitor-workspace","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.html","title":"send-to-monitor","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-named-workspace.html","title":"send-to-named-workspace","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-workspace.html","title":"send-to-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/socket-schema.html","title":"socket-schema","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/stack.html","title":"stack","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/start.html","title":"start","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/state.html","title":"state","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/static-config-schema.html","title":"static-config-schema","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/stop.html","title":"stop","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/subscribe-pipe.html","title":"subscribe-pipe","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-socket.html","title":"subscribe-socket","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/swap-workspaces-with-monitor.html","title":"swap-workspaces-with-monitor","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/toggle-cross-monitor-move-behaviour.html","title":"toggle-cross-monitor-move-behaviour","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-float.html","title":"toggle-float","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-focus-follows-mouse.html","title":"toggle-focus-follows-mouse","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-maximize.html","title":"toggle-maximize","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-monocle.html","title":"toggle-monocle","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-mouse-follows-focus.html","title":"toggle-mouse-follows-focus","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-pause.html","title":"toggle-pause","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-tiling.html","title":"toggle-tiling","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-title-bars.html","title":"toggle-title-bars","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-window-container-behaviour.html","title":"toggle-window-container-behaviour","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/unmanage.html","title":"unmanage","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/unmanaged-window-operation-behaviour.html","title":"unmanaged-window-operation-behaviour","text":"Unmanage a window that was forcibly managed\n\nUsage: komorebic.exe unmanage\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/unstack.html","title":"unstack","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/unsubscribe-pipe.html","title":"unsubscribe-pipe","text":"Unstack the focused window\n\nUsage: komorebic.exe unstack\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-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/visible-windows.html","title":"visible-windows","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/watch-configuration.html","title":"watch-configuration","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/whkdrc.html","title":"whkdrc","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/window-hiding-behaviour.html","title":"window-hiding-behaviour","text":"Show the path to whkdrc\n\nUsage: komorebic.exe whkdrc\n\nOptions:\n -h, --help\n Print help\n
"},{"location":"cli/workspace-custom-layout-rule.html","title":"workspace-custom-layout-rule","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.html","title":"workspace-custom-layout","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-layout-rule.html","title":"workspace-layout-rule","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.html","title":"workspace-layout","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-name.html","title":"workspace-name","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-padding.html","title":"workspace-padding","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-rule.html","title":"workspace-rule","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-tiling.html","title":"workspace-tiling","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":"common-workflows/active-window-border.html","title":"Active Window Border","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
komorebi.json
configuration file.{\n\"active_window_border\": true,\n\"active_window_border_style\": \"Rounded\",\n\"active_window_border_colours\": {\n\"single\": {\n\"r\": 66,\n\"g\": 165,\n\"b\": 245\n},\n\"stack\": {\n\"r\": 256,\n\"g\": 165,\n\"b\": 66\n},\n\"monocle\": {\n\"r\": 255,\n\"g\": 51,\n\"b\": 153\n}\n},\n}\n
komorebi
.komorebic.lib.ahk
is provided as a starting point. This sample configuration does not take into account the use of a static configuration file; if you choose to use a static configuration file alongside AHK, you can remove all the configuration options from your komorebi.ahk
and use it solely to handle hotkey bindings.
"},{"location":"common-workflows/custom-layouts.html","title":"Custom Layouts","text":"# save the latest generated komorebic library to ~/komorebic.lib.ahk\niwr https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.20/komorebic.lib.ahk -OutFile $Env:USERPROFILE\\komorebic.lib.ahk\n\n# save the sample komorebi configuration file to ~/komorebi.ahk\niwr https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.20/komorebi.sample.ahk -OutFile $Env:USERPROFILE\\komorebi.ahk\n
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
"},{"location":"common-workflows/dynamic-layout-switching.html","title":"Dynamically Layout Switching","text":"- column: Secondary\nconfiguration: !Horizontal 2 # max number of rows\n- column: Primary\nconfiguration: !WidthPercentage 50 # percentage of screen\n- column: Tertiary\nconfiguration: Horizontal\n
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
"},{"location":"common-workflows/focus-follows-mouse.html","title":"Focus Follows Mouse","text":"# for example, to clear rules from monitor 0, workspace 0\nkomorebic clear-workspace-layout-rules 0 0\n
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.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.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
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:
"},{"location":"common-workflows/force-manage-windows.html","title":"Force Manage Windows","text":"komorebic.exe toggle-focus-follows-mouse --implementation komorebi\n
komorebi
. You can add rules to enforce this behaviour in the komorebi.json
configuration file.
"},{"location":"common-workflows/ignore-windows.html","title":"Ignore Windows","text":"{\n\"manage_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
komorebi.json
configuration file.
"},{"location":"common-workflows/komorebi-config-home.html","title":"{\n\"float_rules\": [\n{\n\"kind\": \"Title\",\n\"id\": \"Media Player\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
KOMOREBI_CONFIG_HOME
","text":"$Env:USERPROFILE
directory, you can specify a custom directory by setting the $Env:KOMOREBI_CONFIG_HOME
environment variable.~/.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
~/.config/komorebi
directory.komorebic start
, any files created by or loaded by komorebi will be placed or expected to exist in this folder.komorebi.json
configuration file.
"},{"location":"common-workflows/remove-gaps.html","title":"Remove Gaps","text":"{\n\"mouse_follows_focus\": false,\n}\n
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
komorebi
is required after changing these settings.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
komorebi
to handle this application appropriately by identifying it via the executable name or the window class.
"},{"location":"release/v0-1-22.html","title":"V0 1 22","text":"{\n\"tray_and_multi_window_applications\": [\n{\n\"kind\": \"Class\",\n\"id\": \"SDL_app\",\n\"matching_strategy\": \"Equals\"\n}\n]\n}\n
v0.1.21
to adjust your configuration files accordingly.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
active_window_border
, and window sizing:","text":"
"},{"location":"release/v0-1-22.html#recommended-patterns","title":"Recommended patterns","text":""},{"location":"release/v0-1-22.html#gapless","title":"Gapless","text":"
"},{"location":"release/v0-1-22.html#1px-border","title":"1px border","text":"komorebi.json
: {\n\"default_workspace_padding\": 0,\n\"default_container_padding\": 0,\n\"border_offset\": -1,\n\"border_width\": 0\n}\n
"}]}
\ No newline at end of file
diff --git a/troubleshooting.html b/troubleshooting.html
index 92e4f9de..88eeb9fd 100644
--- a/troubleshooting.html
+++ b/troubleshooting.html
@@ -595,6 +595,13 @@
{\n\"border_offset\": 0,\n\"border_width\": 1\n}\n
+
+
Troubleshooting
+AutoHotKey executable not found
+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
+
KOMOREBI_AHK_EXE
+environment variable in your
+PowerShell profile
+to match the name of the executable as it is found on your system.KOMOREBI_AHK_EXE
make sure to either reload your PowerShell
+profile or open a new terminal tab.Komorebi is unresponsive when the display wakes from sleep
Solution
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 +
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.
If komorebi is already unresponsive, then please restart komorebi first by
running komorebic stop
and komorebic start
.
komorebic state
komorebic state
{
"monitors": {
"elements": [
@@ -4210,29 +4236,31 @@ Reproducing
}
This appears to be fine -- komorebi is aware of the device and associated -window handles.
- -Let your display go to sleep.
+ window handles. +Simply turning the monitor off is not enough to reproduce the problem; you must -let Windows turn off the display itself.
+ 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.
Wake your display again by pressing any key.
+ +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.
+komorebi should now be unresponsive.
-komorebic state
Don't stop komorebi just yet.
+komorebic state
Don't stop komorebi just yet.
Since it's unresponsive, you can open another shell instead to execute the above command.
{
"monitors": {
@@ -4241,17 +4269,15 @@ Reproducing
"id": 65537,
"name": "DISPLAY1",
"device": null,
- "device_id": null,
+ "device_id": null
}
]
}
}
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.
null
, suggesting an issue when the display resumes from a suspended
+ state.