allusive-dev / compfy

A Compositor for X11 based on Picom. No Longer Maintained in favor of Picom v12!
203 stars 23 forks source link

Rules for corners and shadow for Polybar break the compositor. #36

Closed Hempward closed 9 months ago

Hempward commented 9 months ago

What is the issue - Any edits involving Polybar (corners-rule, rounded-corners-exclude, and shadow-exclude) kill the compositor. The area Polybar occupies has rounded corners and a shadow. Attempting to exclude these causes the crashing.

What did you expect - The changes to be implemented.

Relevant Images or Videos: ArcoLinux_2023-11-14_15-10-48

Your configuration - ArcoLinux, kernel 6.6.1-arch1-1

Package Version: - 1.5.0-1 Build Method: - Installed with Paru WM: - i3wm

allusive-dev commented 9 months ago

@Hempward Can you please attach your configuration file. Your may need to rename it from picom.conf to picom.conf.txt to send it.

Hempward commented 9 months ago

I'm using default, however to further experiment, I tried inactive-dim and inactive-opacity, as well as blurring for Nemo. Dim works, but opacity is unchanged, i.e. it's not being implemented, and neither is background-blur by extension. I should add I'm using flashfocus.

Also, adding this in Transparency also breaks the config: "60:class_g = 'Nemo'", however I do notice transparency in Workrave on the active monitor, while on the inactive monitor it displays with neither transparency nor dim values.

picom.conf.txt

allusive-dev commented 9 months ago

@Hempward This will not work because the actual rule is commented out.

# opacity-rule = [
#   "80:class_g = 'Alacritty'",
    "60:class_g = 'Nemo'"
# ];

You need to remove all the comments.

opacity-rule = [
    "60:class_g = 'Nemo'"
];
allusive-dev commented 9 months ago

@Hempward If you have not already please read the documentation.

allusive-dev commented 9 months ago

Are you still there Hempward? I'll just set this to stale for now but I'll be happy to remove it when you return.

Hempward commented 9 months ago

Yes. Inactive opacity is the only feature to look into atm. Other apps are wonkier (Alacritty (rarely), Kate, Polybar, and i3 recently), and tbh, I'm not in any hurry to resolve this. If I figure something out, I'll post it. Thanks.

willothy commented 9 months ago

Experiencing this as well, though not with polybar, and I also am not in too much of a hurry to fix this.

Everything works (rounded corners, transparency, blur, and animations) with only a few exceptions:

allusive-dev commented 9 months ago
* Editing certain settings can result in some issues on hot-reload, but if I restart compfy from a terminal or logout/login it works fine again (i.e. the config is not actually broken):

  * Editing some settings for rounded corners / opacity / blur can cause a crash, or can cause blur and opacity to stop working despite compfy still running.
  * Windows can start moving around and jittering randomly for a few seconds (only happened to me with `shadow`).

Yeah this is pretty common, not something i can really fix at the moment.

* I can also report that `active-opacity` and `inactive-opacity` are doing nothing, but setting opacity for individual wintypes works.

This should not be the case, it does work for other people. Please check the documentation for correct usage to make sure its not user error.

* Hot-reload causes window open animations to run for already-open windows (not sure if this intentional, also unrelated to this issue)

This is normal since Compfy needs to remap the windows after making any changes causing the animations to run again.

willothy commented 9 months ago

Wow thanks for the quick reply!

Yeah this is pretty common, not something i can really fix at the moment.

Understandable, no worries! Happy to contribute if there are any low-hanging issues, I'd definitely like to learn more about compositors.

Is there a setting for disabling hot-reload / a way to manually trigger a reload? (didn't see any in the docs but maybe I didn't look hard enough)

This should not be the case, it does work for other people. Please check the documentation for correct usage to make sure its not user error.

There's a very good chance that it's user error haha, I keep most of my windows opaque though so I'm not particularly bothered by it not working for me anyways. I'll try again just to make sure though.

This is normal since Compfy needs to remap the windows after making any changes causing the animations to run again.

Gotcha, that makes sense. It doesn't bother me except for the one time I had the jittering bug I described, and that seems to be very rare occurrence.

Anyways hope this wasn't too off-topic for this issue, I thought the hot-reloading things seemed related. Thanks for your work, I just switched over from Picom yesterday and really enjoying compfy :)

allusive-dev commented 9 months ago

Wow thanks for the quick reply!

No worries. I understand how annoying it can be when you want/need an answer to something and people just don't respond so I try to respond as fast as I can to everyone.

Is there a setting for disabling hot-reload / a way to manually trigger a reload?

No unfortunately, Compfy just reads the configuration file live, it doesn't cache each change like some other applications.

Gotcha, that makes sense. It doesn't bother me except for the one time I had the jittering bug I described, and that seems to be very rare occurrence.

I've had it happen very rarely too. Not sure exactly what is causing it.

Thanks for your work, I just switched over from Picom yesterday and really enjoying Compfy :)

I'm glad to hear! :D

willothy commented 9 months ago

No worries. I understand how annoying it can be when you want/need an answer to something and people just don't respond so I try to respond as fast as I can to everyone.

I wouldn't worry about it too much, you're building this for free after all - you don't owe us anything! With that being said it is super nice and helpful :)

Is there a setting for disabling hot-reload / a way to manually trigger a reload?

No unfortunately, Compfy just reads the configuration file live, it doesn't cache each change like some other applications.

For sure - any interest in a PR exploring the possibility of adding a config caching feature? Configuration seems like a reasonable way to get comfortable with some of the codebase and that would definitely be a nice feature to have, assuming there isn't an architectural reason that it would be impossible.

allusive-dev commented 9 months ago

For sure - any interest in a PR exploring the possibility of adding a config caching feature? Configuration seems like a reasonable way to get comfortable with some of the codebase and that would definitely be a nice feature to have, assuming there isn't an architectural reason that it would be impossible.

Well from what I know there wouldn't be any issues with that. I'd just think it would be a bit interesting since how would people know if their using the live/latest config or not?

willothy commented 9 months ago

Well from what I know there wouldn't be any issues with that. I'd just think it would be a bit interesting since how would people know if their using the live/latest config or not?

I think the current behavior is a good default, so normally the live config would always be used, but the cached config could be used as a fallback in case of an error during hot-reload. A system notification could be used in that case to alert users that the config was not successfully reloaded. There could also be an option to disable hot-reload entirely, in which case users would know if they're using the latest version because they'll always be either reloading manually or at login.

allusive-dev commented 9 months ago

normally the live config would always be used, but the cached config could be used as a fallback in case of an error during hot-reload. A system notification could be used in that case to alert users that the config was not successfully reloaded. There could also be an option to disable hot-reload entirely, in which case users would know if they're using the latest version because they'll always be either reloading manually or at login.

That sounds like a pretty good addition. I'm pretty busy at the moment and don't have the time to implement something like that but like you said if you would like to make a PR I'd be happy to help out with that.

willothy commented 9 months ago

That sounds like a pretty good addition. I'm pretty busy at the moment and don't have the time to implement something like that but like you said if you would like to make a PR I'd be happy to help out with that.

Awesome, thanks! Definitely would be interested in making a PR. I should have some free time in a few days to get started on that. Since the change is mostly unrelated to this issue I'll open up a draft PR or something when I start, so the change can be discussed on its own (in case the OP of this issue comes back).

allusive-dev commented 9 months ago

All good. For now I'll just close this issue since its not a detrimental issue at the moment.

willothy commented 9 months ago

Found this a couple days ago and forgot to mention here, @allusive-dev enabling animation-clamping entirely fixed the issue of windows jittering around, even when restarting the WM. Maybe worth enabling that by default?