[BUG]: Adding ignore_rules to config causes crash for untagged enum MatchingRule #572

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

Originally created by @TyGrze on GitHub (Feb 4, 2025).

Summary

Tried adding some ignore rules to my komorebi.json which now causes komorebi to fail to launch with the following error

Waiting for komorebi.exe to start...komorebi.exe did not start... Trying again

Running komorebi.exe directly for detailed error output

Error:
   0: data did not match any variant of untagged enum MatchingRule at line 24 column 3

Location:
   komorebi\src\static_config.rs:1019

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   1: BaseThreadInitThunk<unknown>
      at <unknown source file>:<unknown line>
   2: RtlUserThreadStart<unknown>
      at <unknown source file>:<unknown line>

Ignore rule docs
https://lgug2z.github.io/komorebi/common-workflows/ignore-windows.html
Matching strategy for ignore rules
https://komorebi.lgug2z.com/schema#ignore_rules_items_anyOf_i0_matching_strategy

My config (Wich works without the ignore rules section)

{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json",
  "app_specific_configuration_path": "$Env:USERPROFILE/applications.yaml",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 5,
  "default_container_padding": 5,
  "monitors": [
    {
      "workspaces": [
        {
          "name": "I",
          "layout": "BSP"
        }
      ]
    }
  ],
  "ignore_rules": [
    {
      "kind": "Visual Studio",
      "id": "ServiceHub.ThreadedWaitDialog.exe",
      "matching_strategy": "Equals"
    }
  ]
}

Version Information

OS Name: Microsoft Windows 11 Enterprise
OS Version: 10.0.22631 N/A Build 22631

komorebi LGUG2Z.komorebi 0.1.33 winget

Komorebi Configuration

{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json",
  "app_specific_configuration_path": "$Env:USERPROFILE/applications.yaml",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 5,
  "default_container_padding": 5,
  "monitors": [
    {
      "workspaces": [
        {
          "name": "I",
          "layout": "BSP"
        }
      ]
    }
  ],
  "ignore_rules": [
    {
      "kind": "Visual Studio",
      "id": "ServiceHub.ThreadedWaitDialog.exe",
      "matching_strategy": "Equals"
    }
  ]
}

Hotkey Configuration

Reload whkd configuration

alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd

alt + o : taskkill /f /im whkd.exe -and Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell
alt + shift + o : komorebic reload-configuration

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 + t : if ($wshell.AppActivate('Terminal') -eq $False) { start wt }

alt + b : if ($wshell.AppActivate('Chrome') -eq $False) { start chrome }

Focus windows

alt + n : komorebic focus left
alt + e : komorebic focus down
alt + u : komorebic focus up
alt + i : 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 + n : komorebic move left
alt + shift + e : komorebic move down
alt + shift + u : komorebic move up
alt + shift + i : komorebic move right
alt + shift + return : komorebic promote

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

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

alt + w : komorebic cycle-workspace previous
alt + m : komorebic cycle-move-to-workspace previous

Workspaces

alt + 1 : komorebic focus-workspace 0
alt + 2 : komorebic focus-workspace 1

Move windows across workspaces

alt + shift + 1 : komorebic move-to-workspace 0
alt + shift + 2 : komorebic move-to-workspace 1

Output of komorebic check

 komorebic check
No KOMOREBI_CONFIG_HOME detected, defaulting to C:\Users\tyler.gregorcyk

Looking for configuration files in C:\Users\tyler.gregorcyk

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

Error: data did not match any variant of untagged enum MatchingRule at line 24 column 3

Location:
komorebic\src\main.rs:1667:25

Originally created by @TyGrze on GitHub (Feb 4, 2025). ### Summary Tried adding some ignore rules to my komorebi.json which now causes komorebi to fail to launch with the following error ``` Waiting for komorebi.exe to start...komorebi.exe did not start... Trying again Running komorebi.exe directly for detailed error output Error: 0: data did not match any variant of untagged enum MatchingRule at line 24 column 3 Location: komorebi\src\static_config.rs:1019 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1: BaseThreadInitThunk<unknown> at <unknown source file>:<unknown line> 2: RtlUserThreadStart<unknown> at <unknown source file>:<unknown line> ``` Ignore rule docs https://lgug2z.github.io/komorebi/common-workflows/ignore-windows.html Matching strategy for ignore rules https://komorebi.lgug2z.com/schema#ignore_rules_items_anyOf_i0_matching_strategy My config (Wich works without the ignore rules section) ```json { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json", "app_specific_configuration_path": "$Env:USERPROFILE/applications.yaml", "window_hiding_behaviour": "Cloak", "cross_monitor_move_behaviour": "Insert", "default_workspace_padding": 5, "default_container_padding": 5, "monitors": [ { "workspaces": [ { "name": "I", "layout": "BSP" } ] } ], "ignore_rules": [ { "kind": "Visual Studio", "id": "ServiceHub.ThreadedWaitDialog.exe", "matching_strategy": "Equals" } ] } ``` ### Version Information OS Name: Microsoft Windows 11 Enterprise OS Version: 10.0.22631 N/A Build 22631 komorebi LGUG2Z.komorebi 0.1.33 winget ### Komorebi Configuration ```json { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json", "app_specific_configuration_path": "$Env:USERPROFILE/applications.yaml", "window_hiding_behaviour": "Cloak", "cross_monitor_move_behaviour": "Insert", "default_workspace_padding": 5, "default_container_padding": 5, "monitors": [ { "workspaces": [ { "name": "I", "layout": "BSP" } ] } ], "ignore_rules": [ { "kind": "Visual Studio", "id": "ServiceHub.ThreadedWaitDialog.exe", "matching_strategy": "Equals" } ] } ``` ### Hotkey Configuration # Reload whkd configuration # alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd alt + o : taskkill /f /im whkd.exe -and Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell alt + shift + o : komorebic reload-configuration # 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 + t : if ($wshell.AppActivate('Terminal') -eq $False) { start wt } # alt + b : if ($wshell.AppActivate('Chrome') -eq $False) { start chrome } # Focus windows alt + n : komorebic focus left alt + e : komorebic focus down alt + u : komorebic focus up alt + i : 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 + n : komorebic move left alt + shift + e : komorebic move down alt + shift + u : komorebic move up alt + shift + i : komorebic move right alt + shift + return : komorebic promote # 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 # 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 alt + w : komorebic cycle-workspace previous alt + m : komorebic cycle-move-to-workspace previous # Workspaces alt + 1 : komorebic focus-workspace 0 alt + 2 : komorebic focus-workspace 1 # Move windows across workspaces alt + shift + 1 : komorebic move-to-workspace 0 alt + shift + 2 : komorebic move-to-workspace 1 ### Output of komorebic check  komorebic check No KOMOREBI_CONFIG_HOME detected, defaulting to C:\Users\tyler.gregorcyk Looking for configuration files in C:\Users\tyler.gregorcyk Found komorebi.json; this file can be passed to the start command with the --config flag Error: data did not match any variant of untagged enum MatchingRule at line 24 column 3 Location: komorebic\src\main.rs:1667:25
adam added the bug label 2026-01-05 14:51:40 +01:00
adam closed this issue 2026-01-05 14:51:40 +01:00
Author
Owner

@TyGrze commented on GitHub (Feb 4, 2025):

I switched to using this newer application.json file instead of whatever old yaml one I was using before to solve this issue for now.
https://github.com/LGUG2Z/komorebi-application-specific-configuration/blob/master/applications.json

But still not sure why setting "matching_strategy": "Equals" in "ignore_rules": [ was failing

@TyGrze commented on GitHub (Feb 4, 2025): I switched to using this newer application.json file instead of whatever old yaml one I was using before to solve this issue for now. https://github.com/LGUG2Z/komorebi-application-specific-configuration/blob/master/applications.json But still not sure why setting "matching_strategy": "Equals" in "ignore_rules": [ was failing
Author
Owner

@LGUG2Z commented on GitHub (Feb 4, 2025):

Not a bug, but a typo :)

        {
          "kind": "Exe",
          "id": "ServiceHub.ThreadedWaitDialog.exe",
          "matching_strategy": "Equals"
        },

I think you meant to specify that the kind is an Exe - there are a fixed list of identifier kinds - Exe, Class, Title and Path

Schema ref is here: https://komorebi.lgug2z.com/schema#ignore_rules_items_anyOf_i0_kind

@LGUG2Z commented on GitHub (Feb 4, 2025): Not a bug, but a typo :) ```json { "kind": "Exe", "id": "ServiceHub.ThreadedWaitDialog.exe", "matching_strategy": "Equals" }, ``` I think you meant to specify that the `kind` is an `Exe` - there are a fixed list of identifier kinds - Exe, Class, Title and Path Schema ref is here: https://komorebi.lgug2z.com/schema#ignore_rules_items_anyOf_i0_kind
Author
Owner

@TyGrze commented on GitHub (Feb 4, 2025):

Not a bug, but a typo :)

Of course i was looking at the wrong line 🤦‍♂️

@TyGrze commented on GitHub (Feb 4, 2025): > Not a bug, but a typo :) Of course i was looking at the wrong line 🤦‍♂️
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#572