glzr-io / glazewm

GlazeWM is a tiling window manager for Windows inspired by i3wm.
GNU General Public License v3.0
6.43k stars 186 forks source link

[Bug] Workspaces should be moved to bound monitor on config reload #649

Open AmineDjeghri opened 3 months ago

AmineDjeghri commented 3 months ago

Problem 1: Config Reloading Does Not Update Workspace Bindings

When reloading the configuration file, the workspace bindings to monitors do not update as expected. Instead, it is necessary to close and restart GlazeWM to apply the changes. It would be beneficial to have the bindings update automatically upon reloading the configuration.

Problem 2: Workspaces Not Placed on Correct Monitor

Workspaces are not being placed on the specified monitors as defined in the configuration file. Instead, they are placed randomly . (Or maybe my config is wrong ?)

Configuration Example:

workspaces:
  - name: "1"
    display_name: "1.🌐 Browser"
    keep_alive: true
    bind_to_monitor: 0

  - name: "2"
    display_name: "2.💻Pycharm"
    keep_alive: true
    bind_to_monitor: 1

  - name: "3"
    display_name: "3.📂Explorer"
    keep_alive: true
    bind_to_monitor: 0

  - name: "4"
    display_name: "4.📝Editors"
    keep_alive: true
    bind_to_monitor: 1

  - name: "5"
    display_name: "5.💬Social"
    keep_alive: true
    bind_to_monitor: 0

  - name: "6"
    display_name: "6.🎮Gaming"
    keep_alive: true
    bind_to_monitor: 0
DevNvll commented 3 months ago

+1 on the second problem. I also have problem when the workspace is empty and try to focus on it, the workspace is created in the current focused monitor, not in the monitor the workspace is bound to.

Ex: when I try to focus the workspace 2 while in the second monitor, it creates the workspace 2 in the second monitor, despite bind_to_monitor: 0. The expected behavior should be to create in the primary monitor.

My config.

workspaces:
  - name: '1'
    bind_to_monitor: 0
    keep_alive: true
  - name: '2'
    bind_to_monitor: 0
    keep_alive: true
  - name: '3'
    bind_to_monitor: 0
    keep_alive: true
  - name: '4'
    bind_to_monitor: 0
    keep_alive: true
  - name: '5'
    bind_to_monitor: 0
    keep_alive: true
  - name: '6'
    bind_to_monitor: 1
    keep_alive: true
  - name: '7'
    bind_to_monitor: 1
    keep_alive: true
  - name: '8'
    bind_to_monitor: 1
    keep_alive: true
  - name: '9'
    bind_to_monitor: 1
    keep_alive: true
AmineDjeghri commented 3 months ago

Update The release of the version 3.1.1 fixed the monitor binding issue. However, reloading the config still messes up the monitor biding & doesn't really update the binding

I will edit the title of this issue