[BUG]: PowerToys Window Walker Ignores Windows in Inactive Komorebi Workspaces #586

Closed
opened 2026-01-05 14:51:46 +01:00 by adam · 1 comment
Owner

Originally created by @azaidrahman on GitHub (Mar 14, 2025).

Summary

When using Komorebi as my tiling window manager on Windows, I’ve observed that PowerToys Window Walker only lists windows that are visible in the active workspace. It appears that Komorebi’s workspaces hide windows from inactive workspaces entirely, which causes Window Walker to ignore them.

Would it be possible to add an option to allow window switchers to access windows across all workspaces, even when they’re hidden?

Version Information

OS Name: Microsoft Windows 11 Pro
OS Version: 10.0.26100 N/A Build 26100

komorebic 0.1.34
tag:v0.1.34
commit_hash:80edcadb
build_time:2025-02-21 02:21:41 +00:00
build_env:rustc 1.85.0 (4d91de4e4 2025-02-17),stable-x86_64-pc-windows-msvc

Komorebi Configuration

{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.28/schema.json",
  "app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 0,
  "default_container_padding": 0,
  "border": true,
  "border_width": 4,
  "border_offset": 0,
  "border_colours": {
    "single": "#42a5f5",
    "stack": "#00a542",
    "monocle": "#ff3399",
    "unfocused": "#808080"
  },
  "stackbar": {
    "height": 40,
    "mode": "OnStack",
    "tabs": {
      "width": 300,
      "focused_text": "#00a542",
      "unfocused_text": "#b3b3b3",
      "background": "#141414"
    }
  },
  "monitors": [
    {
      "workspaces": [
        {
          "name": "I",
          "layout": "BSP"
        },
        {
          "name": "II",
          "layout": "BSP"
        },
        {
          "name": "III",
          "layout": "BSP"
        },
        {
          "name": "IV",
          "layout": "BSP"
        },
        {
          "name": "V",
          "layout": "BSP"
        },
        {
          "name": "VI",
          "layout": "BSP"
        }
      ]
    },
    {
      "workspaces": [
        {
          "name": "I",
          "layout": "BSP"
        },
        {
          "name": "II",
          "layout": "BSP"
        },
        {
          "name": "III",
          "layout": "BSP"
        },
        {
          "name": "IV",
          "layout": "BSP"
        },
        {
          "name": "V",
          "layout": "BSP"
        },
        {
          "name": "VI",
          "layout": "BSP"
        }
      ]
    }
  ]
}

Hotkey Configuration

; #Requires AutoHotkey v2.0.19
#SingleInstance Force

; === SYMBOLS ===
; !   <- Alt
; +   <- Shift
; ^   <- Ctrl
; #   <- Win

; Adapted from https://github.com/ConnorSweeneyDev/.config/blob/main/ahk/wm.ahk
#e::Run("explorer")
#t::Run("pwsh -NoProfile -Command wezterm", , "Hide")
; #f::Run("pwsh -NoProfile -Command firefox", , "Hide")
#f::Run("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Zen.lnk")
#d::Run("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Discord.lnk")
; #s::Run("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Steam.lnk")

RunWait("pwsh -NoProfile -Command if ((Get-Process -Name 'komorebi' -ErrorAction SilentlyContinue) -eq $null) { } else { komorebic stop }", , "Hide")
RunWait("pwsh -Command komorebic start", , "Hide")

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-layout previous")
!+]::Komorebic("cycle-layout 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
!t::Komorebic("toggle-float")
!f::Komorebic("toggle-monocle")

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

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

; Cycle Workspace
!a::Komorebic("cycle-workspace previous")
!s::Komorebic("cycle-workspace next")


; 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")

RunWait("pwsh -NoProfile -Command if ((Get-Process -Name 'yasb' -ErrorAction SilentlyContinue) -eq $null) { } else { yasbc stop }", , "Hide")
RunWait("pwsh -NoProfile -Command yasbc start", , "Hide")
OpenYasbMenu() {
  ButtonOffsetX := 20
  ButtonOffsetY := 20
  MonitorPrimary := MonitorGetPrimary()
  MonitorGet MonitorPrimary, &L, &T, &R, &B
  DllCall("SetCursorPos", "int", (L + ButtonOffsetX), "int", (T + ButtonOffsetY))
  MouseClick "Left"
  DllCall("SetCursorPos", "int", R / 2, "int", B / 2)
}
;~ ^!BS::OpenYasbMenu()

Output of komorebic check

KOMOREBI_CONFIG_HOME detected: C:\Users\azaid.config\komorebi\

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

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

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

Originally created by @azaidrahman on GitHub (Mar 14, 2025). ### Summary When using Komorebi as my tiling window manager on Windows, I’ve observed that [PowerToys Window Walker](https://learn.microsoft.com/en-us/windows/powertoys/run#window-walker-plugin) only lists windows that are visible in the active workspace. It appears that Komorebi’s workspaces hide windows from inactive workspaces entirely, which causes Window Walker to ignore them. Would it be possible to add an option to allow window switchers to access windows across all workspaces, even when they’re hidden? ### Version Information OS Name: Microsoft Windows 11 Pro OS Version: 10.0.26100 N/A Build 26100 komorebic 0.1.34 tag:v0.1.34 commit_hash:80edcadb build_time:2025-02-21 02:21:41 +00:00 build_env:rustc 1.85.0 (4d91de4e4 2025-02-17),stable-x86_64-pc-windows-msvc ### Komorebi Configuration ```json { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.28/schema.json", "app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json", "window_hiding_behaviour": "Cloak", "cross_monitor_move_behaviour": "Insert", "default_workspace_padding": 0, "default_container_padding": 0, "border": true, "border_width": 4, "border_offset": 0, "border_colours": { "single": "#42a5f5", "stack": "#00a542", "monocle": "#ff3399", "unfocused": "#808080" }, "stackbar": { "height": 40, "mode": "OnStack", "tabs": { "width": 300, "focused_text": "#00a542", "unfocused_text": "#b3b3b3", "background": "#141414" } }, "monitors": [ { "workspaces": [ { "name": "I", "layout": "BSP" }, { "name": "II", "layout": "BSP" }, { "name": "III", "layout": "BSP" }, { "name": "IV", "layout": "BSP" }, { "name": "V", "layout": "BSP" }, { "name": "VI", "layout": "BSP" } ] }, { "workspaces": [ { "name": "I", "layout": "BSP" }, { "name": "II", "layout": "BSP" }, { "name": "III", "layout": "BSP" }, { "name": "IV", "layout": "BSP" }, { "name": "V", "layout": "BSP" }, { "name": "VI", "layout": "BSP" } ] } ] } ``` ### Hotkey Configuration ```ahk ; #Requires AutoHotkey v2.0.19 #SingleInstance Force ; === SYMBOLS === ; ! <- Alt ; + <- Shift ; ^ <- Ctrl ; # <- Win ; Adapted from https://github.com/ConnorSweeneyDev/.config/blob/main/ahk/wm.ahk #e::Run("explorer") #t::Run("pwsh -NoProfile -Command wezterm", , "Hide") ; #f::Run("pwsh -NoProfile -Command firefox", , "Hide") #f::Run("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Zen.lnk") #d::Run("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Discord.lnk") ; #s::Run("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Steam.lnk") RunWait("pwsh -NoProfile -Command if ((Get-Process -Name 'komorebi' -ErrorAction SilentlyContinue) -eq $null) { } else { komorebic stop }", , "Hide") RunWait("pwsh -Command komorebic start", , "Hide") 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-layout previous") !+]::Komorebic("cycle-layout 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 !t::Komorebic("toggle-float") !f::Komorebic("toggle-monocle") ; Window manager options !+r::Komorebic("retile") !p::Komorebic("toggle-pause") ; Layouts !x::Komorebic("flip-layout horizontal") !y::Komorebic("flip-layout vertical") ; Cycle Workspace !a::Komorebic("cycle-workspace previous") !s::Komorebic("cycle-workspace next") ; 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") RunWait("pwsh -NoProfile -Command if ((Get-Process -Name 'yasb' -ErrorAction SilentlyContinue) -eq $null) { } else { yasbc stop }", , "Hide") RunWait("pwsh -NoProfile -Command yasbc start", , "Hide") OpenYasbMenu() { ButtonOffsetX := 20 ButtonOffsetY := 20 MonitorPrimary := MonitorGetPrimary() MonitorGet MonitorPrimary, &L, &T, &R, &B DllCall("SetCursorPos", "int", (L + ButtonOffsetX), "int", (T + ButtonOffsetY)) MouseClick "Left" DllCall("SetCursorPos", "int", R / 2, "int", B / 2) } ;~ ^!BS::OpenYasbMenu() ``` ### Output of komorebic check KOMOREBI_CONFIG_HOME detected: C:\Users\azaid\.config\komorebi\ Looking for configuration files in C:\Users\azaid\.config\komorebi\ Found komorebi.json; this file can be passed to the start command with the --config flag Found C:\Users\azaid\.config\whkdrc; key bindings will be loaded from here when whkd is started, and you can start it automatically using the --whkd flag
adam added the bug label 2026-01-05 14:51:46 +01:00
adam closed this issue 2026-01-05 14:51:46 +01:00
Author
Owner

@LGUG2Z commented on GitHub (Mar 14, 2025):

This is a PowerToys bug - you should open an issue on their repo (feel free to backlink this).

There is no reason why WindowWalker should ignore Minimized, Hidden or Cloaked HWNDs as targets for filtering.

@LGUG2Z commented on GitHub (Mar 14, 2025): This is a PowerToys bug - you should open an issue on their repo (feel free to backlink this). There is no reason why WindowWalker should ignore Minimized, Hidden or Cloaked HWNDs as targets for filtering.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#586