[BUG]: Preserve floating layer when moving/focusing windows across monitors #695

Open
opened 2026-01-05 14:52:25 +01:00 by adam · 0 comments
Owner

Originally created by @snasir-dev on GitHub (Nov 4, 2025).

Summary

Hi, I have come across Komorebi, and I have really loving this amazing peice of software. Thank you and all the contributors for creating such an amazing product.

I have come across this issue that I am stuck on and I would like to request help regarding if there is any possible solution or workaround to fix it. Any help would be greatly appreciated.

I would like the ability to move any focused window, to any other monitor, where it respects the type of window it is "floating" or "tiling" window.

The behavior I wanted was similar to the behavior you see in these commands:

komorebic focus down/up -> when it goes to the other monitor (this behavior occurs when it can no longer go up or down in the current windows, then goes to the next monitor), it ALWAYS RESPECTS if the window is in tiling mode or not - This is the exact sort of behavior I want
komorebic komorebic focus-workspace -> This command when switching workspaces ALWAYS RESPECTS if the workspace that you focus is already in "floating" mode or "tiling" and does not revert it.

However, If I try to use any of these commands, they DO NOT respect the "floating" layer, and always revert it back to the "Tiling" layer. This causes it to always UNFOCUS any "floating" focused window I would move to another monitor because the floating layer is no longer active.

Trying to use any of these commands, they DO NOT respect the "floating" layer, and always revert it back to the "Tiling" layer

  • komorebic cycle-move-to-monitor next/previous
  • komorebic cycle-monitor next/previous
  • komorebic move-to-monitor

I would like the ability to do a few things

  1. Focus another monitor while retaining the proper layer that workspace was previously in (Tiling or Floating).

Trying to do following command always swithes it to "Tiling" layer even if that workspace was in "Floating" Layer
alt + shift + d : komorebic cycle-monitor next;

If the monitor that is switched to is already in "Floating" Layer, it should not revert it back to "Tiling" Layer.

I also have a command that lets me very easily send the focused window to the other monitor in a given workspace:

# Note 'komorebic retile' is used to retile (or readjust tile size), which removes weird stuff like left over borders and window not being full size or properly sized. NEED TO ADD SLEEP OTHERWISE CAUSES ISSUES.
alt + shift + 1         : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 0; Start-Sleep -Milliseconds 150; komorebic retile; 
alt + shift + 2         : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 1; Start-Sleep -Milliseconds 150; komorebic retile; 
alt + shift + 3         : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 2; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 4         : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 3; Start-Sleep -Milliseconds 150; komorebic retile; 
alt + shift + 5         : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 4; Start-Sleep -Milliseconds 150; komorebic retile;

This works great for any focused window that is not a "floating" window. when pressing alt + shift + 2 for example it will send it to my other monitor in the 2nd workspace. Pressing it again would send it back to my previous monitor in workspace 2.

However, if I try do to run these commands if the focused window is a "floating" window, it will first move the focused window to the other monitor, then it will force "Tiling" Layer, which will cause the floating window I just moved to lose focus which would then make it unable to move that tiling focused window to the specified workspace I had wanted. It would just be stuck on the exact workspace the other monitor was at. If the monitor I wanted to move the tiling window was at workspace 1 and I pressed ALT+SHIFT+3 wanting to send a tiling window to that monitor for workspace 3, it would not work. Instead, it would focus the monitor I moved the window to, change it to Tiling mode, and then not move to workspace 3.

Major issue with forcing "Tiling" Layer

There is a major reason why always forcing to "Tiling" Layer is a major issue. Anytime we switch back from "Floating" layer to "Tiling" Layer, it does not retain the order of which floating windows were most recently focused. Rather it always defaults to the order in which floating windows were added (when using the komorebic cycel-focus <previous/next> commands).

Example:
I float following windows in order

  • Notepad
  • File Explorer
  • Notepad++
  • Notion

Say I want to then use Notion for referencing my notes repteadly and quickly switch between Tiling layer and floating layer. Anytime I switch to tiling layer and see a pdf or do anything then go back to "Floating" Layer, it would not show me Notion as the first window, rather it would show me Notepad, then file explorer, then notepad++ then notion.

When using following commands to move between floating windows:

alt + u : komorebic cycle-focus previous
alt + shift + u : komorebic cycle-focus next

Two things to note, komorebic cycle-focus next gets bugged where it won't let you move past first window, so you are forced to use komorebic cycle-focus previous to switch between the windows.

The behavior here is not consistent with moving floating windows with

komorebic focus left/right/up/down

Which actually retains the exact window when you switch between layers. Cycle-focus does not. Reason I would prefer using cycle-focus is because it ensures I never get out of tiling mode and stay within the same workspace. Using "komorebic focus " command makes it so I feel like I lose control and sometimes it goes to a different monitor or a different workspace especially when windows are overlapping and in different sizes, cycel-focus command ensures it will never focus another monitor or go to a different workspace, but never retains the behavior of when coming back to the tiling layer, to keep the exact same floating window you were previously on.

Here is a video example. I am not sure how to create a video for two monitors, so the monitor you see is the window where I am going to move my focused-window to.

https://github.com/user-attachments/assets/8c0e1863-2000-43ca-8143-f45f03445112

I run command "komorebic cycle-move-to-monitor next; komorebic move-to-workspace 1; Start-Sleep -Milliseconds 150; komorebic retile;" where my focused window was a WARP terminal application.

The monitor you see where I will move to is at the start in floating layer, however, the moment komorebic cycle-move-to-monitor next runs it will automatically change it to tiling layer. Then triggering floating layer, it will not immediately focus the Warp Terminal that w

It is a bit confusing to show, but the moment you see the adobe pdf, is when the window was moved, it auto changed from the floating window mode to the tiling mode.

I believe what should happen is that instead of it going to tiling mode, it should immediately just put warp at the front focused and remain in floating mode.

I just want to know how the following can happen

If I move any Floating window to another monitor with cycle-move-to-monitor, how can it retain floating layer in that monitor instead of it always defaulting to tiling layer.
If I focus another monitor with cycle-monitor, how can it respect whatever layer that workspace window is on, floating or tiling without it always forcing it into tiling layer.

Version Information

OS Name/Version:
Edition Windows 10 Home
Version 22H2
Installed on ‎11/‎20/‎2020
OS Build 19045.6456

=============
komorebi Version:
komorebic 0.1.38
tag:v0.1.38
commit_hash:ffa76ea2
build_time:2025-09-13 18:40:25 +00:00
build_env:rustc 1.89.0 (29483883e 2025-08-04),stable-x86_64-pc-windows-msvc

Komorebi Configuration

Komorebi.json file:

{
	"$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.37/schema.json",
	"app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json",
	"window_hiding_behaviour": "Cloak",
	"cross_monitor_move_behaviour": "Insert",
	"cross_boundary_behaviour": "Workspace",
	"window_handling_behaviour": "Async",
	"floating_layer_behaviour": "Float",

	"mouse_follows_focus": true,
	"focus_follows_mouse": "Komorebi",

	"default_workspace_padding": 0,
	"default_container_padding": -1,

	"toggle_float_placement": "CenterAndResize",
	"floating_window_aspect_ratio": "Widescreen",
	"floating_layer_placement": "Center",
	"float_rule_placement": "Center",

	"border": true,
	"border_implementation": "Komorebi",
	"border_width": 4,
	"border_offset": 0,
	"border_style": "Rounded",
	"border_colours": {
		"single": "#28c6ff",
		"stack": "#00ff7b",
		"monocle": "#ec5959",
		"floating": "#fbf1c7",
		"unfocused": "#353333",
		"unfocused_locked": "#ff2e2e"
	},

	"animation": {
		"enabled": true,
		"duration": 250,
		"fps": 120,
		"style": {
			"movement": "EaseOutBack",
			"transparency": "Linear"
		}
	},

	"transparency": false,
	"transparency_alpha": 240,

	"bar_configurations": [
		"$Env:KOMOREBI_CONFIG_HOME/komorebi.bar.monitor1.json",
		"$Env:KOMOREBI_CONFIG_HOME/komorebi.bar.monitor2.json"
	],
	"display_index_preferences": {
		"0": "Z7K00615SL0",
		"1": "38796"
	},

	"monitors": [
		{
			"name": "Primary",
			"workspaces": [
				{
					"name": "1",
					"layout": "VerticalStack",

					"initial_workspace_rules": [
						{
							"kind": "Exe",
							"id": "opera.exe",
							"matching_strategy": "Equals"
						},
						{
							"kind": "Exe",
							"id": "olk.exe",
							"matching_strategy": "Equals"
						}
					]
				},
				{
					"name": "2",
					"layout": "Grid",

					"initial_workspace_rules": [
						{
							"kind": "Exe",
							"id": "explorer.exe",
							"matching_strategy": "Equals"
						}
					],
					"window_container_behaviour": "Create"
				},
				{
					"name": "3",
					"layout": "Grid"
				},
				{
					"name": "4",
					"layout": "UltrawideVerticalStack"
				},
				{
					"name": "5",
					"layout": "Grid"
				}
			]
		},
		{
			"name": "Secondary",
			"workspaces": [
				{
					"name": "I",
					"layout": "BSP",
					"initial_workspace_rules": [
						{
							"kind": "Exe",
							"id": "Obsidian.exe",
							"matching_strategy": "Equals"
						},
						{
							"kind": "Exe",
							"id": "Notion.exe",
							"matching_strategy": "Equals"
						}
					],
					"float_override": false
				},
				{
					"name": "II",
					"layout": "RightMainVerticalStack",
					"initial_workspace_rules": [
						{
							"kind": "Exe",
							"id": "Code.exe",
							"matching_strategy": "Equals"
						},
						{
							"kind": "Exe",
							"id": "warp.exe",
							"matching_strategy": "Equals"
						}
					],
					"window_container_behaviour": "Append"
				},
				{
					"name": "III",
					"layout": "Grid"
				},
				{
					"name": "IV",
					"layout": "Grid"
				},
				{
					"name": "V",
					"layout": "Grid"
				}
			]
		}
	],

	"floating_applications": [
		{
			"kind": "Exe",
			"id": "PowerToys.Settings.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "olk.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "Notion.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "warp.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "notepad++.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "Everything.exe",
			"matching_strategy": "Equals"
		}
	],

	"layered_applications": [
		{
			"kind": "Exe",
			"id": "WhatsApp.exe",
			"matching_strategy": "Equals"
		}
	],

	"manage_rules": [
		{
			"kind": "Exe",
			"id": "claude.exe",
			"matching_strategy": "Equals"
		}
	],

	"ignore_rules": [
		{
			"kind": "Title",
			"id": "Snipaste",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "ShareX.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Title",
			"id": "Steam",
			"matching_strategy": "Equals"
		},
		[
			{
				"kind": "Exe",
				"id": "ApplicationFrameHost.exe",
				"matching_strategy": "Equals"
			},
			{
				"kind": "Title",
				"id": "WhatsApp",
				"matching_strategy": "DoesNotEqual"
			}
		],
		{
			"kind": "Title",
			"id": "Microsoft Store",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "vlc.exe",
			"matching_strategy": "Equals"
		},
		{
			"kind": "Exe",
			"id": "espansod.exe",
			"matching_strategy": "Equals"
		}
	]
}

Hotkey Configuration

.shell powershell

alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden
alt + shift + o : komorebic reload-configuration
alt + oem_comma : komorebic toggle-shortcuts
alt + j : komorebic focus left
alt + k : komorebic focus down
alt + i : komorebic focus up
alt + l : komorebic focus right
alt + shift + j : komorebic move left
alt + shift + k : komorebic move down
alt + shift + i : komorebic move up
alt + shift + l : komorebic move right
alt + shift + return : komorebic promote
ctrl + alt + j : komorebic stack left
ctrl + alt + k : komorebic stack down
ctrl + alt + i : komorebic stack up
ctrl + alt + l : komorebic stack right
alt + h : komorebic stack-all
alt + shift + h : komorebic unstack-all
alt + a : komorebic focus-monitor-at-cursor; komorebic cycle-stack previous
alt + s : komorebic focus-monitor-at-cursor; komorebic cycle-stack next
alt + shift + a : komorebic focus-monitor-at-cursor; komorebic unstack
alt + oem_4 : komorebic cycle-stack-index previous
alt + oem_6 : komorebic cycle-stack-index next
alt + oem_plus : 1..4 | ForEach-Object { komorebic resize-axis horizontal increase }
alt + oem_minus : komorebic resize-axis horizontal decrease
alt + shift + oem_plus : 1..3 | ForEach-Object { komorebic resize-axis vertical increase }
alt + shift + oem_minus : komorebic resize-axis vertical decrease
alt + q : if (Get-Process -Name "masir" -ErrorAction SilentlyContinue) { taskkill /f /im masir.exe }; Start-Process masir -WindowStyle Hidden; Start-Sleep -Milliseconds 400; taskkill /f /im masir.exe;
alt + shift + q : komorebic close
alt + n : komorebic minimize
alt + shift + n : komorebic restore-windows
alt + m : komorebic manage
alt + shift + m : komorebic unmanage
alt + e : komorebic toggle-float;
alt + shift + e : komorebic focus-monitor-at-cursor; komorebic toggle-workspace-layer;
alt + t : komorebic toggle-float-override
alt + f : komorebic toggle-maximize
alt + shift + f : komorebic toggle-monocle
alt + shift + r : komorebic retile
alt + oem_period : komorebic stop --whkd --bar; Start-Sleep -Milliseconds 150; komorebic start --whkd --bar
alt + p : komorebic toggle-pause
alt + x : komorebic flip-layout horizontal
alt + y : komorebic flip-layout vertical
alt + shift + y : komorebic cycle-layout next
alt + shift + x : komorebic cycle-layout previous
lwin + shift + right : komorebic cycle-move-to-monitor next
lwin + up : komorebic cycle-monitor next
lwin + down : komorebic cycle-monitor previous
lwin + shift + down : komorebic cycle-workspace previous
lwin + shift + up : komorebic cycle-workspace next
alt + u : komorebic cycle-focus previous
alt + shift + u : komorebic cycle-focus next
alt + d : komorebic focus-monitor-at-cursor; komorebic focus-last-workspace
alt + shift + d : komorebic cycle-monitor next;
alt + 1 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 0
alt + 2 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 1
alt + 3 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 2
alt + 4 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 3
alt + 5 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 4
alt + 6 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 5
alt + 7 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 6
alt + 8 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 7
lwin + 1 : komorebic focus-workspaces 0
lwin + 2 : komorebic focus-workspaces 1
lwin + 3 : komorebic focus-workspaces 2
lwin + 4 : komorebic focus-workspaces 3
lwin + 5 : komorebic focus-workspaces 4
lwin + 6 : komorebic focus-workspaces 5
lwin + 7 : komorebic focus-workspaces 6
lwin + 8 : komorebic focus-workspaces 7
ctrl + shift + 1 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 0
ctrl + shift + 2 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 1
ctrl + shift + 3 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 2
ctrl + shift + 4 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 3
ctrl + shift + 5 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 4
ctrl + shift + 6 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 5
ctrl + shift + 7 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 6
ctrl + shift + 8 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 7
alt + shift + 1 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 0; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 2 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 1; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 3 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 2; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 4 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 3; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 5 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 4; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 6 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 5; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 7 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 6; Start-Sleep -Milliseconds 150; komorebic retile;
alt + shift + 8 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 7; Start-Sleep -Milliseconds 150; komorebic retile;
alt + z : if ($(komorebic query focused-monitor-index) -eq 0) { komorebic swap-workspaces-with-monitor 1 } else { komorebic swap-workspaces-with-monitor 0 }

Output of komorebic check

komorebic check
KOMOREBI_CONFIG_HOME detected: C:\Users\Syed.config\komorebi

Looking for configuration files in C:\Users\Syed.config\komorebi

Found komorebi.json; this file can be passed to the start command with the --config flag

"focus_follows_mouse" is now end-of-life

End-of-life features will not receive any further bug fixes or updates; they should not be used

Found C:\Users\Syed.config\komorebi\whkdrc; key bindings will be loaded from here when whkd is started, and you can start it automatically using the --whkd flag

Originally created by @snasir-dev on GitHub (Nov 4, 2025). ### Summary Hi, I have come across Komorebi, and I have really loving this amazing peice of software. Thank you and all the contributors for creating such an amazing product. I have come across this issue that I am stuck on and I would like to request help regarding if there is any possible solution or workaround to fix it. Any help would be greatly appreciated. I would like the ability to move any focused window, to any other monitor, where it respects the type of window it is "floating" or "tiling" window. The behavior I wanted was similar to the behavior you see in these commands: komorebic focus down/up -> when it goes to the other monitor (this behavior occurs when it can no longer go up or down in the current windows, then goes to the next monitor), it ALWAYS RESPECTS if the window is in tiling mode or not - This is the exact sort of behavior I want komorebic komorebic focus-workspace -> This command when switching workspaces ALWAYS RESPECTS if the workspace that you focus is already in "floating" mode or "tiling" and does not revert it. However, If I try to use any of these commands, they DO NOT respect the "floating" layer, and always revert it back to the "Tiling" layer. This causes it to always UNFOCUS any "floating" focused window I would move to another monitor because the floating layer is no longer active. Trying to use any of these commands, they DO NOT respect the "floating" layer, and always revert it back to the "Tiling" layer - komorebic cycle-move-to-monitor next/previous - komorebic cycle-monitor next/previous - komorebic move-to-monitor <monitor-index> I would like the ability to do a few things 1. Focus another monitor while retaining the proper layer that workspace was previously in (Tiling or Floating). Trying to do following command always swithes it to "Tiling" layer even if that workspace was in "Floating" Layer alt + shift + d : komorebic cycle-monitor next; If the monitor that is switched to is already in "Floating" Layer, it should not revert it back to "Tiling" Layer. I also have a command that lets me very easily send the focused window to the other monitor in a given workspace: ``` # Note 'komorebic retile' is used to retile (or readjust tile size), which removes weird stuff like left over borders and window not being full size or properly sized. NEED TO ADD SLEEP OTHERWISE CAUSES ISSUES. alt + shift + 1 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 0; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 2 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 1; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 3 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 2; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 4 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 3; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 5 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 4; Start-Sleep -Milliseconds 150; komorebic retile; ``` This works great for any focused window that is not a "floating" window. when pressing alt + shift + 2 for example it will send it to my other monitor in the 2nd workspace. Pressing it again would send it back to my previous monitor in workspace 2. However, if I try do to run these commands if the focused window is a "floating" window, it will first move the focused window to the other monitor, then it will force "Tiling" Layer, which will cause the floating window I just moved to lose focus which would then make it unable to move that tiling focused window to the specified workspace I had wanted. It would just be stuck on the exact workspace the other monitor was at. If the monitor I wanted to move the tiling window was at workspace 1 and I pressed ALT+SHIFT+3 wanting to send a tiling window to that monitor for workspace 3, it would not work. Instead, it would focus the monitor I moved the window to, change it to Tiling mode, and then not move to workspace 3. ## Major issue with forcing "Tiling" Layer There is a major reason why always forcing to "Tiling" Layer is a major issue. Anytime we switch back from "Floating" layer to "Tiling" Layer, it does not retain the order of which floating windows were most recently focused. Rather it always defaults to the order in which floating windows were added (when using the komorebic cycel-focus <previous/next> commands). Example: I float following windows in order - Notepad - File Explorer - Notepad++ - Notion Say I want to then use Notion for referencing my notes repteadly and quickly switch between Tiling layer and floating layer. Anytime I switch to tiling layer and see a pdf or do anything then go back to "Floating" Layer, it would not show me Notion as the first window, rather it would show me Notepad, then file explorer, then notepad++ then notion. When using following commands to move between floating windows: alt + u : komorebic cycle-focus previous alt + shift + u : komorebic cycle-focus next Two things to note, komorebic cycle-focus next gets bugged where it won't let you move past first window, so you are forced to use komorebic cycle-focus previous to switch between the windows. The behavior here is not consistent with moving floating windows with komorebic focus left/right/up/down Which actually retains the exact window when you switch between layers. Cycle-focus does not. Reason I would prefer using cycle-focus is because it ensures I never get out of tiling mode and stay within the same workspace. Using "komorebic focus <direction>" command makes it so I feel like I lose control and sometimes it goes to a different monitor or a different workspace especially when windows are overlapping and in different sizes, cycel-focus command ensures it will never focus another monitor or go to a different workspace, but never retains the behavior of when coming back to the tiling layer, to keep the exact same floating window you were previously on. Here is a video example. I am not sure how to create a video for two monitors, so the monitor you see is the window where I am going to move my focused-window to. https://github.com/user-attachments/assets/8c0e1863-2000-43ca-8143-f45f03445112 I run command "komorebic cycle-move-to-monitor next; komorebic move-to-workspace 1; Start-Sleep -Milliseconds 150; komorebic retile;" where my focused window was a WARP terminal application. The monitor you see where I will move to is at the start in floating layer, however, the moment komorebic cycle-move-to-monitor next runs it will automatically change it to tiling layer. Then triggering floating layer, it will not immediately focus the Warp Terminal that w It is a bit confusing to show, but the moment you see the adobe pdf, is when the window was moved, it auto changed from the floating window mode to the tiling mode. I believe what should happen is that instead of it going to tiling mode, it should immediately just put warp at the front focused and remain in floating mode. I just want to know how the following can happen If I move any Floating window to another monitor with cycle-move-to-monitor, how can it retain floating layer in that monitor instead of it always defaulting to tiling layer. If I focus another monitor with cycle-monitor, how can it respect whatever layer that workspace window is on, floating or tiling without it always forcing it into tiling layer. ### Version Information **OS Name/Version**: Edition Windows 10 Home Version 22H2 Installed on ‎11/‎20/‎2020 OS Build 19045.6456 ============= komorebi Version: komorebic 0.1.38 tag:v0.1.38 commit_hash:ffa76ea2 build_time:2025-09-13 18:40:25 +00:00 build_env:rustc 1.89.0 (29483883e 2025-08-04),stable-x86_64-pc-windows-msvc ### Komorebi Configuration ```json Komorebi.json file: { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.37/schema.json", "app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json", "window_hiding_behaviour": "Cloak", "cross_monitor_move_behaviour": "Insert", "cross_boundary_behaviour": "Workspace", "window_handling_behaviour": "Async", "floating_layer_behaviour": "Float", "mouse_follows_focus": true, "focus_follows_mouse": "Komorebi", "default_workspace_padding": 0, "default_container_padding": -1, "toggle_float_placement": "CenterAndResize", "floating_window_aspect_ratio": "Widescreen", "floating_layer_placement": "Center", "float_rule_placement": "Center", "border": true, "border_implementation": "Komorebi", "border_width": 4, "border_offset": 0, "border_style": "Rounded", "border_colours": { "single": "#28c6ff", "stack": "#00ff7b", "monocle": "#ec5959", "floating": "#fbf1c7", "unfocused": "#353333", "unfocused_locked": "#ff2e2e" }, "animation": { "enabled": true, "duration": 250, "fps": 120, "style": { "movement": "EaseOutBack", "transparency": "Linear" } }, "transparency": false, "transparency_alpha": 240, "bar_configurations": [ "$Env:KOMOREBI_CONFIG_HOME/komorebi.bar.monitor1.json", "$Env:KOMOREBI_CONFIG_HOME/komorebi.bar.monitor2.json" ], "display_index_preferences": { "0": "Z7K00615SL0", "1": "38796" }, "monitors": [ { "name": "Primary", "workspaces": [ { "name": "1", "layout": "VerticalStack", "initial_workspace_rules": [ { "kind": "Exe", "id": "opera.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "olk.exe", "matching_strategy": "Equals" } ] }, { "name": "2", "layout": "Grid", "initial_workspace_rules": [ { "kind": "Exe", "id": "explorer.exe", "matching_strategy": "Equals" } ], "window_container_behaviour": "Create" }, { "name": "3", "layout": "Grid" }, { "name": "4", "layout": "UltrawideVerticalStack" }, { "name": "5", "layout": "Grid" } ] }, { "name": "Secondary", "workspaces": [ { "name": "I", "layout": "BSP", "initial_workspace_rules": [ { "kind": "Exe", "id": "Obsidian.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "Notion.exe", "matching_strategy": "Equals" } ], "float_override": false }, { "name": "II", "layout": "RightMainVerticalStack", "initial_workspace_rules": [ { "kind": "Exe", "id": "Code.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "warp.exe", "matching_strategy": "Equals" } ], "window_container_behaviour": "Append" }, { "name": "III", "layout": "Grid" }, { "name": "IV", "layout": "Grid" }, { "name": "V", "layout": "Grid" } ] } ], "floating_applications": [ { "kind": "Exe", "id": "PowerToys.Settings.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "olk.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "Notion.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "warp.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "notepad++.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "Everything.exe", "matching_strategy": "Equals" } ], "layered_applications": [ { "kind": "Exe", "id": "WhatsApp.exe", "matching_strategy": "Equals" } ], "manage_rules": [ { "kind": "Exe", "id": "claude.exe", "matching_strategy": "Equals" } ], "ignore_rules": [ { "kind": "Title", "id": "Snipaste", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "ShareX.exe", "matching_strategy": "Equals" }, { "kind": "Title", "id": "Steam", "matching_strategy": "Equals" }, [ { "kind": "Exe", "id": "ApplicationFrameHost.exe", "matching_strategy": "Equals" }, { "kind": "Title", "id": "WhatsApp", "matching_strategy": "DoesNotEqual" } ], { "kind": "Title", "id": "Microsoft Store", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "vlc.exe", "matching_strategy": "Equals" }, { "kind": "Exe", "id": "espansod.exe", "matching_strategy": "Equals" } ] } ``` ### Hotkey Configuration .shell powershell alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden alt + shift + o : komorebic reload-configuration alt + oem_comma : komorebic toggle-shortcuts alt + j : komorebic focus left alt + k : komorebic focus down alt + i : komorebic focus up alt + l : komorebic focus right alt + shift + j : komorebic move left alt + shift + k : komorebic move down alt + shift + i : komorebic move up alt + shift + l : komorebic move right alt + shift + return : komorebic promote ctrl + alt + j : komorebic stack left ctrl + alt + k : komorebic stack down ctrl + alt + i : komorebic stack up ctrl + alt + l : komorebic stack right alt + h : komorebic stack-all alt + shift + h : komorebic unstack-all alt + a : komorebic focus-monitor-at-cursor; komorebic cycle-stack previous alt + s : komorebic focus-monitor-at-cursor; komorebic cycle-stack next alt + shift + a : komorebic focus-monitor-at-cursor; komorebic unstack alt + oem_4 : komorebic cycle-stack-index previous alt + oem_6 : komorebic cycle-stack-index next alt + oem_plus : 1..4 | ForEach-Object { komorebic resize-axis horizontal increase } alt + oem_minus : komorebic resize-axis horizontal decrease alt + shift + oem_plus : 1..3 | ForEach-Object { komorebic resize-axis vertical increase } alt + shift + oem_minus : komorebic resize-axis vertical decrease alt + q : if (Get-Process -Name "masir" -ErrorAction SilentlyContinue) { taskkill /f /im masir.exe }; Start-Process masir -WindowStyle Hidden; Start-Sleep -Milliseconds 400; taskkill /f /im masir.exe; alt + shift + q : komorebic close alt + n : komorebic minimize alt + shift + n : komorebic restore-windows alt + m : komorebic manage alt + shift + m : komorebic unmanage alt + e : komorebic toggle-float; alt + shift + e : komorebic focus-monitor-at-cursor; komorebic toggle-workspace-layer; alt + t : komorebic toggle-float-override alt + f : komorebic toggle-maximize alt + shift + f : komorebic toggle-monocle alt + shift + r : komorebic retile alt + oem_period : komorebic stop --whkd --bar; Start-Sleep -Milliseconds 150; komorebic start --whkd --bar alt + p : komorebic toggle-pause alt + x : komorebic flip-layout horizontal alt + y : komorebic flip-layout vertical alt + shift + y : komorebic cycle-layout next alt + shift + x : komorebic cycle-layout previous lwin + shift + right : komorebic cycle-move-to-monitor next lwin + up : komorebic cycle-monitor next lwin + down : komorebic cycle-monitor previous lwin + shift + down : komorebic cycle-workspace previous lwin + shift + up : komorebic cycle-workspace next alt + u : komorebic cycle-focus previous alt + shift + u : komorebic cycle-focus next alt + d : komorebic focus-monitor-at-cursor; komorebic focus-last-workspace alt + shift + d : komorebic cycle-monitor next; alt + 1 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 0 alt + 2 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 1 alt + 3 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 2 alt + 4 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 3 alt + 5 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 4 alt + 6 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 5 alt + 7 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 6 alt + 8 : komorebic focus-monitor-at-cursor; komorebic focus-workspace 7 lwin + 1 : komorebic focus-workspaces 0 lwin + 2 : komorebic focus-workspaces 1 lwin + 3 : komorebic focus-workspaces 2 lwin + 4 : komorebic focus-workspaces 3 lwin + 5 : komorebic focus-workspaces 4 lwin + 6 : komorebic focus-workspaces 5 lwin + 7 : komorebic focus-workspaces 6 lwin + 8 : komorebic focus-workspaces 7 ctrl + shift + 1 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 0 ctrl + shift + 2 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 1 ctrl + shift + 3 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 2 ctrl + shift + 4 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 3 ctrl + shift + 5 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 4 ctrl + shift + 6 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 5 ctrl + shift + 7 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 6 ctrl + shift + 8 : komorebic focus-monitor-at-cursor; komorebic move-to-workspace 7 alt + shift + 1 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 0; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 2 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 1; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 3 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 2; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 4 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 3; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 5 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 4; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 6 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 5; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 7 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 6; Start-Sleep -Milliseconds 150; komorebic retile; alt + shift + 8 : komorebic cycle-move-to-monitor next; komorebic move-to-workspace 7; Start-Sleep -Milliseconds 150; komorebic retile; alt + z : if ($(komorebic query focused-monitor-index) -eq 0) { komorebic swap-workspaces-with-monitor 1 } else { komorebic swap-workspaces-with-monitor 0 } ### Output of komorebic check komorebic check KOMOREBI_CONFIG_HOME detected: C:\Users\Syed\.config\komorebi Looking for configuration files in C:\Users\Syed\.config\komorebi Found komorebi.json; this file can be passed to the start command with the --config flag "focus_follows_mouse" is now end-of-life End-of-life features will not receive any further bug fixes or updates; they should not be used Found C:\Users\Syed\.config\komorebi\whkdrc; key bindings will be loaded from here when whkd is started, and you can start it automatically using the --whkd flag
adam added the bug label 2026-01-05 14:52:25 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#695