ITADN

[BUG]: `komorebic change-layout scrolling` does nothing in a multiple monitor setup

#1643OpenRaptDept 创建于 2026-01-21
bug
R
RaptDeptcommented
### Summary `change-layout scrolling` silently returns without changing to the scrolling layout. - Other layouts change properly using this command. - Setting scrolling layout for a workspace in the static config file works. - `cycle-layout` cycles to all the layouts including the scrolling layout. - `workspace-layout 0 0 scrolling` works fine. The relevant output in komorebi itself emits this warning (I have two monitors connected): ``` 2026-01-21T07:27:26.425493Z INFO process_command{ChangeLayout(Scrolling)}:change_workspace_layout_default{layout=Scrolling}: komorebi::window_manager: changing layout 2026-01-21T07:27:26.425706Z WARN process_command{ChangeLayout(Scrolling)}:change_workspace_layout_default{layout=Scrolling}: komorebi::window_manager: scrolling layout is only supported for a single monitor; not changing layout 2026-01-21T07:27:26.427264Z INFO process_command{ChangeLayout(Scrolling)}: komorebi::process_command: processed ``` ### Version Information OS Name: Microsoft Windows 11 Pro OS Version: 10.0.26200 N/A Build 26200 komorebic 0.1.39 tag:v0.1.39 commit_hash:8f982e45 build_time:2025-12-11 01:24:19 +00:00 build_env:rustc 1.91.1 (ed61e7d7e 2025-11-07),stable-x86_64-pc-windows-msvc ### Komorebi Configuration ```json { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json", "app_specific_configuration_path": "$Env:USERPROFILE/.komorebi/applications.json", "cross_monitor_move_behaviour": "Insert", "floating_window_aspect_ratio": "Standard", "border_offset": 0, "border_width": 3, "border_style": "Square", "default_container_padding": 5, "default_workspace_padding": 5, "mouse_follows_focus": false, "border_colours": { "monocle": "#ff3399", "single": "#42a5f5", "stack": "#00a542" }, "stackbar": { "height": 28, "label": "Title", "mode": "OnStack", "tabs": { "background": "#141414", "focused_text": "#42a5f5", "unfocused_text": "#b3b3b3", "width": 175 } }, "animation": { "enabled": true, "duration": 120, "fps": 60, "style": "EaseOutSine" }, "ignore_rules": [ { "id": "CloudDrive.Notifications.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "darktable.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "darktable", "kind": "Title", "matching_strategy": "DoesNotEqual" } ], { "id": "darktable (Not Responding)", "kind": "Title", "matching_strategy": "Equals" }, { "id": "DrivePool.Notifications.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "ProtonVPN.Client.exe", "kind": "Exe", "matching_strategy": "Equals" } ], { "id": "Scanner.Notifications.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "yasb.exe", "kind": "Exe", "matching_strategy": "Equals" } ], "tray_and_multi_window_applications": [ { "id": "ClickUp.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "deluge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "TunnlTo.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "upc.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Viber.exe", "kind": "Exe", "matching_strategy": "Equals" } ], "floating_applications": [ [ { "id": "deluge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Deluge", "kind": "Title", "matching_strategy": "DoesNotEndWith" } ], [ { "id": "Discord.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "(Discord P|Camera p)opout", "kind": "Title", "matching_strategy": "Regex" }, { "id": " - Discord", "kind": "Title", "matching_strategy": "Equals" } ], [ { "id": "DrivePool.UI.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "StableBit DrivePool", "kind": "Title", "matching_strategy": "DoesNotEqual" } ], { "id": "Fallout3.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Fire Toolbox.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "Flow.Launcher.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Settings", "kind": "Title", "matching_strategy": "DoesNotEqual" } ], [ { "id": "Focusrite Control 2.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Preferences", "kind": "Title", "matching_strategy": "Equals" } ], { "id": "Hades.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Hades2.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "NVCleanstall v", "kind": "Title", "matching_strategy": "StartsWith" }, [ { "id": "obs(32|64).exe", "kind": "Exe", "matching_strategy": "Regex" }, { "id": "(Fullscreen|Windowed) Projector.*", "kind": "Title", "matching_strategy": "Regex" } ], { "id": "odriveapp.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "okular.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "^(New Text Note|(\\w+ )+Properties|Select( \\w)+) - Okular$", "kind": "Title", "matching_strategy": "Regex" } ], { "id": "RocketLeague.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Spyder(Utility| MQA)?.exe", "kind": "Exe", "matching_strategy": "Regex" }, { "id": "SVPtube ", "kind": "Title", "matching_strategy": "StartsWith" }, [ { "id": "Telegram.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "TelegramDesktop|Media viewer", "kind": "Title", "matching_strategy": "Regex" } ], [ { "id": "Zoom.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "(VideoPreview|zWaitingMeetingID)WndClass|ZPPTEnhanceLoginMainWindowClassEx", "kind": "Class", "matching_strategy": "Regex" } ] ], "display_index_preferences": { "0": "ACR0D5E-5&3b7692c&0&UID24833", "1": "RTD1560-5&3b7692c&0&UID24832" // "3": 3 // for single-monitor laptop or Remote Desktop configurations }, "monitors": [ { "workspaces": [ { "name": "Primary", "layout": "UltrawideVerticalStack", "initial_workspace_rules": [ { "id": "^Primary — .* — Mozilla Firefox$", "kind": "Title", "matching_strategy": "Regex" } ] }, { "name": "Work", "layout": "UltrawideVerticalStack", "initial_workspace_rules": [ { "id": "^Work — .* — Mozilla Firefox$", "kind": "Title", "matching_strategy": "Regex" }, { "id": "ClickUp.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "slack.exe", "kind": "Exe", "matching_strategy": "Equals" } ] }, { "name": "3", "layout": "UltrawideVerticalStack" }, { "name": "4", "layout": "UltrawideVerticalStack" }, { "name": "5", "layout": "UltrawideVerticalStack" }, { "name": "6", "layout": "UltrawideVerticalStack" } ] }, { "workspaces": [ { "name": "Productivity", "layout": "VerticalStack", "window_container_behaviour": "Append", "initial_workspace_rules": [ [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Google Calendar", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Google Keep", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Time.is", "kind": "Title", "matching_strategy": "StartsWith" } ], { "id": "Todoist.exe", "kind": "Exe", "matching_strategy": "Equals" } ] }, { "name": "Social", "layout": "VerticalStack", "window_container_behaviour": "Append", "initial_workspace_rules": [ { "id": "Discord.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Messenger.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Discord (Web) - ", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Instagram - ", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Messenger - ", "kind": "Title", "matching_strategy": "StartsWith" } ], { "id": "PhoneExperienceHost.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Telegram.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Viber.exe", "kind": "Exe", "matching_strategy": "Equals" } ] }, { "name": "Media", "layout": "VerticalStack", "window_container_behaviour": "Append", "initial_workspace_rules": [ { "id": "Deezer.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "YouTube Music", "kind": "Title", "matching_strategy": "StartsWith" } ], { "id": "obs64.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Spotify.exe", "kind": "Exe", "matching_strategy": "Equals" } ] }, { "layout": "VerticalStack", "name": "D" }, { "layout": "VerticalStack", "name": "E" }, { "layout": "VerticalStack", "name": "F" } ] }, { "workspaces": [ { "name": "Primary", "layout": "VerticalStack", "initial_workspace_rules": [ { "id": "^Primary — .* — Mozilla Firefox$", "kind": "Title", "matching_strategy": "Regex" } ] }, { "name": "Work", "layout": "VerticalStack", "initial_workspace_rules": [ { "id": "^Work — .* — Mozilla Firefox$", "kind": "Title", "matching_strategy": "Regex" }, { "id": "ClickUp.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "slack.exe", "kind": "Exe", "matching_strategy": "Equals" } ] }, { "initial_workspace_rules": [ [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Google Calendar", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Google Keep", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Time.is", "kind": "Title", "matching_strategy": "StartsWith" } ], { "id": "Todoist.exe", "kind": "Exe", "matching_strategy": "Equals" } ], "layout": "VerticalStack", "name": "Productivity" }, { "initial_workspace_rules": [ { "id": "Discord.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Messenger.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Discord (Web) - ", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Instagram - ", "kind": "Title", "matching_strategy": "StartsWith" } ], [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Messenger - ", "kind": "Title", "matching_strategy": "StartsWith" } ], { "id": "PhoneExperienceHost.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Telegram.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Viber.exe", "kind": "Exe", "matching_strategy": "Equals" } ], "layout": "VerticalStack", "name": "Social" }, { "initial_workspace_rules": [ { "id": "Deezer.exe", "kind": "Exe", "matching_strategy": "Equals" }, [ { "id": "msedge.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "YouTube Music", "kind": "Title", "matching_strategy": "StartsWith" } ], { "id": "obs64.exe", "kind": "Exe", "matching_strategy": "Equals" }, { "id": "Spotify.exe", "kind": "Exe", "matching_strategy": "Equals" } ], "layout": "VerticalStack", "name": "Media" }, { "layout": "VerticalStack", "name": "D" }, { "layout": "VerticalStack", "name": "E" }, { "layout": "VerticalStack", "name": "F" } ] } ] } ``` ### Hotkey Configuration ```shell .shell powershell # show hotkeys alt + shift + ctrl + oem_2 : komorebic toggle-shortcuts # Reload configs alt + r : schtasks /run /tn Jake\whkd alt + shift + r : schtasks /run /tn Jake\komorebi alt + ctrl + shift + r : schtasks /run /tn Jake\yasb # Window management alt + shift + m : komorebic manage alt + shift + ctrl + m : komorebic unmanage alt + shift + t : komorebic retile alt + shift + ctrl + t : komorebic toggle-tiling alt + w : komorebic promote-focus; komorebic force-focus alt + shift + w : komorebic promote-swap alt + f : komorebic toggle-monocle alt + shift + f : komorebic toggle-float alt + shift + ctrl + f : komorebic toggle-lock alt + c : komorebic minimize alt + shift + c : komorebic close alt + shift + ctrl + c : komorebic toggle-maximize alt + shift + x : komorebic resize-axis horizontal decrease alt + x : komorebic resize-axis horizontal increase alt + shift + z : komorebic resize-axis vertical decrease alt + z : komorebic resize-axis vertical increase # Layouts alt + shift + h : komorebic flip-layout horizontal alt + shift + v : komorebic flip-layout vertical alt + shift + l : komorebic cycle-layout next alt + d : komorebic change-layout ultrawide-vertical-stack alt + shift + d : komorebic change-layout scrolling alt + shift + ctrl + d : komorebic change-layout grid alt + s : komorebic scrolling-layout-columns 2 alt + shift + s : komorebic scrolling-layout-columns 3 # Navigation & arrangement # Window f13 : komorebic focus left f14 : komorebic focus down f15 : komorebic focus up f16 : komorebic focus right ctrl + f13 : komorebic move left ctrl + f14 : komorebic move down ctrl + f15 : komorebic move up ctrl + f16 : komorebic move right # Stacks f18 : komorebic cycle-stack next f19 : komorebic cycle-stack previous f17 : komorebic unstack shift + f17 : komorebic unstack-all shift + f20 : komorebic unstack-all f20 : komorebic stack-all ctrl + f17 : komorebic stack left ctrl + f18 : komorebic stack down ctrl + f19 : komorebic stack up ctrl + f20 : komorebic stack right # Workspaces & monitors f21 : komorebic cycle-workspace previous f22 : komorebic cycle-monitor next; komorebic force-focus f23 : komorebic cycle-monitor previous; komorebic force-focus f24 : komorebic cycle-workspace next ctrl + f21 : komorebic cycle-move-to-workspace previous ctrl + f22 : komorebic cycle-send-to-monitor next ctrl + f23 : komorebic cycle-send-to-monitor previous ctrl + f24 : komorebic cycle-move-to-workspace next 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 alt + 9 : komorebic focus-workspace 8 alt + shift + 1 : komorebic send-to-workspace 0 alt + shift + 2 : komorebic send-to-workspace 1 alt + shift + 3 : komorebic send-to-workspace 2 alt + shift + 4 : komorebic send-to-workspace 3 alt + shift + 5 : komorebic send-to-workspace 4 alt + shift + 6 : komorebic send-to-workspace 5 alt + shift + 7 : komorebic send-to-workspace 6 alt + shift + 8 : komorebic send-to-workspace 7 alt + shift + 9 : komorebic send-to-workspace 8 alt + f13 : komorebic focus-monitor-workspace 0 0 alt + f14 : komorebic focus-monitor-workspace 0 1 alt + f15 : komorebic focus-monitor-workspace 0 2 alt + f16 : komorebic focus-monitor-workspace 0 3 alt + f17 : komorebic focus-monitor-workspace 1 0 alt + f18 : komorebic focus-monitor-workspace 1 1 alt + f19 : komorebic focus-monitor-workspace 1 2 alt + f20 : komorebic focus-monitor-workspace 1 3 alt + ctrl + f13 : komorebic send-to-monitor-workspace 0 0 alt + ctrl + f14 : komorebic send-to-monitor-workspace 0 1 alt + ctrl + f15 : komorebic send-to-monitor-workspace 0 2 alt + ctrl + f16 : komorebic send-to-monitor-workspace 0 3 alt + shift + ctrl + f13 : komorebic send-to-monitor-workspace 0 4 alt + shift + ctrl + f14 : komorebic send-to-monitor-workspace 0 5 alt + shift + ctrl + f15 : komorebic send-to-monitor-workspace 0 6 alt + shift + ctrl + f16 : komorebic send-to-monitor-workspace 0 7 alt + ctrl + f17 : komorebic send-to-monitor-workspace 1 0 alt + ctrl + f18 : komorebic send-to-monitor-workspace 1 1 alt + ctrl + f19 : komorebic send-to-monitor-workspace 1 2 alt + ctrl + f20 : komorebic send-to-monitor-workspace 1 3 alt + shift + ctrl + f17 : komorebic send-to-monitor-workspace 1 4 alt + shift + ctrl + f18 : komorebic send-to-monitor-workspace 1 5 alt + shift + ctrl + f19 : komorebic send-to-monitor-workspace 1 6 alt + shift + ctrl + f20 : komorebic send-to-monitor-workspace 1 7 ``` ### Output of komorebic check ```shell KOMOREBI_CONFIG_HOME detected: C:\Users\Jake\.komorebi Looking for configuration files in C:\Users\Jake\.komorebi Found komorebi.json; this file can be passed to the start command with the --config flag Found C:\Users\Jake\.config\whkdrc; key bindings will be loaded from here when whkd is started, and you can start it automatically using the --whkd flag ```
3 条评论