LGUG2Z / komorebi

A tiling window manager for Windows 🍉
https://lgug2z.github.io/komorebi/
Other
9.63k stars 200 forks source link

[BUG]: Komorebi Bar active workspace stops updating after a while #1038

Closed xidsyed closed 1 week ago

xidsyed commented 1 month ago

Describe the bug

To Reproduce Steps to reproduce the behavior:

  1. Use Komorebi with bar turned on for a while
  2. After some prolonged use the bar's active workspacec widget will randomly stop reflecting the current workspace
  3. Killing and restarting komorebi should fix the problem

Expected behavior Komorebi bar stops responding, and needs to be restarted

Screenshots and Videos

https://github.com/user-attachments/assets/981ac8bf-9bef-4a0e-b02a-78f5e24bc990

Operating System

OS Name:                   Microsoft Windows 11 Home
OS Version:                10.0.22631 N/A Build 22631

komorebic check Output

No KOMOREBI_CONFIG_HOME detected, defaulting to C:\Users\mmsye

Looking for configuration files in C:\Users\mmsye

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

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

Additional context

.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
alt + shift + b         : Stop-Process -name komorebi-bar; Start-Process komorebi-bar -windowstyle hidden 

# 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 + shift + oem_4     : komorebic stack left
alt + ctrl + oem_4      : komorebic stack down
alt + ctrl + oem_6      : komorebic stack up
alt + shift + oem_6     : 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 + shift + d         : komorebic toggle-float
alt + d                 : komorebic toggle-monocle

# Window manager options
alt + shift + r         : komorebic retile
alt + shift + p         : komorebic toggle-pause
alt + shift + m         : komorebic manage

# 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
alt + 9                 : komorebic focus-workspace 8
alt + 0                 : komorebic focus-workspace 9

# 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
alt + shift + 9         : komorebic move-to-workspace 8
alt + shift + 0         : komorebic move-to-workspace 9

# Launch Apps
ctrl + alt + c          : Start-Process chrome.exe
{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.29/schema.bar.json",
  "monitor": {
    "index": 0,
    "work_area_offset": {
      "left": 0,
      "top": 40,
      "right": 0,
      "bottom":40
    }
  },
  "font_size": 11,
  "font_family": "Cascadia Code",
  "theme": {
    "palette": "Base16",
    "name": "Chalk",
    "accent": "Base0F"
  },
  "left_widgets": [
    {
      "Komorebi": {
        "workspaces": {
          "enable": true,
          "hide_empty_workspaces": true
        },
        "layout": {
          "enable": true
        },
        "focused_window": {
          "enable": false,
          "show_icon": false
        }
      }
    }
  ],
  "right_widgets": [
    {
      "Media": {
        "enable": true
      }
    },
    {
      "Storage": {
        "enable": false
      }
    },
    {
      "Memory": {
        "enable": true
      }
    },
    {
      "Network": {
        "enable": false,
        "data_refresh_interval": 1,
        "show_total_data_transmitted": false,
        "show_network_activity": false
      }
    },
    {
      "Date": {
        "enable": true,
        "format": "DayDateMonthYear"
      }
    },
    {
      "Time": {
        "enable": true,
        "format": "TwelveHour"
      }
    },
    {
      "Battery": {
        "enable": true,
        "data_refresh_interval": 60
      }
    }
  ]
}
{
  "$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.28/schema.json",
  "app_specific_configuration_path": "$Env:USERPROFILE/applications.yaml",
  "window_hiding_behaviour": "Cloak",
  "cross_monitor_move_behaviour": "Insert",
  "default_workspace_padding": 1,
  "default_container_padding": 1,
  "transparency": false,
  "border": true,
  "border_width": 0,
  "border_style": "System",
  "border_implementation": "Windows",
  "border_colours": {
    "single": "#a6856e",
    "stack": "#a6856e",
    "monocle": "#fc585e",
    "unfocused": "#000000"
  },
  "stackbar": {
    "label": "Title",
    "height": 18,
    "mode": "OnStack",
    "tabs": {
      "width": 220,
      "focused_text": "#a6856e",
      "unfocused_text": "#383838",
      "background": "#000000",
      "font_size": 28,
      "font_family": "Consolas"
    }
  },
  "monitors": [
    {
      "workspaces": [
        {
          "name": "1 Code",
          "layout": "BSP"
        },
        {
          "name": "2 Notes",
          "layout": "BSP",
          "workspace_rules": [
            {
              "id": "Obsidian.exe",
              "kind": "Exe"
            }
          ]
        },
        {
          "name": "3 Web",
          "layout": "BSP"
        },
        {
          "name": "4 Comm",
          "layout": "BSP"
        },
        {
          "name": "5 AI",
          "layout": "BSP",
          "workspace_rules": [
            {
              "id": "ChatGPT App",
              "kind": "Title",
              "matching_strategy": "StartsWith"
            },
            {
              "id": "Perplexity App",
              "kind": "Title",
              "matching_strategy": "StartsWith"
            },
            {
              "id": "Claude",
              "kind": "Title",
              "matching_strategy": "StartsWith"
            }
          ]
        },
        {
          "name": "6 Media",
          "layout": "BSP"
        },
        {
          "name": "7 Task",
          "layout": "BSP"
        },
        {
          "name": "8 Task",
          "layout": "BSP"
        },
        {
          "name": "9 Task",
          "layout": "BSP"
        },
        {
          "name": "0 Last",
          "layout": "BSP",
          "workspace_rules": [
            {
              "id": "edit_komorebi",
              "kind": "Title",
              "matching_strategy": "Contains"
            }
          ]

        }
      ]
    }
  ],
  "float_rules": [
    {
      "id": "Voice call ‎- WhatsApp Beta",
      "kind": "Title",
      "matching_strategy": "Equals"
    }
  ]
}
LGUG2Z commented 1 month ago

I haven't reproduced this yet but I know others have. Please run komorebi-bar.exe in the foreground and share the logs when the bar updates stop rendering - this will help rule out (or confirm?) thread crashes in komorebi-bar.

edit: I see the logs in the video - I think this rules out thread crashes in komorebi-bar. I see that the komorebic socket messages are also still being received as expected (shortcuts are working).

It would be useful to add some debug logs here to see if the subscription notifications are still being received: https://github.com/LGUG2Z/komorebi/blob/30e09d99464f9e1662912086de048abb8daa4164/komorebi-bar/src/komorebi.rs#L440

Similarly it will be useful to check the komorebi logs to see if subscription notifications are being emitted. You'll have to use the appropriate Rust env var to enable debug logging before launching komorebi for this: https://github.com/LGUG2Z/komorebi/blob/30e09d99464f9e1662912086de048abb8daa4164/komorebi/src/lib.rs#L307

LGUG2Z commented 1 month ago

https://github.com/LGUG2Z/komorebi/blob/30e09d99464f9e1662912086de048abb8daa4164/komorebi-bar/src/main.rs#L373

Probably also want to check if this deserialization fails

LGUG2Z commented 1 month ago

https://github.com/LGUG2Z/komorebi/commit/f968e89d5d7b65d62cc134a87d14d7caf7e39f71

xidsyed commented 1 week ago

I'm using the 7f0b54c nightly build of komorebi and for me this issue has disappeared :)