Originally created by @jeeeem on GitHub (Mar 27, 2025).
Summary
I have a chrome on the 1st workspace as initial workspace rule so the chrome will always open on the 1st workspace, if I open another chrome window on the 1st workspace, it append properly to a stack since I have "window_container_behaviour": "Append" config on the 1st workspace, but If I open another chrome from another workspace, it doesn't to append to it. It opened in a new tile. Im expecting the window to append in a stack. and take note, all the workspace has "window_container_behaviour": "Append"` config.
{"$schema":"https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json","app_specific_configuration_path":["$Env:KOMOREBI_CONFIG_HOME/applications.json","$Env:KOMOREBI_CONFIG_HOME/applications.personal.json"],"resize_delta":50,"focus-follows-mouse":"Komorebi","mouse-follows-focus":false,"window_container_behaviour":"Create","cross_monitor_move_behaviour":"Insert","unmanaged_window_operation_behaviour":"Op","default_workspace_padding":5,"default_container_padding":3,"window_hiding_behaviour":"Cloak","floating_window_aspect_ratio":"Widescreen","transparency":true,"transparency_alpha":240,"transparency_ignore_rules":[{"kind":"Title","id":"YouTube","matching_strategy":"Contains"},{"kind":"Exe","id":"vlc.exe","matching_strategy":"Equals"}],"display_index_preferences":{"0":"MSI3DB7-5&322806a5&1&UID4352","1":"BOE094D-5&322806a5&1&UID4355","2":"LGD0753-4&32bc49e7&0&UID8388688"},"bar_configurations":["$Env:KOMOREBI_CONFIG_HOME/komorebi.bar.0.json","$Env:KOMOREBI_CONFIG_HOME/komorebi.bar.2.json"],"theme":{"palette":"Base16","name":"CatppuccinFrappe","monocle_border":"Base0A"// "floating_border": "Base09",
// "unfocused_border": "Base06",
// "bar_accent": "Base0D",
// "unfocused_locked_border": "Base06"
},"border":true,"border_implementation":"Komorebi","border_width":3,"border_offset":-1,// TODO: convert to hex color
"border_colours":{"single":{"r":66,"g":165,"b":245},"stack":{"r":0,"g":165,"b":66},"monocle":{"r":255,"g":51,"b":153},"floating":{"r":255,"g":51,"b":153}},"stackbar":{"height":0,"mode":"Never","label":"Title","tabs":{"width":300,"focused_text":"#bfaa69","unfocused_text":"#dfe2f3","background":"#121826","font_family":"JetBrains Mono","font_size":24}},"animation":{"enabled":true,"duration":100,"style":"Linear","fps":144},"monitors":[// Main monitor (3440 x 1140)
{"window_based_work_area_offset_limit":1,"window_based_work_area_offset":{"left":560,"top":0,"right":1120,"bottom":50},"workspaces":[{"name":"Main","layout":"BSP","layout_rules":{},"initial_workspace_rules":[{"kind":"Exe","id":"firefox.exe","matching_strategy":"Equals"}]},{"name":"Coding","layout":"BSP","layout_rules":{},"initial_workspace_rules":[{"kind":"Exe","id":"wezterm-gui.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"SumatraPDF","matching_strategy":"StartsWith"}]},{"name":"Media","layout":"BSP","layout_rules":{},"initial_workspace_rules":[],"workspace_rules":[{"kind":"Exe","id":"Discord.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"","matching_strategy":"Equals"}]},{"name":"Game","apply_window_based_work_area_offset":false,"float_override":true,"initial_workspace_rules":[{"kind":"Exe","id":"dota2.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"Phasmophobia.exe","matching_strategy":"Equals"},{"kind":"Title","id":"VALORANT","matching_strategy":"StartsWith"},{"kind":"Exe","id":"cs2.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"FACEIT.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"faceitclient.exe","matching_strategy":"Equals"}],"workspace_rules":[{"kind":"Exe","id":"Riot Client.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"steamwebhelper.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"Medal.exe","matching_strategy":"Equals"}]},{"name":"Work","layout":"BSP","layout_rules":{},"workspace_rules":[{"kind":"Exe","id":"ms-teams.exe","matching_strategy":"Equals"}]},{"name":"Movie","layout":"BSP","layout_rules":{},"initial_workspace_rules":[{"kind":"Exe","id":"stremio.exe","matching_strategy":"Equals"}],"workspace_rules":[{"kind":"Exe","id":"","matching_strategy":"Equals"}]},{"name":"Music","window_container_behaviour":"Append","layout":"BSP","layout_rules":{},"workspace_rules":[{"kind":"Exe","id":"Spotify.exe","matching_strategy":"Equals"}]},{"name":"ETC","window_container_behaviour":"Append","layout":"BSP","layout_rules":{},"initial_workspace_rules":[{"kind":"Exe","id":"parsecd.exe","matching_strategy":"Equals"}],"workspace_rules":[{"kind":"Exe","id":"qbittorrent.exe","matching_strategy":"Equals"}]}]},// 2nd monitor (1920x 1080)
{"window_based_work_area_offset_limit":0,"window_based_work_area_offset":{"left":560,"top":25,"right":1120,"bottom":50},"workspaces":[{"name":"1","layout":"BSP"},{"name":"2","layout":"BSP"},{"name":"3","layout":"BSP"},{"name":"4","layout":"BSP"},{"name":"5","layout":"BSP"}]},// 3rd monitor (1920x 1080)
{"window_based_work_area_offset_limit":0,"window_based_work_area_offset":{"left":560,"top":25,"right":1120,"bottom":50},"workspaces":[{"name":"Browse","layout":"BSP","layout_rules":{},"window_container_behaviour":"Append","initial_workspace_rules":[{"kind":"Exe","id":"chrome.exe","matching_strategy":"Equals"}]},{"name":"Dev","layout":"BSP","layout_rules":{},"window_container_behaviour":"Append","initial_workspace_rules":[{"kind":"Exe","id":"wezterm-gui.exe","matching_strategy":"Equals"},{"kind":"Exe","id":"Postman.exe","matching_strategy":"Equals"}]},{"name":"Chat","layout":"BSP","layout_rules":{},"workspace_rules":[{"kind":"Exe","id":"ms-teams.exe","matching_strategy":"Equals"}]},{"name":"Email","layout":"BSP","layout_rules":{},"workspace_rules":[{"kind":"Exe","id":"olk.exe","matching_strategy":"Equals"}]},{"name":"Tools","layout":"BSP","layout_rules":{},"workspace_rules":[{"kind":"Exe","id":"EXCEL.EXE","matching_strategy":"Equals"},{"kind":"Exe","id":"WINWORD.EXE","matching_strategy":"Equals"}]},{"name":"Personal","layout":"BSP","layout_rules":{},"window_container_behaviour":"Append","initial_workspace_rules":[{"kind":"Exe","id":"firefox.exe","matching_strategy":"Equals"}]}]}]}
Hotkey Configuration
#Requires AutoHotkey v2.0.2
#SingleInstance Force
; Show a notification when this script has been started
SoundBeep 300,150
; TrayTip "Komorebi", "Komorebi script has been started" ; For some reason, Traytip does not working properly
ToolTip "Komorebi script has been started"
SetTimer ToolTip, -2000
HideTrayTip() {
ToolTip
}
; CONTROLS
; # Win (Windows logo key)
; ! Alt
; ^ Ctrl
; + Shift
; & An ampersand may be used between any two keys or mouse buttons to combine them into a custom hotkey.
; etc (ctrl+alt+shift)
#SuspendExempt ; Exempt the following hotkey from Suspend.
^!+r::Reload ; Reload this script
^!+p::Suspend ; Disable all komorebic hotkeys except for suspending key
^!+w::AutoHotkey("./WindowSpy.ahk") ; To update this, just copy the latest version in autohotkey folder, overwrite this script to the latest "WindowSpy.ahk" script
^!+s::Nushell("start-wm") ; Restart komorebi process
^!+x::Nushell("stop-wm") ; Stop komorebi process
#SuspendExempt False ; Suspend for any hotkeys/hotstrings that are below this.
; Window manager options (alt) / (alt+shift)
!f::Komorebic("toggle-maximize") ; Fullscreen
!m::Komorebic("toggle-window-based-work-area-offset") ; Maximize work area offset
!+f::Komorebic("toggle-monocle") ; Expand the window in the whole layout
!e::Komorebic("manage") ; Manage window
!+e::Komorebic("unmanage") ; Unmanage window
!t::Komorebic("toggle-float") ; Move the window on the top of all windows
!+t::Komorebic("toggle-tiling") ; Toggle tiling of windows
!;::Komorebic("toggle-workspace-layer") ; Toggle workspace layer (Floating or Tiling)
!+r::Komorebic("retile") ; Organize the tiling windows
!w::Komorebic("toggle-workspace-window-container-behaviour") ; Toggle dynamic or stacking tiling)
!.::Komorebic("toggle-lock") ; Toggle lock container
; Close window (alt+shift)
!+q::Komorebic("close")
!q::Komorebic("minimize")
but If I open another chrome from another workspace, it doesn't to append to it.
This is expected behaviour; window_container_behaviour only applies to windows opened on the workspace with that configuration now, not to windows moved to that workspace (ie. through workspace rules).
I'm open to accepting a PR which puts the desired behaviour you're talking about behind a separate opt-in configuration option if you or anyone else wants this enough to work on it.
@LGUG2Z commented on GitHub (Apr 4, 2025):
> but If I open another chrome from another workspace, it doesn't to append to it.
This is expected behaviour; `window_container_behaviour` only applies to windows opened on the workspace with that configuration now, not to windows moved to that workspace (ie. through workspace rules).
I'm open to accepting a PR which puts the desired behaviour you're talking about behind a separate opt-in configuration option if you or anyone else wants this enough to work on it.
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 @jeeeem on GitHub (Mar 27, 2025).
Summary
I have a chrome on the 1st workspace as
initial workspace ruleso the chrome will always open on the 1st workspace, if I open another chrome window on the 1st workspace, it append properly to a stack since I have"window_container_behaviour": "Append"config on the 1st workspace, but If I open another chrome from another workspace, it doesn't to append to it. It opened in a new tile. Im expecting the window to append in a stack. and take note, all the workspace has "window_container_behaviour": "Append"` config.Version Information
komorebic 0.1.36
branch:master
commit_hash:a8c687d3
build_time:2025-03-23 17:20:57 +08:00
build_env:rustc 1.85.0 (4d91de4e4 2025-02-17),stable-x86_64-pc-windows-msvc
Komorebi Configuration
Hotkey Configuration
#Requires AutoHotkey v2.0.2
#SingleInstance Force
; Show a notification when this script has been started
SoundBeep 300,150
; TrayTip "Komorebi", "Komorebi script has been started" ; For some reason, Traytip does not working properly
ToolTip "Komorebi script has been started"
SetTimer ToolTip, -2000
HideTrayTip() {
ToolTip
}
; CONTROLS
; # Win (Windows logo key)
; ! Alt
; ^ Ctrl
; + Shift
; & An ampersand may be used between any two keys or mouse buttons to combine them into a custom hotkey.
Komorebic(cmd) {
RunWait(format("komorebic.exe {}", cmd), , "Hide")
}
AutoHotkey(cmd) {
RunWait(format("autohotkey.exe {}", cmd), , "Hide")
}
Nushell(cmd) {
RunWait(format("nu --config ~/.config/nushell/init.nu --env-config ~/.config/nushell/env.nu -c {}", cmd), , "Hide")
}
; etc (ctrl+alt+shift)
#SuspendExempt ; Exempt the following hotkey from Suspend.
^!+r::Reload ; Reload this script
^!+p::Suspend ; Disable all komorebic hotkeys except for suspending key
^!+w::AutoHotkey("./WindowSpy.ahk") ; To update this, just copy the latest version in autohotkey folder, overwrite this script to the latest "WindowSpy.ahk" script
^!+s::Nushell("start-wm") ; Restart komorebi process
^!+x::Nushell("stop-wm") ; Stop komorebi process
#SuspendExempt False ; Suspend for any hotkeys/hotstrings that are below this.
; ^!+p::Komorebic("toggle-pause") ; Stop komorebic tiling
^!+g::Komorebic("gui")
^!+f::Komorebic("enforce-workspace-rules")
^!+d::Komorebic("restore-windows")
; Focus windows (alt) + (alt+shift)
!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 (alt)
!+h::Komorebic("move left")
!+j::Komorebic("move down")
!+k::Komorebic("move up")
!+l::Komorebic("move right")
!+Enter::Komorebic("promote")
; Stack windows (ctrl+alt)
^!Left::Komorebic("stack left")
^!Right::Komorebic("stack right")
^!Up::Komorebic("stack up")
^!Down::Komorebic("stack down")
^!;::Komorebic("unstack")
^!s::Komorebic("stack-all")
^!x::Komorebic("unstack-all")
^![::Komorebic("cycle-stack previous")
^!]::Komorebic("cycle-stack next")
^!q::Komorebic("cycle-stack previous")
^!e::Komorebic("cycle-stack next")
^!+q::Komorebic("cycle-stack-index previous")
^!+e::Komorebic("cycle-stack-index next")
; Resize (alt) / (alt+shift)
!=::Komorebic("resize-axis horizontal increase")
!-::Komorebic("resize-axis horizontal decrease")
!+=::Komorebic("resize-axis vertical increase")
!+-::Komorebic("resize-axis vertical decrease")
; Window manager options (alt) / (alt+shift)
!f::Komorebic("toggle-maximize") ; Fullscreen
!m::Komorebic("toggle-window-based-work-area-offset") ; Maximize work area offset
!+f::Komorebic("toggle-monocle") ; Expand the window in the whole layout
!e::Komorebic("manage") ; Manage window
!+e::Komorebic("unmanage") ; Unmanage window
!t::Komorebic("toggle-float") ; Move the window on the top of all windows
!+t::Komorebic("toggle-tiling") ; Toggle tiling of windows
!;::Komorebic("toggle-workspace-layer") ; Toggle workspace layer (Floating or Tiling)
!+r::Komorebic("retile") ; Organize the tiling windows
!w::Komorebic("toggle-workspace-window-container-behaviour") ; Toggle dynamic or stacking tiling)
!.::Komorebic("toggle-lock") ; Toggle lock container
; Close window (alt+shift)
!+q::Komorebic("close")
!q::Komorebic("minimize")
; KOMOREBI LAYOUTS
; BSP
; +-------+-----+
; | | |
; | +--+--+
; | | |--|
; +-------+--+--+
; Vertical Stack
; +-------+-----+
; | | |
; | +-----+
; | | |
; +-------+-----+
; RightMainVerticalStack
; +-----+-------+
; | | |
; +-----+ |
; | | |
; +-----+-------+
; Horizontal Stack
; +------+------+
; | |
; |------+------+
; | | |
; +------+------+
; Columns
; +--+--+--+--+
; | | | | |
; | | | | |
; | | | | |
; +--+--+--+--+
; Rows
; +-----------+
; |-----------|
; |-----------|
; |-----------|
; +-----------+
; Ultrawide Vertical Stack
; +-----+-----------+-----+
; | | | |
; | | +-----+
; | | | |
; | | +-----+
; | | | |
; +-----+-----------+-----+
; Grid
; +-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+
; | | | | | | | | | | | | | | |
; | | | | | | | | | | | | | +---+
; +-----+-----+ | +---+---+ +---+---+---+ +---+---| |
; | | | | | | | | | | | | | +---+
; | | | | | | | | | | | | | | |
; +-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+
; 4 windows 5 windows 6 windows 7 windows
; Change layout (alt+shift) / (ctrl+alt+shift)
; ^!+x::Komorebic("cycle-layout previous")
; ^!+c::Komorebic("cycle-layout next")
!+b::Komorebic("change-layout bsp")
!+x::Komorebic("change-layout rows")
!+c::Komorebic("change-layout columns")
!+u::Komorebic("change-layout ultrawide-vertical-stack")
; Flip Layouts (alt)
!x::Komorebic("flip-layout horizontal")
!c::Komorebic("flip-layout vertical")
!v::Komorebic("flip-layout horizontal-and-vertical")
; WORKSPACES
; Focus workspaces (alt)
#Tab::Komorebic("focus-last-workspace")
^!h::Komorebic("cycle-workspace previous")
^!l::Komorebic("cycle-workspace next")
!1::Komorebic("focus-monitor-workspace 0 0")
!2::Komorebic("focus-monitor-workspace 0 1")
!3::Komorebic("focus-monitor-workspace 0 2")
!4::Komorebic("focus-monitor-workspace 0 3")
!5::Komorebic("focus-monitor-workspace 0 4")
!6::Komorebic("focus-monitor-workspace 0 5")
!7::Komorebic("focus-monitor-workspace 0 6")
!8::Komorebic("focus-monitor-workspace 0 7")
; Focus other monitor workspaces (alt)
^!c::Komorebic("cycle-monitor next")
^!1::Komorebic("focus-monitor-workspace 1 0")
^!2::Komorebic("focus-monitor-workspace 1 1")
^!3::Komorebic("focus-monitor-workspace 1 2")
^!4::Komorebic("focus-monitor-workspace 1 3")
^!5::Komorebic("focus-monitor-workspace 1 4")
^!6::Komorebic("focus-monitor-workspace 1 5")
^!7::Komorebic("focus-monitor-workspace 1 6")
^!8::Komorebic("focus-monitor-workspace 1 7")
; Send windows across workspaces (alt + shift)
!+1::Komorebic("send-to-monitor-workspace 0 0")
!+2::Komorebic("send-to-monitor-workspace 0 1")
!+3::Komorebic("send-to-monitor-workspace 0 2")
!+4::Komorebic("send-to-monitor-workspace 0 3")
!+5::Komorebic("send-to-monitor-workspace 0 4")
!+6::Komorebic("send-to-monitor-workspace 0 5")
!+7::Komorebic("send-to-monitor-workspace 0 6")
!+8::Komorebic("send-to-monitor-workspace 0 7")
; Send windows across monitor workspace (ctrl + alt + shift)
^!+c::Komorebic("cycle-move-to-monitor next")
^!+1::Komorebic("send-to-monitor-workspace 1 0")
^!+2::Komorebic("send-to-monitor-workspace 1 1")
^!+3::Komorebic("send-to-monitor-workspace 1 2")
^!+4::Komorebic("send-to-monitor-workspace 1 3")
^!+5::Komorebic("send-to-monitor-workspace 1 4")
^!+6::Komorebic("send-to-monitor-workspace 1 5")
^!+7::Komorebic("send-to-monitor-workspace 1 6")
^!+8::Komorebic("send-to-monitor-workspace 1 7")
Output of komorebic check
KOMOREBI_CONFIG_HOME detected: C:\Users\jberen/.config/komorebi/
Looking for configuration files in C:\Users\jberen/.config/komorebi/
Found komorebi.json; this file can be passed to the start command with the --config flag
No ~/.config/whkdrc found; you may not be able to control komorebi with your keyboard
@LGUG2Z commented on GitHub (Apr 4, 2025):
This is expected behaviour;
window_container_behaviouronly applies to windows opened on the workspace with that configuration now, not to windows moved to that workspace (ie. through workspace rules).I'm open to accepting a PR which puts the desired behaviour you're talking about behind a separate opt-in configuration option if you or anyone else wants this enough to work on it.