komorebi icon indicating copy to clipboard operation
komorebi copied to clipboard

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

Open xidsyed opened this issue 1 year ago • 3 comments

Describe the bug

  • After using Komorbei with the Komorebi bar for some time the Komorebi Bar will stop updating the current active workspace.
  • This doesn't seem to have any apparent trigger nor is there any error posted by Komarabi Bar to the console.
  • The only solution that I have found is to stop and start the komarabi bar all over again. I have a hot-key alt+shift+b that i use to acheive this.
  • Currently i have to do this approx 5-6 times a day :(
  • I have recorded a video after launching the bar from the console and waiting for it to freeze.
  • Note that all the other widgets seem to update properly, and clicking on the workspace names on the bar does take you to the current workspace and updates it too! However switching workspaces using the hot keys doesn't seem to reflect in the widget.

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"
    }
  ]
}

xidsyed avatar Oct 09 '24 17:10 xidsyed

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 avatar Oct 09 '24 17:10 LGUG2Z

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

Probably also want to check if this deserialization fails

LGUG2Z avatar Oct 09 '24 20:10 LGUG2Z

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

LGUG2Z avatar Oct 09 '24 22:10 LGUG2Z

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

xidsyed avatar Nov 15 '24 14:11 xidsyed