[BUG]: Window outlines remain after switching virtual desktops in Windows 11 #604

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

Originally created by @PadRocha on GitHub (Apr 24, 2025).

Summary

When switching between virtual desktops (workspaces) in Windows 11, Komorebi seems to render persistent window outlines from the previous desktop. These ghost outlines do not correspond to any active windows on the new workspace and visually clutter the screen.

Additionally, when opening new windows or maximizing them, they are not adapted into Komorebi’s floating/tiled layout. Instead, they open in full screen as is standard behavior in native Windows, bypassing Komorebi’s layout logic.

To Reproduce
Steps to reproduce the behavior:

  1. Open multiple windows with Komorebi active.
  2. Switch to a new virtual desktop using Windows + Ctrl + → / ←.
  3. Observe that outlines from the previous desktop remain visible.
  4. Open or maximize a new application — it does not float or tile as expected.

Expected behavior

  • Upon switching desktops, all Komorebi outlines should be cleared and updated to reflect only the current workspace.
  • New windows should respect the Komorebi layout (float/tile modes) instead of maximizing by default.

Screenshots
Attached screenshot shows ghost outlines from a previous desktop:
Komorebi Desktop Outline Bug

Additional context
This behavior breaks the illusion of a clean tiling WM on Windows and severely affects usability when working with multiple virtual desktops.

Version Information

  • OS: Windows 11 Pro 64-bit
  • komorebic 0.1.36
    tag:v0.1.36
    commit_hash:8ef1bcf2
    build_time:2025-04-13 03:10:57 +00:00
    build_env:rustc 1.86.0 (05f9846f8 2025-03-31),stable-x86_64-pc-windows-msvc
  • Display setup: [e.g., single monitor 1080p, multiple monitors, etc.]

Komorebi Configuration

{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.36/schema.json",
  "app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 20,
  "default_container_padding": 20,
  "border": true,
  "border_width": 8,
  "border_offset": -1,
  "theme": {
    "palette": "Base16",
    "name": "Ashes",
    "unfocused_border": "Base03",
    "bar_accent": "Base0D"
  },
  "monitors": [
    {
      "workspaces": [
        {
          "name": "I",
          "layout": "BSP"
        },
        {
          "name": "II",
          "layout": "VerticalStack"
        },
        {
          "name": "III",
          "layout": "HorizontalStack"
        },
        {
          "name": "IV",
          "layout": "UltrawideVerticalStack"
        },
        {
          "name": "V",
          "layout": "Rows"
        },
        {
          "name": "VI",
          "layout": "Grid"
        },
        {
          "name": "VII",
          "layout": "RightMainVerticalStack"
        }
      ]
    }
  ]
}


{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.36/schema.bar.json",
  "monitor": 0,
  "font_family": "JetBrains Mono",
  "theme": {
    "palette": "Base16",
    "name": "Ashes",
    "accent": "Base0D"
  },
  "left_widgets": [
    {
      "Komorebi": {
        "workspaces": {
          "enable": true,
          "hide_empty_workspaces": false
        },
        "layout": {
          "enable": true
        },
        "focused_window": {
          "enable": true,
          "show_icon": true
        }
      }
    }
  ],
  "right_widgets": [
    {
      "Update": {
        "enable": true
      }
    },
    {
      "Media": {
        "enable": true
      }
    },
    {
      "Storage": {
        "enable": true
      }
    },
    {
      "Memory": {
        "enable": true
      }
    },
    {
      "Network": {
        "enable": true,
        "show_total_data_transmitted": true,
        "show_network_activity": true
      }
    },
    {
      "Date": {
        "enable": true,
        "format": "DayDateMonthYear"
      }
    },
    {
      "Time": {
        "enable": true,
        "format": "TwentyFourHour"
      }
    },
    {
      "Battery": {
        "enable": true
      }
    }
  ]
}

Hotkey Configuration

.shell powershell

Reload whkd configuration

alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd

alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell
alt + shift + o : komorebic reload-configuration

App shortcuts - these require shell to be pwsh / powershell

The apps will be focused if open, or launched if not open

alt + f : if ($wshell.AppActivate('Firefox') -eq $False) { start firefox }

alt + b : if ($wshell.AppActivate('Chrome') -eq $False) { start chrome }

alt + q : komorebic close
alt + m : komorebic minimize

Focus windows

alt + h : komorebic focus left
alt + j : komorebic focus down
alt + k : komorebic focus up
alt + l : komorebic focus right
alt + shift + oem_4 : komorebic cycle-focus previous # oem_4 is [
alt + shift + oem_6 : komorebic cycle-focus next # oem_6 is ]

Move windows

alt + shift + h : komorebic move left
alt + shift + j : komorebic move down
alt + shift + k : komorebic move up
alt + shift + l : komorebic move right
alt + shift + return : komorebic promote

Stack windows

alt + left : komorebic stack left
alt + down : komorebic stack down
alt + up : komorebic stack up
alt + right : komorebic stack right
alt + oem_1 : komorebic unstack # oem_1 is ;
alt + oem_4 : komorebic cycle-stack previous # oem_4 is [
alt + oem_6 : komorebic cycle-stack next # oem_6 is ]

Resize

alt + oem_plus : komorebic resize-axis horizontal increase
alt + oem_minus : komorebic resize-axis horizontal decrease
alt + shift + oem_plus : komorebic resize-axis vertical increase
alt + shift + oem_minus : komorebic resize-axis vertical decrease

Manipulate windows

alt + t : komorebic toggle-float
alt + shift + f : komorebic toggle-monocle

Window manager options

alt + shift + r : komorebic retile
alt + p : komorebic toggle-pause

Layouts

alt + x : komorebic flip-layout horizontal
alt + y : komorebic flip-layout vertical

Workspaces

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

Move windows across workspaces

alt + shift + 1 : komorebic move-to-workspace 0
alt + shift + 2 : komorebic move-to-workspace 1
alt + shift + 3 : komorebic move-to-workspace 2
alt + shift + 4 : komorebic move-to-workspace 3
alt + shift + 5 : komorebic move-to-workspace 4
alt + shift + 6 : komorebic move-to-workspace 5
alt + shift + 7 : komorebic move-to-workspace 6
alt + shift + 8 : komorebic move-to-workspace 7

Output of komorebic check

❯ komorebic check
KOMOREBI_CONFIG_HOME detected: C:\Users\proch

Looking for configuration files in C:\Users\proch

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

Found C:\Users\proch.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 @PadRocha on GitHub (Apr 24, 2025). ### Summary When switching between virtual desktops (workspaces) in Windows 11, Komorebi seems to render persistent window outlines from the previous desktop. These ghost outlines do not correspond to any active windows on the new workspace and visually clutter the screen. Additionally, when opening new windows or maximizing them, they are not adapted into Komorebi’s floating/tiled layout. Instead, they open in full screen as is standard behavior in native Windows, bypassing Komorebi’s layout logic. **To Reproduce** Steps to reproduce the behavior: 1. Open multiple windows with Komorebi active. 2. Switch to a new virtual desktop using Windows + Ctrl + → / ←. 3. Observe that outlines from the previous desktop remain visible. 4. Open or maximize a new application — it does not float or tile as expected. **Expected behavior** - Upon switching desktops, all Komorebi outlines should be cleared and updated to reflect only the current workspace. - New windows should respect the Komorebi layout (float/tile modes) instead of maximizing by default. **Screenshots** Attached screenshot shows ghost outlines from a previous desktop: ![Komorebi Desktop Outline Bug](https://github.com/user-attachments/assets/893f6900-c371-484f-ae33-3c1bc7fd68f4) **Additional context** This behavior breaks the illusion of a clean tiling WM on Windows and severely affects usability when working with multiple virtual desktops. ### Version Information - OS: Windows 11 Pro 64-bit - komorebic 0.1.36 tag:v0.1.36 commit_hash:8ef1bcf2 build_time:2025-04-13 03:10:57 +00:00 build_env:rustc 1.86.0 (05f9846f8 2025-03-31),stable-x86_64-pc-windows-msvc - Display setup: [e.g., single monitor 1080p, multiple monitors, etc.] ### Komorebi Configuration ```json { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.36/schema.json", "app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.json", "window_hiding_behaviour": "Cloak", "cross_monitor_move_behaviour": "Insert", "default_workspace_padding": 20, "default_container_padding": 20, "border": true, "border_width": 8, "border_offset": -1, "theme": { "palette": "Base16", "name": "Ashes", "unfocused_border": "Base03", "bar_accent": "Base0D" }, "monitors": [ { "workspaces": [ { "name": "I", "layout": "BSP" }, { "name": "II", "layout": "VerticalStack" }, { "name": "III", "layout": "HorizontalStack" }, { "name": "IV", "layout": "UltrawideVerticalStack" }, { "name": "V", "layout": "Rows" }, { "name": "VI", "layout": "Grid" }, { "name": "VII", "layout": "RightMainVerticalStack" } ] } ] } { "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.36/schema.bar.json", "monitor": 0, "font_family": "JetBrains Mono", "theme": { "palette": "Base16", "name": "Ashes", "accent": "Base0D" }, "left_widgets": [ { "Komorebi": { "workspaces": { "enable": true, "hide_empty_workspaces": false }, "layout": { "enable": true }, "focused_window": { "enable": true, "show_icon": true } } } ], "right_widgets": [ { "Update": { "enable": true } }, { "Media": { "enable": true } }, { "Storage": { "enable": true } }, { "Memory": { "enable": true } }, { "Network": { "enable": true, "show_total_data_transmitted": true, "show_network_activity": true } }, { "Date": { "enable": true, "format": "DayDateMonthYear" } }, { "Time": { "enable": true, "format": "TwentyFourHour" } }, { "Battery": { "enable": true } } ] } ``` ### Hotkey Configuration .shell powershell # Reload whkd configuration # alt + o : taskkill /f /im whkd.exe && start /b whkd # if shell is cmd alt + o : taskkill /f /im whkd.exe; Start-Process whkd -WindowStyle hidden # if shell is pwsh / powershell alt + shift + o : komorebic reload-configuration # App shortcuts - these require shell to be pwsh / powershell # The apps will be focused if open, or launched if not open # alt + f : if ($wshell.AppActivate('Firefox') -eq $False) { start firefox } # alt + b : if ($wshell.AppActivate('Chrome') -eq $False) { start chrome } alt + q : komorebic close alt + m : komorebic minimize # Focus windows alt + h : komorebic focus left alt + j : komorebic focus down alt + k : komorebic focus up alt + l : komorebic focus right alt + shift + oem_4 : komorebic cycle-focus previous # oem_4 is [ alt + shift + oem_6 : komorebic cycle-focus next # oem_6 is ] # Move windows alt + shift + h : komorebic move left alt + shift + j : komorebic move down alt + shift + k : komorebic move up alt + shift + l : komorebic move right alt + shift + return : komorebic promote # Stack windows alt + left : komorebic stack left alt + down : komorebic stack down alt + up : komorebic stack up alt + right : komorebic stack right alt + oem_1 : komorebic unstack # oem_1 is ; alt + oem_4 : komorebic cycle-stack previous # oem_4 is [ alt + oem_6 : komorebic cycle-stack next # oem_6 is ] # Resize alt + oem_plus : komorebic resize-axis horizontal increase alt + oem_minus : komorebic resize-axis horizontal decrease alt + shift + oem_plus : komorebic resize-axis vertical increase alt + shift + oem_minus : komorebic resize-axis vertical decrease # Manipulate windows alt + t : komorebic toggle-float alt + shift + f : komorebic toggle-monocle # Window manager options alt + shift + r : komorebic retile alt + p : komorebic toggle-pause # Layouts alt + x : komorebic flip-layout horizontal alt + y : komorebic flip-layout vertical # Workspaces 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 # Move windows across workspaces alt + shift + 1 : komorebic move-to-workspace 0 alt + shift + 2 : komorebic move-to-workspace 1 alt + shift + 3 : komorebic move-to-workspace 2 alt + shift + 4 : komorebic move-to-workspace 3 alt + shift + 5 : komorebic move-to-workspace 4 alt + shift + 6 : komorebic move-to-workspace 5 alt + shift + 7 : komorebic move-to-workspace 6 alt + shift + 8 : komorebic move-to-workspace 7 ### Output of komorebic check ❯ komorebic check KOMOREBI_CONFIG_HOME detected: C:\Users\proch Looking for configuration files in C:\Users\proch Found komorebi.json; this file can be passed to the start command with the --config flag Found C:\Users\proch\.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:54 +01:00
adam closed this issue 2026-01-05 14:51:55 +01:00
Author
Owner

@LGUG2Z commented on GitHub (Apr 24, 2025):

Virtual desktops are explicitly not supported: https://github.com/LGUG2Z/komorebi/issues/505

@LGUG2Z commented on GitHub (Apr 24, 2025): Virtual desktops are explicitly not supported: https://github.com/LGUG2Z/komorebi/issues/505
Author
Owner

@LGUG2Z commented on GitHub (Apr 24, 2025):

For people who skip the docs, we may be able to show a pop-up if a VD switch is detected and inform them that VDs are not supported, why they're not supported (ie. address your concerns to the Trillion Dollar Company ™ ), and direct them towards using komorebi's native Workspaces feature.

@LGUG2Z commented on GitHub (Apr 24, 2025): For people who skip the docs, we may be able to show a pop-up if a VD switch is detected and inform them that VDs are not supported, why they're not supported (ie. address your concerns to the Trillion Dollar Company ™ ), and direct them towards using komorebi's native Workspaces feature.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/komorebi#604