Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hyprland/workspaces: window rewrite issues #2557

Closed
khaneliman opened this issue Oct 8, 2023 · 39 comments · Fixed by #2578
Closed

Hyprland/workspaces: window rewrite issues #2557

khaneliman opened this issue Oct 8, 2023 · 39 comments · Fixed by #2578

Comments

@khaneliman
Copy link
Contributor

khaneliman commented Oct 8, 2023

Thought #2529 was a cool feature introduced so tried setting it up like this khaneliman/khanelinix@9ab7e19 but ran into issues with window-rewrite not taking effect on apps launched from hyprland startup and secondary bar not getting updated.

Another thing that might be nice is implementing a way to declare window-rewrite rule default map or a way to look up icons that makes it more automated to setup without having to declare every icon in your personal config and using the personal config as an override.

@Syndelis
Copy link
Contributor

Syndelis commented Oct 11, 2023

Hi there! Your setup example links to a 404 page. Could you update it with a link/code block? (edit: nevermind, it was just a matter of removing the trailing v). A video would be nice too, preferably if you could run this command at the end in your terminal and post the contents here:

hyprctl clients -j

Glad you liked the feature and sorry for taking long to respond here!

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 12, 2023

I reenabled the feature real quick and this is what I see when I log into my desktop. If I restart waybar I see all the icons like I have mapped. Well, space 1 is empty but it updates the icons once i open terminal to run my command. Another noted behavior is that I dragged my terminal to my other monitor and the window-rewrite disappears for it completely.

image

hyprctl clients -j
[{
    "address": "0x36770d0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x367c160",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x3686740",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x37254c0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x36159a0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x3616e70",
    "mapped": true,
    "hidden": false,
    "at": [4096, 1166],
    "size": [1000, 1330],
    "workspace": {
        "id": 8,
        "name": "8"
    },
    "floating": true,
    "monitor": 0,
    "class": "virt-manager",
    "title": "Virtual Machine Manager",
    "initialClass": "virt-manager",
    "initialTitle": "Virtual Machine Manager",
    "pid": 4180,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x377b5e0",
    "mapped": true,
    "hidden": false,
    "at": [22, 1165],
    "size": [5076, 1333],
    "workspace": {
        "id": 6,
        "name": "6"
    },
    "floating": false,
    "monitor": 0,
    "class": "thunderbird",
    "title": "Inbox - Unified Folders - Mozilla Thunderbird",
    "initialClass": "thunderbird",
    "initialTitle": "Mozilla Thunderbird",
    "pid": 3954,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x3780aa0",
    "mapped": true,
    "hidden": false,
    "at": [2567, 1165],
    "size": [2531, 1333],
    "workspace": {
        "id": 2,
        "name": "2"
    },
    "floating": false,
    "monitor": 0,
    "class": "firefox",
    "title": "Hyprland/workspaces: window rewrite issues · Issue #2557 · Alexays/Waybar — Mozilla Firefox",
    "initialClass": "firefox",
    "initialTitle": "Mozilla Firefox",
    "pid": 3947,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x379f240",
    "mapped": true,
    "hidden": false,
    "at": [529, 1298],
    "size": [4060, 1066],
    "workspace": {
        "id": -99,
        "name": "special"
    },
    "floating": false,
    "monitor": 0,
    "class": "firefox",
    "title": "41 hidden tabs - Workona — Mozilla Firefox",
    "initialClass": "firefox",
    "initialTitle": "Mozilla Firefox",
    "pid": 3947,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x37abac0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x37aedc0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x37b3ca0",
    "mapped": true,
    "hidden": false,
    "at": [22, 1165],
    "size": [5076, 1333],
    "workspace": {
        "id": 5,
        "name": "5"
    },
    "floating": false,
    "monitor": 0,
    "class": "discord",
    "title": "Friends - Discord",
    "initialClass": "discord",
    "initialTitle": " - Discord",
    "pid": 3951,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x37a3360",
    "mapped": true,
    "hidden": false,
    "at": [1442, 85],
    "size": [1876, 973],
    "workspace": {
        "id": 1,
        "name": "1"
    },
    "floating": false,
    "monitor": 1,
    "class": "firefox",
    "title": "(6) HORROR DEMOS DAY - Sea of Thieves at 9pm - Twitch — Mozilla Firefox",
    "initialClass": "firefox",
    "initialTitle": "Mozilla Firefox",
    "pid": 3947,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x53e1560",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x53ec130",
    "mapped": true,
    "hidden": false,
    "at": [22, 1165],
    "size": [2531, 1333],
    "workspace": {
        "id": 2,
        "name": "2"
    },
    "floating": false,
    "monitor": 0,
    "class": "kitty",
    "title": "zsh",
    "initialClass": "kitty",
    "initialTitle": "zsh",
    "pid": 6354,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x53f0b80",
    "mapped": true,
    "hidden": false,
    "at": [22, 1165],
    "size": [5076, 1333],
    "workspace": {
        "id": 4,
        "name": "4"
    },
    "floating": false,
    "monitor": 0,
    "class": "steam",
    "title": "Steam",
    "initialClass": "steam",
    "initialTitle": "Steam",
    "pid": 5362,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x53f2050",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x53f3520",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x540d600",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x540ead0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x540ffa0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x5411470",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x5412940",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x5413e10",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x54152e0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x54167b0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x5417c80",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x5419150",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x541a620",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
}]

@Syndelis
Copy link
Contributor

Thanks for the reply! I noticed the firefox and kitty from Workspace 2 are being displayed; were they launched differently from the other apps? For example, did you launch them manually while other apps were launched by a startup script? If so, is every new window created manually by you being displayed correctly in the bar?

Asking this because it's quite odd that it works fine after restarting the bar. Maybe the apps were initialized before Hyprland could report that new windows were open via the socket, or maybe they were launched with different classes than what's appearing in the command output.

One thing that surely doesn't help is that Waybar currently never reevaluates open apps. That's changing with #2563, so maybe that will help with this problem even if it's not a direct fix.

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 12, 2023

Yeah, workspace 2 displayed icons after I launched kitty to run hyprctl clients -j. All the others were launched via the startup of Hyprland. What you mention about not reevaluating open apps makes the most sense. I can move apps around and nothing changes with window-rewrite. But, if i close them and reopen them they show correctly (or restart waybar).

@Syndelis
Copy link
Contributor

Yeah, workspace 2 displayed icons after I launched kitty to run hyprctl clients -j. All the others were launched via the startup of Hyprland. What you mention about not reevaluating open apps makes the most sense. I can move apps around and nothing changes with window-rewrite. But, if i close them and reopen them they show correctly (or restart waybar).

Does waybar start before or after the apps in this file? In either case, could you invert the order and see if it changes anything?

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 12, 2023

Waybar is running as a systemd service. The others are just exec-once commands in my config.

@Syndelis
Copy link
Contributor

Waybar is running as a systemd service. The others are just exec-once commands in my config.

Could you attempt to initialize it in exec-once as well? Either before or after the applications were launched

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 13, 2023

I also noticed that moving a window from one monitor to another doesn't update the window-rewrite icons. So if i restart waybar to show all the icons, then move the browser from my one monitor to the other. The icon for that window just disappears from waybar until I restart waybar again. It looks like moving between workspaces on the same monitor works fine.

@Syndelis
Copy link
Contributor

I also noticed that moving a window from one monitor to another doesn't update the window-rewrite icons. So if i restart waybar to show all the icons, then move the browser from my one monitor to the other. The icon for that window just disappears from waybar until I restart waybar again. It looks like moving between workspaces on the same monitor works fine.

That's odd; it works perfectly fine for me when sending it accross monitors and workspaces. Here's a video:

waybar_proof.mp4

@khaneliman
Copy link
Contributor Author

Is that one bar on multiple monitors? I have a bar for each monitor.

@Syndelis
Copy link
Contributor

Syndelis commented Oct 14, 2023

Is that one bar on multiple monitors? I have a bar for each monitor.

I have one bar on each monitor as well, and they show the same workspaceas and windows in both displays

@khaneliman
Copy link
Contributor Author

Alright, if you're not able to replicate the issue i'll have to dedicate some time to debugging it if i want to use the feature again.

@Syndelis
Copy link
Contributor

I managed to see it happening today. Tracked it and found what was wrong with it. @khaneliman could you try with #2578 and see if it fixes it for you?

@khaneliman
Copy link
Contributor Author

I managed to see it happening today. Tracked it and found what was wrong with it. @khaneliman could you try with #2578 and see if it fixes it for you?

Cool, I’ll try when I get home!

@khaneliman
Copy link
Contributor Author

Doesn't appear to resolve the issue, for me. :S

@Syndelis
Copy link
Contributor

Syndelis commented Oct 17, 2023

Doesn't appear to resolve the issue, for me. :S

Does it at least fix the problem of sending windows to other monitors? Like you described:

I also noticed that moving a window from one monitor to another doesn't update the window-rewrite icons. So if i restart waybar to show all the icons, then move the browser from my one monitor to the other. The icon for that window just disappears from waybar until I restart waybar again. It looks like moving between workspaces on the same monitor works fine.

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 17, 2023

Doesn't appear to resolve the issue, for me. :S

Does it at least fix the problem of sending windows to other monitors? Like you described:

I also noticed that moving a window from one monitor to another doesn't update the window-rewrite icons. So if i restart waybar to show all the icons, then move the browser from my one monitor to the other. The icon for that window just disappears from waybar until I restart waybar again. It looks like moving between workspaces on the same monitor works fine.

Sorry, I wasn't clear. Yeah, that's the issue I tested.

2023-10-17.08-10-25.mp4

overlay to use this PR

_: (_final: prev: {
  waybar = prev.waybar.overrideAttrs (old: {
    version = "2578";
    src = prev.fetchFromGitHub {
      owner = "Alexays";
      repo = "waybar";
      rev = "pull/2578/head";
      hash = "sha256-BhvPHxoclqR0I7v95AoI7D0I6WX5oKUZ1UdBj5LfOEE=";
    };
  });
})

@Syndelis
Copy link
Contributor

That's pretty odd. Could you attempt something? Clone the branch from #2578 and edit this line: https://github.com/Alexays/Waybar/pull/2578/files#diff-57865649be0543861f45b61a80674fabb9efded10e599ad29a40f226b1d66e8fR208. Change the number 2 to a very high one, 1000, for example, and see if the issue still occurs.

@Syndelis
Copy link
Contributor

Also sidenote but I love the looks of your system. Firefox looks especially nice, how did you mange to get it looking like that?

@khaneliman
Copy link
Contributor Author

That's pretty odd. Could you attempt something? Clone the branch from #2578 and edit this line: https://github.com/Alexays/Waybar/pull/2578/files#diff-57865649be0543861f45b61a80674fabb9efded10e599ad29a40f226b1d66e8fR208. Change the number 2 to a very high one, 1000, for example, and see if the issue still occurs.

Sure, i'll create a patch file for my overlay a little later when I get a break from work.

Also sidenote but I love the looks of your system. Firefox looks especially nice, how did you mange to get it looking like that?

Thanks, I have an extension for tab management and a theme for adjusting size and color of elements. https://github.com/khaneliman/khanelinix/blob/main/modules/nixos/apps/firefox/default.nix#L143
https://github.com/khaneliman/khanelinix/blob/main/modules/nixos/apps/firefox/chrome/userChrome.css

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 17, 2023

That's pretty odd. Could you attempt something? Clone the branch from #2578 and edit this line: https://github.com/Alexays/Waybar/pull/2578/files#diff-57865649be0543861f45b61a80674fabb9efded10e599ad29a40f226b1d66e8fR208. Change the number 2 to a very high one, 1000, for example, and see if the issue still occurs.

Nah, looks like same issue. This is what I see for IPC log events when dragging window between monitors. The only thing I see is that I'm not creating a workspace, just moving between existing workspaces (persistent). Not sure if that's relevant or helpful, i haven't dove into the code, yet to troubleshoot.

EDIT: or does it have anything to do with the empty activewindow events in between?

image

@Syndelis
Copy link
Contributor

Oh, it might actually have to do with the persistent workspaces like you mentioned! I'll experiment with it later and release a fix in the same PR if so. Btw, could you post the contents of hyprctl workspaces -j and hyprctl clients -j (as well as another screenshot of the socket events) when you reproduce the issue again?

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 17, 2023

Here's with just kitty open and dragging it from main to secondary and back

IPC events
[2023-10-17 11:52:02.817] [debug] hyprland IPC received changefloatingmode>>23ef4f0,1
[2023-10-17 11:52:02.821] [debug] hyprland IPC received activewindow>>kitty,zsh
[2023-10-17 11:52:02.824] [debug] hyprland IPC received activewindowv2>>23ef4f0
[2023-10-17 11:52:03.180] [debug] hyprland IPC received movewindow>>23ef4f0,1
[2023-10-17 11:52:03.185] [debug] hyprland IPC received focusedmon>>DP-3,1
[2023-10-17 11:52:03.611] [debug] hyprland IPC received activewindow>>,
[2023-10-17 11:52:03.645] [debug] hyprland IPC received activewindowv2>>,
[2023-10-17 11:52:03.646] [debug] hyprland IPC received changefloatingmode>>23ef4f0,0
[2023-10-17 11:52:03.649] [debug] hyprland IPC received activewindow>>kitty,zsh
[2023-10-17 11:52:03.652] [debug] hyprland IPC received activewindowv2>>23ef4f0
[2023-10-17 11:52:04.581] [debug] hyprland IPC received changefloatingmode>>23ef4f0,1
[2023-10-17 11:52:04.584] [debug] hyprland IPC received activewindow>>kitty,zsh
[2023-10-17 11:52:04.587] [debug] hyprland IPC received activewindowv2>>23ef4f0
[2023-10-17 11:52:04.887] [debug] hyprland IPC received focusedmon>>DP-1,2
[2023-10-17 11:52:04.888] [debug] hyprland IPC received movewindow>>23ef4f0,2
[2023-10-17 11:52:05.423] [debug] hyprland IPC received activewindow>>,
[2023-10-17 11:52:05.427] [debug] hyprland IPC received activewindowv2>>,
[2023-10-17 11:52:05.428] [debug] hyprland IPC received changefloatingmode>>23ef4f0,0
[2023-10-17 11:52:05.431] [debug] hyprland IPC received activewindow>>kitty,zsh
[2023-10-17 11:52:05.434] [debug] hyprland IPC received activewindowv2>>23ef4f0
clients
[{
    "address": "0x2c1a210",
    "mapped": true,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -99,
        "name": "special"
    },
    "floating": false,
    "monitor": 0,
    "class": "scratchpad",
    "title": "zsh",
    "initialClass": "scratchpad",
    "initialTitle": "zsh",
    "pid": 4133,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2d85760",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2d7de30",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2d7f300",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2c66410",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2c249a0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2dbe190",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2dbf660",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2dc6b20",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x49f0f40",
    "mapped": false,
    "hidden": false,
    "at": [2306, 1770],
    "size": [507, 132],
    "workspace": {
        "id": 4,
        "name": "Invalid workspace 4"
    },
    "floating": false,
    "monitor": 0,
    "class": "",
    "title": "",
    "initialClass": "steam",
    "initialTitle": "Steam",
    "pid": 7975,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x49f2410",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x49f38e0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x243a6f0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2356ae0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x234f310",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x231fc60",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x23252a0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x23547b0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x242b6c0",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2366050",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2330880",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2c27170",
    "mapped": false,
    "hidden": false,
    "at": [0, 0],
    "size": [0, 0],
    "workspace": {
        "id": -1,
        "name": ""
    },
    "floating": false,
    "monitor": -1,
    "class": "",
    "title": "",
    "initialClass": "",
    "initialTitle": "",
    "pid": 0,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x23518f0",
    "mapped": false,
    "hidden": false,
    "at": [261, 1242],
    "size": [132, 165],
    "workspace": {
        "id": 4,
        "name": "Invalid workspace 4"
    },
    "floating": true,
    "monitor": 0,
    "class": "",
    "title": "",
    "initialClass": "steam",
    "initialTitle": "",
    "pid": 7975,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x2306280",
    "mapped": false,
    "hidden": false,
    "at": [167, 1242],
    "size": [102, 100],
    "workspace": {
        "id": 4,
        "name": "Invalid workspace 4"
    },
    "floating": true,
    "monitor": 0,
    "class": "",
    "title": "",
    "initialClass": "steam",
    "initialTitle": "",
    "pid": 7975,
    "xwayland": true,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
},{
    "address": "0x23ef4f0",
    "mapped": true,
    "hidden": false,
    "at": [22, 1176],
    "size": [5076, 1322],
    "workspace": {
        "id": 2,
        "name": "2"
    },
    "floating": false,
    "monitor": 0,
    "class": "kitty",
    "title": "zsh",
    "initialClass": "kitty",
    "initialTitle": "zsh",
    "pid": 18482,
    "xwayland": false,
    "pinned": false,
    "fullscreen": false,
    "fullscreenMode": 0,
    "fakeFullscreen": false,
    "grouped": [],
    "swallowing": "0x0"
}]
workspaces
[{
    "id": 2,
    "name": "2",
    "monitor": "DP-1",
    "windows": 1,
    "hasfullscreen": false,
    "lastwindow": "0x23ef4f0",
    "lastwindowtitle": "zsh"
},{
    "id": 1,
    "name": "1",
    "monitor": "DP-3",
    "windows": 0,
    "hasfullscreen": false,
    "lastwindow": "0x0",
    "lastwindowtitle": ""
},{
    "id": -99,
    "name": "special",
    "monitor": "DP-1",
    "windows": 1,
    "hasfullscreen": false,
    "lastwindow": "0x0",
    "lastwindowtitle": ""
}]

@Syndelis
Copy link
Contributor

Syndelis commented Oct 18, 2023

Hi there @khaneliman! Coming back to this a little late but I think I finally managed to find and fix it. Basically persistent workspaces aren't very persistent, and Hyprland actually destroys them when they're empty. On our end, @zjeffer made it so that persistent workspaces are recreated when asked to be destroyed.

I couldn't find any reason for them to be recreated, so I instead made it so they're never destroyed in the first place. @zjeffer if you could clarify the reasoning behind that I'd be glad to work out a different solution!

@khaneliman could you please try the branch again with the newest commits?

@zjeffer
Copy link
Contributor

zjeffer commented Oct 18, 2023

if you could clarify the reasoning behind that I'd be glad to work out a different solution!

I think the reason was that back when I implemented it, that was the easiest way to program it ;) I don't remember if there was another reason.

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 19, 2023

Hi there @khaneliman! Coming back to this a little late but I think I finally managed to find and fix it. Basically persistent workspaces aren't very persistent, and Hyprland actually destroys them when they're empty. On our wend, @zjeffer made it so that persistent workspaces are recreated when asked to be destroyed.

I couldn't find any reason for them to be recreated, so I instead made it so they're never destroyed in the first place. @zjeffer if you could clarify the reasoning behind that I'd be glad to work out a different solution!

@khaneliman could you please try the branch again with the newest commits?

Interesting... so now it will ONLY render the icon when I drag it to another workspace and back to the one it was originally created on. A restart of waybar now no longer fixes the missing icons for programs started before the launch of waybar and they just dont render at all.

situations that work in latest commit:

  1. Launch program (first of its kind ONLY) on workspace after waybar running
  2. Launch program and move to another workspace and back (only shows icon the second time it hits the workspace)
  3. Launch program and move focus to a different workspace then the one opened without focus will render icon

Situations that dont

  1. Launching a program that already has another instance running
  2. Moving a window to another workspace if it was launched before waybar

Even all of these are hard to track because it doesn't feel consistent with all programs. For example, 1password gui works fine on first open but many others require being moved/unfocused before rendering.

@Syndelis
Copy link
Contributor

Hi there @khaneliman! Coming back to this a little late but I think I finally managed to find and fix it. Basically persistent workspaces aren't very persistent, and Hyprland actually destroys them when they're empty. On our wend, @zjeffer made it so that persistent workspaces are recreated when asked to be destroyed.
I couldn't find any reason for them to be recreated, so I instead made it so they're never destroyed in the first place. @zjeffer if you could clarify the reasoning behind that I'd be glad to work out a different solution!
@khaneliman could you please try the branch again with the newest commits?

Interesting... so now it will ONLY render the icon when I drag it to another workspace and back to the one it was originally created on. A restart of waybar now no longer fixes the missing icons for programs started before the launch of waybar and they just dont render at all.

situations that work in latest commit:

1. Launch program (first of its kind ONLY) on workspace after waybar running

2. Launch program and move to another workspace and back (only shows icon the second time it hits the workspace)

3. Launch program and move focus to a different workspace then the one opened without focus will render icon

Situations that dont

1. Launching a program that already has another instance running

2. Moving a window to another workspace if it was launched before waybar

Even all of these are hard to track because it doesn't feel consistent with all programs. For example, 1password gui works fine on first open but many others require being moved/unfocused before rendering.

Does it mean it's now worse than it was before?

I'll make a patch with a bunch of logs for you to run against and see if we can track the error from that

@khaneliman
Copy link
Contributor Author

Hi there @khaneliman! Coming back to this a little late but I think I finally managed to find and fix it. Basically persistent workspaces aren't very persistent, and Hyprland actually destroys them when they're empty. On our wend, @zjeffer made it so that persistent workspaces are recreated when asked to be destroyed.
I couldn't find any reason for them to be recreated, so I instead made it so they're never destroyed in the first place. @zjeffer if you could clarify the reasoning behind that I'd be glad to work out a different solution!
@khaneliman could you please try the branch again with the newest commits?

Interesting... so now it will ONLY render the icon when I drag it to another workspace and back to the one it was originally created on. A restart of waybar now no longer fixes the missing icons for programs started before the launch of waybar and they just dont render at all.
situations that work in latest commit:

1. Launch program (first of its kind ONLY) on workspace after waybar running

2. Launch program and move to another workspace and back (only shows icon the second time it hits the workspace)

3. Launch program and move focus to a different workspace then the one opened without focus will render icon

Situations that dont

1. Launching a program that already has another instance running

2. Moving a window to another workspace if it was launched before waybar

Even all of these are hard to track because it doesn't feel consistent with all programs. For example, 1password gui works fine on first open but many others require being moved/unfocused before rendering.

Does it mean it's now worse than it was before?

I'll make a patch with a bunch of logs for you to run against and see if we can track the error from that

Yeah, for my config it is worse. That’d probably help. I’m sorry I haven’t had the energy to dive in and debug myself throughly.

Syndelis added a commit to Syndelis/Waybar that referenced this issue Oct 19, 2023
@Syndelis
Copy link
Contributor

Syndelis commented Oct 19, 2023

It's absolutely ok! I made the feature, it's only fair I try my best to fix it! I've uploaded a branch called debug/2557. Could you run that and dump the logs here? Running waybar like this: waybar > logs.txt would probably be the easiest way of doing so.

It would be awesome if you could make a single log for each of the issues described, but I understand if you can't because it seems like a lot of work. A video recording the process would help me visualize it as well!

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 19, 2023

It's absolutely ok! I made the feature, it's only fair I try my best to fix it! I've uploaded a branch called debug/2557. Could you run that and dump the logs here? Running waybar like this: waybar > logs.txt would probably be the easiest way of doing so.

It would be awesome if you could make a single log for each of the issues described, but I understand if you can't because it seems like a lot of work. A video recording the process would help me visualize it as well!

This is just starting waybar and launching windows and moving them back and forth between the two open workspaces I have on each monitor.

Launching and moving windows between workspaces
2023-10-18.20-43-58.mp4

debug.txt

Only initialize waybar with existing windows on screen
2023-10-18.20-55-28.mp4

debug.txt

@Syndelis
Copy link
Contributor

Thank you very much for that, @khaneliman ! I've pushed a new commit (to the PR's branch) that seems to fix the first problem, could you try it?

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 19, 2023

Thank you very much for that, @khaneliman ! I've pushed a new commit (to the PR's branch) that seems to fix the first problem, could you try it?

Yes, that now fixes the issue of dragging between workspaces and opening apps that have other instances running! Now it's just not registering anything that was opened before waybar starts. (Which worked before in that PR if that helps you think of what might have caused it)

Basically feels like windows are registered after they are opened for the first time and if a window exists already it is ignored even if it moves from workspace to workspace. I think we just need to query existing windows and populate the "cache" on init of waybar.

@Syndelis
Copy link
Contributor

I think we just need to query existing windows and populate the "cache" on init of waybar.

Weirdly enough that's already being done. If I launch another instance of waybar right now I see all the windows open on both. Could you tell me if I tried replicating the issue correctly in this video?

waybar_init_window_populate.mp4

@khaneliman
Copy link
Contributor Author

I think we just need to query existing windows and populate the "cache" on init of waybar.

Weirdly enough that's already being done. If I launch another instance of waybar right now I see all the windows open on both. Could you tell me if I tried replicating the issue correctly in this video?
waybar_init_window_populate.mp4

Interesting... not sure why mine behaves so differently, then.

2023-10-19.11-54-49.mp4

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 19, 2023

Looking at the debug logs I never see this called.

spdlog::info("[#2557] Workspace::initialize_window_map > adding window '{}' to workspace '{}'", client["address"].asString(), name_);

Which makes it seem like the clients_data is empty on initialize_window_maps? But, I can go and add a log statement and see the json output. I dont see initialize_window_maps ever called, is that method unused?

@Syndelis Race condition? If I add the get reply to that method it works for initialization, but still dont see the window-rewrite when dragging one of them to another workspace.
image

@Syndelis
Copy link
Contributor

Actually, it seems persistent workspaces were being created before regular workspaces, and that function did not take into account the clients json. I've changed their order, could you try again?

@khaneliman
Copy link
Contributor Author

khaneliman commented Oct 20, 2023

Actually, it seems persistent workspaces were being created before regular workspaces, and that function did not take into account the clients json. I've changed their order, could you try again?

That works for the initial loading position! So now I'm down to 1 issue, the other 3 are resolved. Feels like big progress, thank you!

Works on that PR:

  • Initial window-rewrite takes effect
  • Windows moving between workspaces on the same monitor update properly.
  • New windows moving between any workspace update properly.

Not working:

  • Existing windows dont get updated when moving to a new monitor, but show up again when returning to original workspace on original monitor. I'll create a log for that since it's a weird behavior. But, my use case is dragging my startup launched firefox video window to my secondary monitor and it doesn't render the window rewrite icon.
last scenario
2023-10-19.19-45-13.mp4

debug.txt

@Syndelis
Copy link
Contributor

@khaneliman Perhaps #2605 fixes the last problem you mentioned?

@khaneliman
Copy link
Contributor Author

@khaneliman Perhaps #2605 fixes the last problem you mentioned?

Doesn't seem to

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants