hyprwm / hyprland-plugins

Official plugins for Hyprland
BSD 3-Clause "New" or "Revised" License
567 stars 60 forks source link

Hyprwinwrap behaves differently if a window is tiled #212

Closed nnra6864 closed 1 week ago

nnra6864 commented 3 months ago

Similar issues reported are #167, #197 and #91. To sum it up, when using decoration:blur:ignore_opacity = true, hyprwinwrap isn't rendered behind tiled windows. I am suspecting this to be a hyprland issue rather than hyprwinwrap issue because window being tiled or not causes this. Interesting thing is that if you make the window float and then fullscreen/maximize it with either of these binds(and possibly others): bind = $mainMod, F, fullscreen bind = $mainMod ALT, F, fullscreenstate, 1 hyprwinwrap gets rendered properly, as shown here:

Tiled

tiled

Floating

floating

Maximized

maximized

Fullscreen

fullscreen

Tiled with decoration:blur:ignore_opacity = false

image

I would like to be of more use but I am not familiar with the hyprland codebase so hopefully somebody experienced will be able to fix this.

EDIT

I found a really interesting thing... It seems to behave properly when used on a special workspace o_0 image

firashacker commented 2 months ago

i have this same issue and i need fix

nnra6864 commented 1 week ago

Huge find! This is directly tied to the following blur setting: new_optimizations = true! I genuinely have no clue how I never tried setting it to false before... Disabling it straight up fixes the issue fully! Yeah, performance is supposedly worse but at least it behaves properly :/ Hope this thread is of help to any future users and gives Vaxry an idea of what could be causing the issue.

nnra6864 commented 1 week ago

Ok, I went through the hyprland codebase and I have an assumption as to why these optimizations block the hyprwinwrap rendering. From my understanding, new optimizations are basically avoiding re-rendering of non dirty windows(windows with no changes), which results in hyprwinwrap not being displayed through them since nothing's updated(I could be very wrong about this). It also explains why it's working with floating and special workspace windows, because a window doesn't qualify for these optimizations if it's floating or on a special workspace, as can be seen here. If you are using hyprwinwrap, you are better off just disabling these new optimizations because blur has to be constantly re-rendered anyways. I won't close the issue yet because I am awaiting a response in the hyprland discord server since I don't have enough knowledge to truly mark this as a solution/intended behaviour.

nnra6864 commented 1 week ago

I am closing this issue with the solution being as simple as using decoration:blur:new_optimizations = false(or decoration:blur:ignore_opacity = false if you don't mind the ugly look). From my understanding, disabling the optimizations in this case shouldn't affect the performance in any way since even with those, the blur would have to be redrawn every frame since hyprwinwrap is displaying animated content. Thanks to Vaxry for clearing stuff up. Hope this helps somebody in the future!