#1700·komorebi

[BUG]: commands focus and cycle-focus behave differently

Author: marcinbjornCreated Apr 25, 2026Updated Jun 24, 2026
Labelsbug

Summary

It may be a bug or an inconsistency in the description. Both commands have similar descriptions but behave differently:

focus - Change focus to the window in the specified direction

where focus left/right jumps between the monitors

cycle-focus - Change focus to the window in the specified cycle direction

where cycle-focus next/previous cycle only within the current monitor

If I want to change focus from window a on monitor 1 to window c on monitor 2, I need to use cycle-monitor next + cycle-focus next or a similar combination of two commands. focus right jumps between monitors, and I can change focus from monitor 1 to window b on monitor 2, but to get to window c, I additionally need to use focus down

       1                 2
+------+------+   +-------+-----+
|             |   |       |  b  |
|      a      |   |   a   +-----+
|             |   |       |  c  |
+------+------+   +-------+-----+

It may not sound like such a big problem, but it drives me crazy. When switching focus between windows on different monitors, I don't want to think in terms of up/down/left/right, but rather as next and previous. That's why the best solution for me would be cycling + jumping between monitors.

Version Information

komorebic 0.1.40 tag:v0.1.40 commit_hash:bed314b8 build_time:2026-02-14 21:08:01 +00:00 build_env:rustc 1.93.1 (01f6ddf75 2026-02-11),stable-x86_64-pc-windows-msvc

Komorebi Configuration

json
{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/master/schema.json",
  "app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 2,
  "default_container_padding": 3,
  "focus_follows_mouse": "Komorebi",
  "mouse_follows_focus": true,
  "transparency": false,
  "transparency_alpha": 225,
  "animation": {
    "enabled": false,
    "duration": 100,
    "style": "EaseInQuad",
    "fps": 120
  },
  "border": true,
  "border_implementation": "Komorebi",
  "border_style": "Rounded",
  "border_width": 3,
  "border_offset": -1,
  "border_colours": {
    "single": "#fa2a2a",
    "stack": "#a6e3a1",
    "monocle": "#f38ba8",
    "unfocused": "#10151D"
  },
  "stackbar": {
    "mode": "Never"
  },
  "float_rules": [
	{
		"kind": "Title",
		"id": "Endian Connect App",
		"matching_strategy": "StartsWith"
	}
  ],
  "monitors": [
    {
      "workspaces": [
        {
            "name": "I",
            "layout": "BSP"
          },
          {
            "name": "II",
            "layout": "Grid",
            "ensure-workspaces": "1"
          },
          {
            "name": "III",
            "layout": "BSP",
            "ensure-workspaces": "1"
          }
      ]
    },   {
      "workspaces": [
        {
            "name": "I",
            "layout": "BSP"
          },
          {
            "name": "II",
            "layout": "Grid",
            "ensure-workspaces": "1"
          },
          {
            "name": "III",
            "layout": "BSP",
            "ensure-workspaces": "1"
          }
      ]
    },
      {
        "workspaces": [
          {
              "name": "I",
              "layout": "BSP"
            },
            {
              "name": "II",
              "layout": "Grid",
              "ensure-workspaces": "1"
            },
            {
              "name": "III",
              "layout": "BSP",
              "ensure-workspaces": "1"
            }
        ]
      }
  ]
}

Hotkey Configuration

bash
#Requires AutoHotkey v3.0
#SingleInstance Force

RunK(cmd) {
    RunWait(A_ComSpec ' /c ' cmd, , "Hide")
}

; Focus
!h::RunK("komorebic focus left")
!Left::RunK("komorebic cycle-focus previous")

!l::RunK("komorebic focus right")
!Right::RunK("komorebic cycle-focus next")

!k::RunK("komorebic focus up")

!j::RunK("komorebic focus down")

; Move
!+h::RunK("komorebic move left")
!+Left::RunK("komorebic move left")

!+l::RunK("komorebic move right")
!+Right::RunK("komorebic move right")
!+k::RunK("komorebic move up")
!+Up::RunK("komorebic move up")

!+j::RunK("komorebic move down")
!+Down::RunK("komorebic move down")


; Resize
!p::RunK("komorebic resize-axis horizontal decrease")
!u::RunK("komorebic resize-axis horizontal increase")
!o::RunK("komorebic resize-axis vertical increase")
!i::RunK("komorebic resize-axis vertical decrease")

; Layout direction
!v::RunK("komorebic flip-layout horizontal-and-vertical")

; Floating / tiling
!+Space::RunK("komorebic toggle-float")

!Space::RunK("komorebic toggle-float")

; Fullscreen equivalent
!f::RunK("komorebic toggle-monocle")

; Minimize
!m::RunK("komorebic minimize")

; Close
!+w::RunK("komorebic close")

; Pause
!+p::RunK("komorebic toggle-pause")

; Reload
!+r::RunK("komorebic reload-configuration")

; Redraw / retile
!+q::RunK("komorebic retile")

; Exit komorebi
!+e::RunK("komorebic stop")

; Resize with mouse wheel 
!WheelUp::RunK("komorebic resize-axis horizontal increase")
!WheelDown::RunK("komorebic resize-axis horizontal decrease")
+WheelUp::RunK("komorebic resize-axis vertical increase")
+WheelDown::RunK("komorebic resize-axis vertical decrease")

; Workspaces with mouse button
!XButton2::RunK('komorebic cycle-workspace next')
!XButton1::RunK('komorebic cycle-workspace previous')

wu := 0
wd := 0

!+WheelUp::{
    global wu
    wu += 1
    if wu >= 2 {
        wu := 0
        RunK("komorebic cycle-layout next")
    }
}

!+WheelDown::{
    global wd
    wd += 1
    if wd >= 2 {
        wd := 0
        RunK("komorebic cycle-layout previous")
    }
}

Output of komorebic check

bash
KOMOREBI_CONFIG_HOME detected: C:\Users\Notandi\.config\komorebi

Looking for configuration files in C:\Users\Notandi\.config\komorebi

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


Your configuration file contains some options that have been renamed or deprecated:

"float_rules" is now "ignore_rules"

"focus_follows_mouse" is now end-of-life

End-of-life features will not receive any further bug fixes or updates; they should not be used

Found C:\Users\Notandi\.config\whkdrc; key bindings will be loaded from here when whkd is started, and you can start it automatically using the --whkd flag