[BUG]: Komorebi crashes when applications.json is not present #518

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

Originally created by @ahan-dev on GitHub (Nov 13, 2024).

Summary

Komorebi will crash (whether running through komorebic or komorebi) if it cannot find the applications.json file and "app_specific_configuration_path" is set in komorebi.json. The expected behaviour for this type of scenario (for me at least) would be for it to default to {} if applications.json is missing, and maybe log an error, instead of crashing the wm on startup. If this is intended behaviour, it would be good for it to be documented well (I couldn't find it on the readme or wiki)

Version Information

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

Komorebi Configuration

-- komorebi.json --
{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.30/schema.json",
  "app_specific_configuration_path": "$Env:USERPROFILE/applications.json",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 1,
  "default_container_padding": 1,
  "border": true,
  "border_width": 1,
  "border_offset": 0,
  "theme": {
    "palette": "Base16",
    "name": "Ashes",
    "unfocused_border": "Base03",
    "bar_accent": "Base0D"
  },
  "stackbar": {
    "height": 20,
    "mode": "OnStack",
    "tabs": {
      "width": 200
    }
  }
}

Hotkey Configuration

-- komorebi.ahk --
#Requires AutoHotkey v2.0.2
#SingleInstance Force

Komorebic(cmd) {
RunWait(format("komorebic.exe {}", cmd), , "Hide")
}

#+q::Komorebic("close")
#m::Komorebic("minimize")

; Focus windows
#h::Komorebic("focus left")
#j::Komorebic("focus down")
#k::Komorebic("focus up")
#l::Komorebic("focus right")

#+[::Komorebic("cycle-focus previous")
#+]::Komorebic("cycle-focus next")

; Move windows
#+h::Komorebic("move left")
#+j::Komorebic("move down")
#+k::Komorebic("move up")
#+l::Komorebic("move right")

; Stack windows
#Left::Komorebic("stack left")
#Down::Komorebic("stack down")
#Up::Komorebic("stack up")
#Right::Komorebic("stack right")
#;::Komorebic("unstack")
#[::Komorebic("cycle-stack previous")
#]::Komorebic("cycle-stack next")

; Resize
#=::Komorebic("resize-axis horizontal increase")
#-::Komorebic("resize-axis horizontal decrease")
#+=::Komorebic("resize-axis vertical increase")
#+_::Komorebic("resize-axis vertical decrease")

; Manipulate windows
#+Space::Komorebic("toggle-float")
#Space::

#f::
{
Komorebic("toggle-maximize")
}

; Window manager options
#+r::Komorebic("retile")
#p::Komorebic("toggle-pause")

; Create windows
#Enter::Run "wt"
#c::Run "chrome"
#e::Run "devenv"
#d::!Space

; Layouts
#x::Komorebic("flip-layout horizontal")
#y::Komorebic("flip-layout vertical")

; Workspaces
#1::Komorebic("focus-workspace 0")
#2::Komorebic("focus-workspace 1")
#3::Komorebic("focus-workspace 2")
#4::Komorebic("focus-workspace 3")
#5::Komorebic("focus-workspace 4")
#6::Komorebic("focus-workspace 5")
#7::Komorebic("focus-workspace 6")
#8::Komorebic("focus-workspace 7")

; Move windows across workspaces
#+1::Komorebic("move-to-workspace 0")
#+2::Komorebic("move-to-workspace 1")
#+3::Komorebic("move-to-workspace 2")
#+4::Komorebic("move-to-workspace 3")
#+5::Komorebic("move-to-workspace 4")
#+6::Komorebic("move-to-workspace 5")
#+7::Komorebic("move-to-workspace 6")
#+8::Komorebic("move-to-workspace 7")

Output of komorebic check

No KOMOREBI_CONFIG_HOME detected, defaulting to C:\Users<username>

Looking for configuration files in C:\Users<username>

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

Application specific configuration file path has not been set. Try running 'komorebic fetch-asc'

No ~/.config/whkdrc found; you may not be able to control komorebi with your keyboard

Originally created by @ahan-dev on GitHub (Nov 13, 2024). ### Summary Komorebi will crash (whether running through `komorebic` or `komorebi`) if it cannot find the applications.json file and `"app_specific_configuration_path"` is set in `komorebi.json`. The expected behaviour for this type of scenario (for me at least) would be for it to default to `{}` if applications.json is missing, and maybe log an error, instead of crashing the wm on startup. If this is intended behaviour, it would be good for it to be documented well (I couldn't find it on the readme or wiki) ### Version Information OS Name: Microsoft Windows 11 Pro OS Version: 10.0.22631 N/A Build 22631 ### Komorebi Configuration ```json -- komorebi.json -- { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.30/schema.json", "app_specific_configuration_path": "$Env:USERPROFILE/applications.json", "window_hiding_behaviour": "Cloak", "cross_monitor_move_behaviour": "Insert", "default_workspace_padding": 1, "default_container_padding": 1, "border": true, "border_width": 1, "border_offset": 0, "theme": { "palette": "Base16", "name": "Ashes", "unfocused_border": "Base03", "bar_accent": "Base0D" }, "stackbar": { "height": 20, "mode": "OnStack", "tabs": { "width": 200 } } } ``` ### Hotkey Configuration -- komorebi.ahk -- #Requires AutoHotkey v2.0.2 #SingleInstance Force Komorebic(cmd) { RunWait(format("komorebic.exe {}", cmd), , "Hide") } #+q::Komorebic("close") #m::Komorebic("minimize") ; Focus windows #h::Komorebic("focus left") #j::Komorebic("focus down") #k::Komorebic("focus up") #l::Komorebic("focus right") #+[::Komorebic("cycle-focus previous") #+]::Komorebic("cycle-focus next") ; Move windows #+h::Komorebic("move left") #+j::Komorebic("move down") #+k::Komorebic("move up") #+l::Komorebic("move right") ; Stack windows #Left::Komorebic("stack left") #Down::Komorebic("stack down") #Up::Komorebic("stack up") #Right::Komorebic("stack right") #;::Komorebic("unstack") #[::Komorebic("cycle-stack previous") #]::Komorebic("cycle-stack next") ; Resize #=::Komorebic("resize-axis horizontal increase") #-::Komorebic("resize-axis horizontal decrease") #+=::Komorebic("resize-axis vertical increase") #+_::Komorebic("resize-axis vertical decrease") ; Manipulate windows #+Space::Komorebic("toggle-float") #Space:: #f:: { Komorebic("toggle-maximize") } ; Window manager options #+r::Komorebic("retile") #p::Komorebic("toggle-pause") ; Create windows #Enter::Run "wt" #c::Run "chrome" #e::Run "devenv" #d::!Space ; Layouts #x::Komorebic("flip-layout horizontal") #y::Komorebic("flip-layout vertical") ; Workspaces #1::Komorebic("focus-workspace 0") #2::Komorebic("focus-workspace 1") #3::Komorebic("focus-workspace 2") #4::Komorebic("focus-workspace 3") #5::Komorebic("focus-workspace 4") #6::Komorebic("focus-workspace 5") #7::Komorebic("focus-workspace 6") #8::Komorebic("focus-workspace 7") ; Move windows across workspaces #+1::Komorebic("move-to-workspace 0") #+2::Komorebic("move-to-workspace 1") #+3::Komorebic("move-to-workspace 2") #+4::Komorebic("move-to-workspace 3") #+5::Komorebic("move-to-workspace 4") #+6::Komorebic("move-to-workspace 5") #+7::Komorebic("move-to-workspace 6") #+8::Komorebic("move-to-workspace 7") ### Output of komorebic check No KOMOREBI_CONFIG_HOME detected, defaulting to C:\Users\<username> Looking for configuration files in C:\Users\<username> Found komorebi.json; this file can be passed to the start command with the --config flag Application specific configuration file path has not been set. Try running 'komorebic fetch-asc' No ~/.config/whkdrc found; you may not be able to control komorebi with your keyboard
adam added the bug label 2026-01-05 14:51:15 +01:00
adam closed this issue 2026-01-05 14:51:15 +01:00
Author
Owner

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

I'm ultimately going to close this as a "won't fix", but I'll explain my rationale for future visitors.

  • The only time that a new user will not have a file for this field populated correctly is because they didn't follow the quickstart docs, and if they didn't follow the docs, this will be the least of their problems
  • If a path is provided, and a file at that path does not exist, and that file is required for the correct execution and running of the application, then the correct behaviour (imo) is "fail at startup and return an error to the user"
  • In the context of this specific application, running komorebi without this very long list of rules will result in an experience bad enough that I personally would consider "broken"

I will however add a blurb on the documentation website about what this field is, why it is important, and why komorebi will crash on startup if the file the config points to does not exist.

@LGUG2Z commented on GitHub (Nov 13, 2024): I'm ultimately going to close this as a "won't fix", but I'll explain my rationale for future visitors. * The only time that a new user will not have a file for this field populated correctly is because they didn't follow the quickstart docs, and if they didn't follow the docs, this will be the least of their problems * If a path is provided, and a file at that path does not exist, _and_ that file is required for the correct execution and running of the application, then the correct behaviour (imo) is "fail at startup and return an error to the user" * In the context of this specific application, running `komorebi` without this very long list of rules will result in an experience bad enough that I personally would consider "broken" I will however add a blurb on the documentation website about what this field is, why it is important, and why komorebi will crash on startup if the file the config points to does not exist.
Author
Owner

@ahan-dev commented on GitHub (Nov 13, 2024):

That makes sense, thanks for the explanation 👍

@ahan-dev commented on GitHub (Nov 13, 2024): That makes sense, thanks for the explanation 👍
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#518