Originally created by @daltongd on GitHub (Nov 6, 2024).
Summary
When configuring the ignore rules in komorebi, I came across an issue which prevents me from excluding some Unreal Engine windows that I would prefer to work as pop ups unmanaged by komorebi.
I've tried a few things and it seems it is relevant only to some types of Unreal Engine windows. The class for each of them is simply UnrealWindow.
In this example I wasn't able to set up the rules for the Open Asset window. The other one (New Level) is a dialogue window that prevent any interaction with the main window. The rule for this one worked ok.
I had success setting the rules also for other windows that act as a sort of in-editor dialog for creating new C++ classes - this one however allowed me to interact with the windows underneath.
komorebic visible-windows output for the relevant monitor before the rules were applied:
I noticed that when the ignore rule is present, the Open Asset window can be moved around, but it will still take up its space, and whenever I click on the main editor window it jumps back into its position. This doesn't happen when there is no rule - in such case the window is correctly managed by komorebi.
I did some digging and found base engine classes those windows are created with, it doesn't seem to help much: New Level -> SWindow (rule works) Open Asset -> SDockTab (rule doesn't work)
Both SWindow and SDockTab derive from SCompoundWidget which is a base for most Unreal's editor widgets. Open Asset seems to have only a single 'flag' set and it's TabRole being set to NomadTab. The windows I had success ignoring seem to be meant as dialogs.
I can ignore all the windows when I exclude the whole UnrealWindow class, but this means komorebi doesn't manage any editor window including the main one.
Like this:
I tried my best going as deep with the research as I thought it made sense, but I'm more than happy to both dig deeper into Unreal's source, as well as try applying some solutions in the komorebi codebase, so that no maintainer has to install and learn to navigate Unreal. I'll be thankful for any pointers or ideas, as well as patches to test in my setup. Happy to try things I might not have thought of as well!
.shell powershell
# list of keys
# https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
# Reload whkd configuration
# alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd
alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden; komorebic reload-configuration # if shell is pwsh / powershell
alt + shift + o : taskkill /f /im komorebic.exe; Start-Process komorebic --whkd
# App shortcuts - these require shell to be pwsh / powershell
# The apps will be focused if open, or launched if not open
# alt + f : if ($wshell.AppActivate('Firefox') -eq $False) { start firefox }
# alt + b : if ($wshell.AppActivate('Brave') -eq $False) { start brave }
alt + q : komorebic close
alt + m : komorebic minimize
# Focus windows
alt + h : komorebic focus left
alt + j : komorebic focus down
alt + k : komorebic focus up
alt + l : komorebic focus right
alt + shift + oem_4 : komorebic cycle-focus previous # oem_4 is [
alt + shift + oem_6 : komorebic cycle-focus next # oem_6 is ]
# Move windows
alt + shift + h : komorebic move left
alt + shift + j : komorebic move down
alt + shift + k : komorebic move up
alt + shift + l : komorebic move right
alt + shift + return : komorebic promote
# Stack windows
alt + left : komorebic stack left
alt + down : komorebic stack down
alt + up : komorebic stack up
alt + right : komorebic stack right
alt + oem_1 : komorebic unstack # oem_1 is ;
alt + oem_period : komorebic cycle-stack previous
alt + oem_2 : komorebic cycle-stack next # oem_2 is /
# Resize
alt + oem_plus : komorebic resize-axis horizontal increase
alt + oem_minus : komorebic resize-axis horizontal decrease
alt + shift + oem_plus : komorebic resize-axis vertical increase
alt + shift + oem_minus : komorebic resize-axis vertical decrease
# Manipulate windows
alt + t : komorebic toggle-float
alt + shift + f : komorebic toggle-monocle
# Window manager options
alt + shift + r : komorebic retile
alt + p : komorebic toggle-pause
# Layouts
alt + x : komorebic flip-layout horizontal
alt + y : komorebic flip-layout vertical
# Workspaces
alt + 1 : komorebic focus-workspace 0
alt + 2 : komorebic focus-workspace 1
alt + 3 : komorebic focus-workspace 2
alt + 4 : komorebic focus-workspace 3
alt + 5 : komorebic focus-workspace 4
alt + 6 : komorebic focus-workspace 5
alt + 7 : komorebic focus-workspace 6
alt + 8 : komorebic focus-workspace 7
# Move windows across workspaces
alt + shift + 1 : komorebic move-to-workspace 0
alt + shift + 2 : komorebic move-to-workspace 1
alt + shift + 3 : komorebic move-to-workspace 2
alt + shift + 4 : komorebic move-to-workspace 3
alt + shift + 5 : komorebic move-to-workspace 4
alt + shift + 6 : komorebic move-to-workspace 5
alt + shift + 7 : komorebic move-to-workspace 6
alt + shift + 8 : komorebic move-to-workspace 7
Originally created by @daltongd on GitHub (Nov 6, 2024).
### Summary
When configuring the ignore rules in komorebi, I came across an issue which prevents me from excluding some Unreal Engine windows that I would prefer to work as pop ups unmanaged by komorebi.
I've tried a few things and it seems it is relevant only to some types of Unreal Engine windows. The class for each of them is simply `UnrealWindow`.
In this example I wasn't able to set up the rules for the `Open Asset` window. The other one (`New Level`) is a dialogue window that prevent any interaction with the main window. The rule for this one worked ok.

I had success setting the rules also for other windows that act as a sort of in-editor dialog for creating new C++ classes - this one however allowed me to interact with the windows underneath.
`komorebic visible-windows` output for the relevant monitor before the rules were applied:
```json
{
"GBT2702-5&7fefdab&0&UID4352": [
{
"title": "RandomTestProject - Unreal Editor",
"exe": "UnrealEditor.exe",
"class": "UnrealWindow"
},
{
"title": "Open Asset",
"exe": "UnrealEditor.exe",
"class": "UnrealWindow"
},
{
"title": "New Level",
"exe": "UnrealEditor.exe",
"class": "UnrealWindow"
}
],
...
}
```
Ignore rules - the `Open Asset` doesn't work, `New Level`'s behavior is as expected:
```json
...
"UnrealEditor": {
"ignore": [
{
"kind": "Title",
"id": "Open Asset",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "New Level",
"matching_strategy": "Equals"
}
]
},
...
```
I noticed that when the ignore rule is present, the `Open Asset` window can be moved around, but it will still take up its space, and whenever I click on the main editor window it jumps back into its position. This doesn't happen when there is no rule - in such case the window is correctly managed by komorebi.
I did some digging and found base engine classes those windows are created with, it doesn't seem to help much:
`New Level` -> `SWindow` (rule works)
`Open Asset` -> `SDockTab` (rule doesn't work)
Both `SWindow` and `SDockTab` derive from `SCompoundWidget` which is a base for most Unreal's editor widgets.
`Open Asset` seems to have only a single 'flag' set and it's `TabRole` being set to `NomadTab`. The windows I had success ignoring seem to be meant as dialogs.
I can ignore all the windows when I exclude the whole `UnrealWindow` class, but this means komorebi doesn't manage any editor window including the main one.
Like this:
```json
"UnrealEditor": {
"ignore": [
{
"kind": "Class",
"id": "UnrealWindow",
"matching_strategy": "Equals"
}
]
},
```
I thought that maybe there is a chance a composite rule could help here, but no luck. This is what I tried:
```json
"UnrealEditor": {
"ignore": [
[
{
"kind": "Class",
"id": "UnrealWindow",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Open Asset",
"matching_strategy": "Equals"
}
]
]
},
```
This one also didn't work:
```json
"UnrealEditor": {
"ignore": [
[
{
"kind": "Class",
"id": "UnrealWindow",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "- Unreal Editor",
"matching_strategy": "DoesNotEndWith"
}
]
]
},
```
I tried my best going as deep with the research as I thought it made sense, but I'm more than happy to both dig deeper into Unreal's source, as well as try applying some solutions in the komorebi codebase, so that no maintainer has to install and learn to navigate Unreal. I'll be thankful for any pointers or ideas, as well as patches to test in my setup. Happy to try things I might not have thought of as well!
### Version Information
```pwsh
❯ systeminfo | findstr /B /C:"OS Name" /B /C:"OS Version"
OS Name: Microsoft Windows 11 Pro
OS Version: 10.0.22631 N/A Build 22631
```
```pwsh
❯ komorebic --version
komorebic 0.1.31
tag:nightly
commit_hash:36e3eaad
build_time:2024-11-06 12:32:35 +01:00
build_env:rustc 1.81.0 (eeb90cda1 2024-09-04),stable-x86_64-pc-windows-msvc
```
this was true also on the version from winget I installed earlier
### Komorebi Configuration
```json
{
"$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.29/schema.json",
"app_specific_configuration_path": "$Env:USERPROFILE/.config/komorebi/applications.json",
"window_hiding_behaviour": "Cloak",
"cross_monitor_move_behaviour": "Insert",
"default_workspace_padding": 4,
"default_container_padding": 4,
"border": false,
"border_width": 3,
"border_offset": -1,
"border_style": "System",
"border_z_order": "Bottom",
"theme": {
"palette": "Base16",
"name": "Ashes",
"unfocused_border": "Base03",
"bar_accent": "Base0D"
},
"stackbar": {
"height": 15,
"mode": "OnStack",
"tabs": {
"width": 150
}
},
"monitors": [
{
"workspaces": [
{
"name": "Main",
"layout": "BSP"
},
{
"name": "Secondary",
"layout": "BSP"
},
{
"name": "Tertiary",
"layout": "BSP"
},
{
"name": "Quaternary",
"layout": "BSP"
},
{
"name": "Misc",
"layout": "BSP"
},
{
"name": "Grid",
"layout": "Grid"
}
]
},
{
"workspaces": [
{
"name": "L Main",
"layout": "BSP"
},
{
"name": "Comms",
"layout": "UltrawideVerticalStack",
"workspace_rules": [
{
"kind": "Title",
"id": "Messenger",
"matching_strategy": "Equals"
},
{
"kind": "Exe",
"id": "Discord.exe",
"matching_strategy": "Equals"
},
{
"kind": "Exe",
"id": "slack.exe",
"matching_strategy": "Equals"
}
]
},
{
"name": "Media",
"layout": "BSP",
"workspace_rules": [
{
"kind": "Exe",
"id": "Spotify.exe",
"matching_strategy": "Equals"
}
]
},
{
"name": "Misc I",
"layout": "BSP"
},
{
"name": "Misc II",
"layout": "BSP"
}
]
},
{
"workspaces": [
{
"name": "R Main",
"layout": "BSP"
},
{
"name": "\udb85\udfa0 Obsidian",
"layout": "BSP",
"initial_workspace_rules": [
{
"kind": "Exe",
"id": "Obsidian.exe",
"matching_strategy": "Equals"
}
]
},
{
"name": "\udb80\udd69 Source",
"layout": "BSP",
"initial_workspace_rules": [
{
"kind": "Exe",
"id": "rider64.exe",
"matching_strategy": "Equals"
}
]
},
{
"name": "\udb81\ude2c Plastic",
"layout": "RightMainVerticalStack",
"workspace_rules": [
{
"kind": "Exe",
"id": "plastic.exe",
"matching_strategy": "Equals"
}
]
},
{
"name": "\udb82\uddb1 Unreal",
"initial_workspace_rules": [
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
}
]
},
{
"name": "Misc I",
"layout": "BSP"
},
{
"name": "Misc II",
"layout": "BSP"
},
{
"name": "Floating"
}
]
}
]
}
```
### Hotkey Configuration
```
.shell powershell
# list of keys
# https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
# Reload whkd configuration
# alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd
alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden; komorebic reload-configuration # if shell is pwsh / powershell
alt + shift + o : taskkill /f /im komorebic.exe; Start-Process komorebic --whkd
# App shortcuts - these require shell to be pwsh / powershell
# The apps will be focused if open, or launched if not open
# alt + f : if ($wshell.AppActivate('Firefox') -eq $False) { start firefox }
# alt + b : if ($wshell.AppActivate('Brave') -eq $False) { start brave }
alt + q : komorebic close
alt + m : komorebic minimize
# Focus windows
alt + h : komorebic focus left
alt + j : komorebic focus down
alt + k : komorebic focus up
alt + l : komorebic focus right
alt + shift + oem_4 : komorebic cycle-focus previous # oem_4 is [
alt + shift + oem_6 : komorebic cycle-focus next # oem_6 is ]
# Move windows
alt + shift + h : komorebic move left
alt + shift + j : komorebic move down
alt + shift + k : komorebic move up
alt + shift + l : komorebic move right
alt + shift + return : komorebic promote
# Stack windows
alt + left : komorebic stack left
alt + down : komorebic stack down
alt + up : komorebic stack up
alt + right : komorebic stack right
alt + oem_1 : komorebic unstack # oem_1 is ;
alt + oem_period : komorebic cycle-stack previous
alt + oem_2 : komorebic cycle-stack next # oem_2 is /
# Resize
alt + oem_plus : komorebic resize-axis horizontal increase
alt + oem_minus : komorebic resize-axis horizontal decrease
alt + shift + oem_plus : komorebic resize-axis vertical increase
alt + shift + oem_minus : komorebic resize-axis vertical decrease
# Manipulate windows
alt + t : komorebic toggle-float
alt + shift + f : komorebic toggle-monocle
# Window manager options
alt + shift + r : komorebic retile
alt + p : komorebic toggle-pause
# Layouts
alt + x : komorebic flip-layout horizontal
alt + y : komorebic flip-layout vertical
# Workspaces
alt + 1 : komorebic focus-workspace 0
alt + 2 : komorebic focus-workspace 1
alt + 3 : komorebic focus-workspace 2
alt + 4 : komorebic focus-workspace 3
alt + 5 : komorebic focus-workspace 4
alt + 6 : komorebic focus-workspace 5
alt + 7 : komorebic focus-workspace 6
alt + 8 : komorebic focus-workspace 7
# Move windows across workspaces
alt + shift + 1 : komorebic move-to-workspace 0
alt + shift + 2 : komorebic move-to-workspace 1
alt + shift + 3 : komorebic move-to-workspace 2
alt + shift + 4 : komorebic move-to-workspace 3
alt + shift + 5 : komorebic move-to-workspace 4
alt + shift + 6 : komorebic move-to-workspace 5
alt + shift + 7 : komorebic move-to-workspace 6
alt + shift + 8 : komorebic move-to-workspace 7
```
### Output of komorebic check
```pwsh
KOMOREBI_CONFIG_HOME detected: C:\Users\[REDACTED]\.config\komorebi
Looking for configuration files in C:\Users\[REDACTED]\.config\komorebi
Found komorebi.json; this file can be passed to the start command with the --config flag
Found C:\Users\[REDACTED]\.config\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:51:14 +01:00
I think I partly see what is happening here, from the asc repo readme:
I am a new komorebi user and I want to add different rules for various applications
Do not edit the applications.json or applications.yaml file; edit your komorebi.json file instead.
Changes to the applications.[yaml|json] files are not hot-reloaded and applied, and any changes you make will get blown away the next time you run komorebic fetch-app-specific-configuration to fetch the latest version.
You should add the rules directly to your komorebi.json file if you want them to be applied on the fly ^
Can you try adding your composite rules here in komorebi.json, and then restarting UE to see if they have taken effect?
If they work, we can add them to the asc repo, then you can pull the latest version with komorebic fetch-asc and restart the komorebi process (komorebic stop; komorebic start) to load the new version.
@LGUG2Z commented on GitHub (Nov 6, 2024):
I think I partly see what is happening here, from the asc repo readme:
> ### I am a new komorebi user and I want to add different rules for various applications
> Do not edit the applications.json or applications.yaml file; edit your komorebi.json file instead.
>
> Changes to the applications.[yaml|json] files are not hot-reloaded and applied, and any changes you make will get blown away the next time you run komorebic fetch-app-specific-configuration to fetch the latest version.
You should add the rules directly to your `komorebi.json` file if you want them to be applied on the fly ^
Can you try adding your composite rules [here in `komorebi.json`](https://komorebi.lgug2z.com/schema#ignore_rules), and then restarting UE to see if they have taken effect?
If they work, we can add them to the asc repo, then you can pull the latest version with `komorebic fetch-asc` and restart the komorebi process (`komorebic stop; komorebic start`) to load the new version.
Thank you, I've been completely restarting komorebi every time I changed my config, but this time I've also tested adding this to the root of the komorebi.json:
The behaviour is identical - it seems komorebi tries to let go off this window, but it still takes its space, and whenever I click on the main window, it snaps back into position.
I recorded a quick video - sorry for the quality and how fast I had to move to show this, but I hope it'll be clear.
It seems like it's really trying not to manage this window but fails for some reason. By getting the right timing of using the shortcut that pops up the Open Assets window, I am even able to make it work for as long as I don't close it and reopen again. I included it in the video.
You can also see that I'm able to move this window around, but then when I click on the main window it gets back to its position.
Btw, thanks a lot for the tip with ignore_rules within the komorebi.json - I was sure I have to completely stop komorebi and start it again every time to apply those changes. It works like a charm for other windows.
@daltongd commented on GitHub (Nov 6, 2024):
Thank you, I've been completely restarting komorebi every time I changed my config, but this time I've also tested adding this to the root of the `komorebi.json`:
```json
"ignore_rules": [
[
{
"kind": "Class",
"id": "UnrealWindow",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "- Unreal Editor",
"matching_strategy": "DoesNotEndWith"
}
]
]
```
The behaviour is identical - it seems komorebi tries to let go off this window, but it still takes its space, and whenever I click on the main window, it snaps back into position.
I recorded a quick video - sorry for the quality and how fast I had to move to show this, but I hope it'll be clear.
It seems like it's really trying not to manage this window but fails for some reason. By getting the right timing of using the shortcut that pops up the `Open Assets` window, I am even able to make it work for as long as I don't close it and reopen again. I included it in the video.
You can also see that I'm able to move this window around, but then when I click on the main window it gets back to its position.
https://github.com/user-attachments/assets/a3a3ed22-406c-4674-a39c-2e1e2ea3192e
Let me know in case this isn't clear enough, I can try to record it again with mouse clicks visible.
Btw, thanks a lot for the tip with `ignore_rules` within the `komorebi.json` - I was sure I have to completely stop komorebi and start it again every time to apply those changes. It works like a charm for other windows.
Interesting, thanks for the additional info! I guess it's time for me to download UE and poke around myself 🤠
@LGUG2Z commented on GitHub (Nov 6, 2024):
Interesting, thanks for the additional info! I guess it's time for me to download UE and poke around myself 🤠
Enjoy! It's still early for me looking through komorebi's source, but I will fiddle with it and in case I'll find anything that could help, I'll post the findings here. Same when I'll find more details about how those windows are created in the engine.
Just in case, the shortcut for opening/closing the Open Asset window is Ctrl+P! 😄
@daltongd commented on GitHub (Nov 6, 2024):
Enjoy! It's still early for me looking through komorebi's source, but I will fiddle with it and in case I'll find anything that could help, I'll post the findings here. Same when I'll find more details about how those windows are created in the engine.
Just in case, the shortcut for opening/closing the `Open Asset` window is `Ctrl+P`! 😄
@LGUG2Z commented on GitHub (Nov 8, 2024):
Ok I was able to download UE and reproduce what you mentioned.
Can you try adding the following to your config?
This first one is what got the floating/ignore rules to apply to the popup windows for me:
```json
"slow_application_identifiers": [
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
}
],
```
And then target the asset window as a floating app window (floating keeps it on the same workspace vs. ignore which shows it on every workspace)
```json
"floating_applications": [
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Open Asset",
"matching_strategy": "Equals"
}
]
],
```
This was one more that I found for the splash screen at the start:
```json
"ignore_rules": [
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "SplashScreenGuard",
"matching_strategy": "Equals"
}
]
],
```
Ok, so this is actually perfect! Works like a charm, thank you!
This is some of the windows I was able to recognize as ones that probably shouldn't tile, I'm pretty sure there are many others, so I'm not completely sure it makes sense to add like 20 of them to the ASC.
I think I may go with this instead, but this is not a 'one size fit all' solution, sometimes you want other editor windows to tile. My current workflow recently revolves around one editor window on a single workspace mostly, so at the moment this would work just ok.
But I'm happy to take a bit of time and try to use Unreal for a while and keep hand picking the windows I think would work better if not tiled. I'll see if there is any way I could generalize the rules or pick a reasonable minimum of them so that we don't clutter the ASC too much.
For now I feel that it's safe to add the ones you mentioned in your last response. Those are immediately useful, and in the meantime I'll spend a few weeks trying out different options.
Thank you once again! This has been a really great experience working with you on this one! Not a but after all, just my ignorance.
I believe we can close this issue now, but please first let me know what do you think the next steps should be and how do you prefer to track it - I can either add a comment to a closed issue later or reopen it when I get back with the findings. Or create a pull request in the ASC repo with some explanation what I came up with - you tell me!
@daltongd commented on GitHub (Nov 10, 2024):
Ok, so this is actually perfect! Works like a charm, thank you!
This is some of the windows I was able to recognize as ones that probably shouldn't tile, I'm pretty sure there are many others, so I'm not completely sure it makes sense to add like 20 of them to the ASC.
```json
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Open Asset",
"matching_strategy": "Equals"
}
],
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "New Level",
"matching_strategy": "Equals"
}
],
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Open Level",
"matching_strategy": "Equals"
}
],
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Pick Parent Class",
"matching_strategy": "Equals"
}
],
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Open Asset",
"matching_strategy": "Equals"
}
],
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Create Niagara System",
"matching_strategy": "StartsWith"
}
],
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "Save Level As",
"matching_strategy": "Equals"
}
]
```
I think I may go with this instead, but this is not a 'one size fit all' solution, sometimes you want other editor windows to tile. My current workflow recently revolves around one editor window on a single workspace mostly, so at the moment this would work just ok.
```json
"floating_applications": [
[
{
"kind": "Exe",
"id": "UnrealEditor.exe",
"matching_strategy": "Equals"
},
{
"kind": "Title",
"id": "- Unreal Editor",
"matching_strategy": "DoesNotEndWith"
}
]
]
```
But I'm happy to take a bit of time and try to use Unreal for a while and keep hand picking the windows I think would work better if not tiled. I'll see if there is any way I could generalize the rules or pick a reasonable minimum of them so that we don't clutter the ASC too much.
For now I feel that it's safe to add the ones you mentioned in your last response. Those are immediately useful, and in the meantime I'll spend a few weeks trying out different options.
Thank you once again! This has been a really great experience working with you on this one! Not a but after all, just my ignorance.
I believe we can close this issue now, but please first let me know what do you think the next steps should be and how do you prefer to track it - I can either add a comment to a closed issue later or reopen it when I get back with the findings. Or create a pull request in the ASC repo with some explanation what I came up with - you tell me!
Even with the floating rules, anyone can hit alt+t and have those windows become tiled very quickly if they want to!
I don't think there are that many people using komorebi with Unreal Editor right now, but thanks to your contributions we have made the first-time setup process a lot nicer for Unreal Engine devs who will try it out in the future!
@LGUG2Z commented on GitHub (Nov 13, 2024):
I decided to add the latter here: https://github.com/LGUG2Z/komorebi-application-specific-configuration/commit/47d4907058850d301a7e9e01a93b3c0f769946b4
Even with the floating rules, anyone can hit `alt+t` and have those windows become tiled very quickly if they want to!
I don't think there are that many people using komorebi with Unreal Editor right now, but thanks to your contributions we have made the first-time setup process a lot nicer for Unreal Engine devs who will try it out in the future!
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @daltongd on GitHub (Nov 6, 2024).
Summary
When configuring the ignore rules in komorebi, I came across an issue which prevents me from excluding some Unreal Engine windows that I would prefer to work as pop ups unmanaged by komorebi.
I've tried a few things and it seems it is relevant only to some types of Unreal Engine windows. The class for each of them is simply
UnrealWindow.In this example I wasn't able to set up the rules for the

Open Assetwindow. The other one (New Level) is a dialogue window that prevent any interaction with the main window. The rule for this one worked ok.I had success setting the rules also for other windows that act as a sort of in-editor dialog for creating new C++ classes - this one however allowed me to interact with the windows underneath.
komorebic visible-windowsoutput for the relevant monitor before the rules were applied:Ignore rules - the
Open Assetdoesn't work,New Level's behavior is as expected:I noticed that when the ignore rule is present, the
Open Assetwindow can be moved around, but it will still take up its space, and whenever I click on the main editor window it jumps back into its position. This doesn't happen when there is no rule - in such case the window is correctly managed by komorebi.I did some digging and found base engine classes those windows are created with, it doesn't seem to help much:
New Level->SWindow(rule works)Open Asset->SDockTab(rule doesn't work)Both
SWindowandSDockTabderive fromSCompoundWidgetwhich is a base for most Unreal's editor widgets.Open Assetseems to have only a single 'flag' set and it'sTabRolebeing set toNomadTab. The windows I had success ignoring seem to be meant as dialogs.I can ignore all the windows when I exclude the whole
UnrealWindowclass, but this means komorebi doesn't manage any editor window including the main one.Like this:
I thought that maybe there is a chance a composite rule could help here, but no luck. This is what I tried:
This one also didn't work:
I tried my best going as deep with the research as I thought it made sense, but I'm more than happy to both dig deeper into Unreal's source, as well as try applying some solutions in the komorebi codebase, so that no maintainer has to install and learn to navigate Unreal. I'll be thankful for any pointers or ideas, as well as patches to test in my setup. Happy to try things I might not have thought of as well!
Version Information
this was true also on the version from winget I installed earlier
Komorebi Configuration
Hotkey Configuration
Output of komorebic check
@LGUG2Z commented on GitHub (Nov 6, 2024):
I think I partly see what is happening here, from the asc repo readme:
You should add the rules directly to your
komorebi.jsonfile if you want them to be applied on the fly ^Can you try adding your composite rules here in
komorebi.json, and then restarting UE to see if they have taken effect?If they work, we can add them to the asc repo, then you can pull the latest version with
komorebic fetch-ascand restart the komorebi process (komorebic stop; komorebic start) to load the new version.@daltongd commented on GitHub (Nov 6, 2024):
Thank you, I've been completely restarting komorebi every time I changed my config, but this time I've also tested adding this to the root of the
komorebi.json:The behaviour is identical - it seems komorebi tries to let go off this window, but it still takes its space, and whenever I click on the main window, it snaps back into position.
I recorded a quick video - sorry for the quality and how fast I had to move to show this, but I hope it'll be clear.
It seems like it's really trying not to manage this window but fails for some reason. By getting the right timing of using the shortcut that pops up the
Open Assetswindow, I am even able to make it work for as long as I don't close it and reopen again. I included it in the video.You can also see that I'm able to move this window around, but then when I click on the main window it gets back to its position.
https://github.com/user-attachments/assets/a3a3ed22-406c-4674-a39c-2e1e2ea3192e
Let me know in case this isn't clear enough, I can try to record it again with mouse clicks visible.
Btw, thanks a lot for the tip with
ignore_ruleswithin thekomorebi.json- I was sure I have to completely stop komorebi and start it again every time to apply those changes. It works like a charm for other windows.@LGUG2Z commented on GitHub (Nov 6, 2024):
Interesting, thanks for the additional info! I guess it's time for me to download UE and poke around myself 🤠
@daltongd commented on GitHub (Nov 6, 2024):
Enjoy! It's still early for me looking through komorebi's source, but I will fiddle with it and in case I'll find anything that could help, I'll post the findings here. Same when I'll find more details about how those windows are created in the engine.
Just in case, the shortcut for opening/closing the
Open Assetwindow isCtrl+P! 😄@LGUG2Z commented on GitHub (Nov 8, 2024):
Ok I was able to download UE and reproduce what you mentioned.
Can you try adding the following to your config?
This first one is what got the floating/ignore rules to apply to the popup windows for me:
And then target the asset window as a floating app window (floating keeps it on the same workspace vs. ignore which shows it on every workspace)
This was one more that I found for the splash screen at the start:
@daltongd commented on GitHub (Nov 10, 2024):
Ok, so this is actually perfect! Works like a charm, thank you!
This is some of the windows I was able to recognize as ones that probably shouldn't tile, I'm pretty sure there are many others, so I'm not completely sure it makes sense to add like 20 of them to the ASC.
I think I may go with this instead, but this is not a 'one size fit all' solution, sometimes you want other editor windows to tile. My current workflow recently revolves around one editor window on a single workspace mostly, so at the moment this would work just ok.
But I'm happy to take a bit of time and try to use Unreal for a while and keep hand picking the windows I think would work better if not tiled. I'll see if there is any way I could generalize the rules or pick a reasonable minimum of them so that we don't clutter the ASC too much.
For now I feel that it's safe to add the ones you mentioned in your last response. Those are immediately useful, and in the meantime I'll spend a few weeks trying out different options.
Thank you once again! This has been a really great experience working with you on this one! Not a but after all, just my ignorance.
I believe we can close this issue now, but please first let me know what do you think the next steps should be and how do you prefer to track it - I can either add a comment to a closed issue later or reopen it when I get back with the findings. Or create a pull request in the ASC repo with some explanation what I came up with - you tell me!
@LGUG2Z commented on GitHub (Nov 13, 2024):
I decided to add the latter here: https://github.com/LGUG2Z/komorebi-application-specific-configuration/commit/47d4907058850d301a7e9e01a93b3c0f769946b4
Even with the floating rules, anyone can hit
alt+tand have those windows become tiled very quickly if they want to!I don't think there are that many people using komorebi with Unreal Editor right now, but thanks to your contributions we have made the first-time setup process a lot nicer for Unreal Engine devs who will try it out in the future!