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

"Hide pinned in other instances" behavior inconsistent #6927

Open
ksamavati opened this issue Feb 26, 2025 · 6 comments
Open

"Hide pinned in other instances" behavior inconsistent #6927

ksamavati opened this issue Feb 26, 2025 · 6 comments
Labels

Comments

@ksamavati
Copy link

ksamavati commented Feb 26, 2025

Applet version/Build date

2.4.0

Cinnamon version

6.4.7

Distribution

Mint 22.1

Graphics hardware and driver used

NVIDIA GeForce 1070 + nvidia-driver-550

Applet name and maintainer

CassiaWindowList@klangman @klangman

What happened?

I created 3 "Launcher" instances, and 1 grouped window instance which I had intended to contain all windows not included in any of the other 3 instances by enabling the "Hide window buttons of pinned buttons on other CassiaWindowList instances" setting.

Based on the behavior, it seems like this was intended to work, but it's very inconsistent. Sometimes it correctly filters out the apps already present in the other instances and sometimes it doesn't (despite pins not strictly being an option in Launcher instances, it seems to treat all items in the launcher instances as pinned). To verify this wasn't an issue specific to Laucher instances, I've also pinned apps in other normal grouped window instances and it has also failed to remove them from my instance with that hide option enabled.

I've also noticed that sometimes but not always, if a window is pinned in another instance, I can right click the window in the instance I'm trying to hide it in, and pin it there, and it will disappear from the same instance I'm clicking "pin" in, and this will only happen if it's also pinned elsewhere.

I unfortunately can't make odds of it without looking at the code and don't have the time to look at it myself.

Other information

Besides 3 instances being launchers and 1 being a grouped window list, all other settings are identical.

The 3 Launcher instances:
Image

The 1 Grouped Window instance:
Image

@ksamavati ksamavati added the BUG label Feb 26, 2025
@klangman
Copy link
Contributor

You are right about how the "Hide window buttons of pinned buttons on other CassiaWindowList instances" was meant to work. It was meant to allow you to hide window buttons on your window-list CWL instance for all the buttons on the other CWL instances that are configured as a "launcher", but as it's coded now the "other instances" does not have to in "launcher" mode, it can exclude pinned methods on other window-list mode instances too.

In deed the wording of the option name is not ideal. Launcher instances are only showing what is marked in the code a "pinned buttons" so that's the logic behind the name, but from a users perspective I can see how it could be confusing.

I just looked at the code and there is this comment:

// TODO: Marge the list of pinned apps in case there are more then two instances

So this explains the issue here. It's only taking into account the pinned buttons on the last instance of CWL that appears the in the applet array. I didn't know if this was an option that people would be using and I certainly didn't think there would be many (if any) cases where people would have more than one launcher instance. Short sighted on my part.

In any case, the fix doesn't seem too difficult so I will work on that for the next version.

I guess I have two options:

  1. Merge a list of all pinned buttons from all other instances (i.e all buttons from launcher mode instances + pinned buttons from window-list mode instances) and use that list to exclude non-pinned buttons from the current instance's button list.
  2. Merge a list of all buttons from "launcher mode" instances only and use that list to exclude non-pinned buttons from the current instance's button list. In other words, change to code to only consider Launcher mode instances.

If I limit to "launcher mode instances" (option 2) then I can make a better worded option name like:

"Hide window buttons for applications on "Launcher" CassiaWindowList instances"

Since you are the only user of this feature I am aware of, what's your thoughts on the best approach?

Thanks for reporting the issue.

@ksamavati
Copy link
Author

ksamavati commented Feb 27, 2025

Excellent, thank you for the quick follow up on this!

My use case was that I was originally planning to have a single instance with dividers between groups of pinned apps so I could bucket them into "work", "social", etc, making pins a bit easier to locate rather than having them all in one long list, and having a distinct section for unpinned windows. But given that there is currently no feature to add a divider, I achieved the same by making multiple instances and placing spacers between each. I ended up appreciating the flexibility of having the option to move the buckets around independently and to different panels which dividers would not provide, so I ended up preferring this multiple-instances solution over simple dividers.

I guess I have two options:

  1. Merge a list of all pinned buttons from all other instances (i.e all buttons from launcher mode instances + pinned buttons from window-list mode instances) and use that list to exclude non-pinned buttons from the current instance's button list.
  2. Merge a list of all buttons from "launcher mode" instances only and use that list to exclude non-pinned buttons from the current instance's button list. In other words, change to code to only consider Launcher mode instances.

Either would work for my use case; I was originally leaning toward the more flexible option 1, but then I tried to think of a use case where someone would want to have multiple non-launcher instances both containing all unpinned windows but also where at least one would have pins that the other would hide...I'm not sure I really see it, so I'm thinking the more elegant option 2 makes the most sense; just change the feature to hide launcher buttons rather than pins since the latter doesn't ultimately seem that useful.

Really appreciate your work on this by the way, thanks a lot!

@klangman
Copy link
Contributor

I think the typical use case for having more than one non-launcher instances is when you want to have a window-list on a 2nd monitor. You can have both window-lists only show windows that exist on the same monitor as where the window-list exists.

@ksamavati
Copy link
Author

ksamavati commented Feb 28, 2025

Right; I get that is a common use case and that there are valid use cases with multiple grouped window lists, but the "Only show windows on the same monitor" toggle achieves this. With both toggles enabled, my understanding is that it would only show windows open on each monitor plus any pins, minus any pins on the other monitor, even if there is a window open on the monitor it's being hidden from. Doesn't serve much purpose in that use case either that I can think of.

@klangman
Copy link
Contributor

OK.. I have checked in changes in my GitHub as we discussed above (https://github.com/klangman/CassiaWindowList). I have a few other changes that I want to try to do before pushing a new version to cinnamon-spices, but if you wanted to checkout the fix now you can install my dev version from my github link above.

Hopefully the changes achieves what you were hoping for.

@klangman
Copy link
Contributor

Version 2.4.1 has the fix for this issue. It's not on cinnamon-spices so an upgrade should pick up this fix. If this address the problem as expected then I guess we can close this now?

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

No branches or pull requests

2 participants