[BUG]: Can't ignore some of the Unreal Engine windows. #514

Closed
opened 2026-01-05 14:51:14 +01:00 by adam · 7 comments
Owner

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.
image
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:

{
  "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:

  ...
  "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:

  "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:

  "UnrealEditor": {
    "ignore": [
      [
        {
          "kind": "Class",
          "id": "UnrealWindow",
          "matching_strategy": "Equals"
        },
        {
          "kind": "Title",
          "id": "Open Asset",
          "matching_strategy": "Equals"
        }
      ]
    ]
  },

This one also didn't work:

  "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

 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
 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

{
  "$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

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
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. ![image](https://github.com/user-attachments/assets/a095be4d-5485-4477-97c4-abb3c2c5906f) 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
adam closed this issue 2026-01-05 14:51:14 +01:00
Author
Owner

@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, 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.
Author
Owner

@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:

  "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.

@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.
Author
Owner

@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 🤠

@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 🤠
Author
Owner

@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! 😄

@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`! 😄
Author
Owner

@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:

  "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)

  "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:

  "ignore_rules": [
    [
      {
        "kind": "Exe",
        "id": "UnrealEditor.exe",
        "matching_strategy": "Equals"
      },
      {
        "kind": "Title",
        "id": "SplashScreenGuard",
        "matching_strategy": "Equals"
      }
    ]
  ],
@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" } ] ], ```
Author
Owner

@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.

    [
      {
        "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.

  "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!

@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!
Author
Owner

@LGUG2Z commented on GitHub (Nov 13, 2024):

I decided to add the latter here: 47d4907058

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!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#514