Skip to content

Mica effect (static application blur)#819

Closed
fractioneater wants to merge 12 commits intoaunetx:masterfrom
fractioneater:mica
Closed

Mica effect (static application blur)#819
fractioneater wants to merge 12 commits intoaunetx:masterfrom
fractioneater:mica

Conversation

@fractioneater
Copy link

@fractioneater fractioneater commented Dec 26, 2025

Fixes #223, #810, #811, and #762, most of which are the same thing.

Static application blur

The applications prefs page now has a static/dynamic picker like panel and dash-to-dock. A pipeline chooser is visible when static blur is selected, and the dynamic blur options are available when dynamic is selected.

Screenshot From 2025-12-26 17-48-01 image

(the transparency is my GTK theme's fault)

Things I've tested

  • Editing the settings will update windows dynamically, even switching static to dynamic and vice versa
  • Window size, visibility, and position changes are handled as expected

Why this is still a draft

  • Wayland fractional scaling applications.js, line 179
    I tried with and without dividing by the scale variable, and it didn't appear to make a difference. Has Wayland changed since it was implemented, or is something weird on my end?
  • Dynamic enable/disable applications.js, line 422
    Is there a less brutal way to redo all blur effects than disable() and enable()-ing the whole thing?
    Resolved—it now uses an already-existing function for pipeline changes.
  • Whatever this is luminosity.glsl, line 32
    I didn't intend to keep this in here. It'll go away and reappear in another PR—as its own effect—soon.
    Resolved. The other PR is Blend modes for Color effect #821.
  • The other luminosity effect
    I'm aware of Add the luminosity effect #773, and this PR shadows the name "luminosity". I originally called my effect "mica" instead of luminosity, but mica is much more than this one effect; it mostly means a static blur.
    Resolved by removing luminosity effect in favor of color effect (from pull Blend modes for Color effect #821).
  • X11 windows layering issue
    Various X11 apps are covered by the mica layer.

@fractioneater
Copy link
Author

fractioneater commented Dec 27, 2025

New discovery: this has some issues with X11 windows (noticed with OrcaSlicer).
Fixed by 2a29633.

@fractioneater
Copy link
Author

The luminosity effect won't be needed once I create a PR adding a blend-mode dropdown to the Color effect.

@a-lupow
Copy link

a-lupow commented Jan 23, 2026

Thank you for your effort, looks really promising. I tested it locally and it seems to not properly handle second monitor, it does not apply the background completely:
image

@fractioneater
Copy link
Author

Thanks for confirming my suspicion, @a-lupow. I'll take a look at it, but my multi-monitor setup is not the most pleasant (I'll just say it involves a projector), so if you feel comfortable working on this as well, go ahead.

@Monsieur-Machine
Copy link

Monsieur-Machine commented Jan 24, 2026

Hello, because I asked for it I tried the static application blur and there seems to be a little graphical problem, it's not a problem for me at all but it might be worse on bigger screens :

Capture.video.du.2026-01-24.15-47-50.mp4

As you can see there is a line on the border of the smaller window, and depending on the position it shows on a side or the other.
It's not coming from other of installed extensions, nor my graphic drivers (at least I think because it's intel integrated graphics).
And it doesn't only happens when there is window below, it was only for a better visibility.

I really like what you added to this already incredible gnome extension ! Thank you

(sorry for my bad english)

EDIT : I'm on X11

@fractioneater
Copy link
Author

EDIT : I'm on X11

That explains why I haven't seen it. It looks like Debian 14 no longer supports X11, so I'll do whatever is necessary (maybe use a VM) to test and fix it.

@Monsieur-Machine
Copy link

Okay nice ! But if you want I can test for you, I have a lot of time

@fractioneater
Copy link
Author

Okay nice ! But if you want I can test for you, I have a lot of time

Thanks! I'd appreciate that. Can you confirm that the line does not happen with dynamic blur?

@Monsieur-Machine
Copy link

Yeah, it only happens with static blur

@fractioneater
Copy link
Author

fractioneater commented Jan 24, 2026

I'd recommend looking in updateSize(), computeScale() and things related to that, then, in src/components/applications.js. Thanks again for the help.

@Monsieur-Machine
Copy link

You're welcome ! Good luck

@Monsieur-Machine
Copy link

And don't mind to ask me if you want to test something on X11

@fractioneater
Copy link
Author

@Monsieur-Machine What GTK theme are you using, and how do your windows not have shadows?

@Monsieur-Machine
Copy link

I'm using the default gtk theme (adwaita) but it's the extension "Open Bar" that customize this.

@Monsieur-Machine
Copy link

Oh ! Maybe it's because Open Bar removes the borders, if I have the borders on, it doesn't appears.....

@Monsieur-Machine
Copy link

So if a theme removes borders, this pixel line shows up

@fractioneater
Copy link
Author

I've been playing around with Open Bar (in Wayland, though), and I can't get the line to show up. Sorry, I don't think there's much I can do to help with this, because I have no idea what the cause is—it could be Open Bar, BmS mica effect, or even BmS corner effect.

If you want this fixed, you'll probably have to play around with it yourself. You could also disable GTK style overrides in Open Bar and use a transparent GTK theme. I use Fluent by Vinceliuice, modified, along with heavily modified Chromaflow to set the accent color based on wallpaper for both GTK and shell themes.

@Monsieur-Machine
Copy link

Monsieur-Machine commented Jan 24, 2026

I understand that this is a problem that can be fixed by the user. Thanks anyway !

@fractioneater
Copy link
Author

An update to prove I am actually working on the multiple monitor thing:

The MetaBackgroundActor managed by the BackgroundManager for each window now updates accordingly when dragging between monitors. There's no noticeable difference, but I think this is a step closer to a solution.

And also, I've managed to make windows blurred on my projector screen, resulting in them being un-blurred on my laptop.

@fractioneater
Copy link
Author

@a-lupow Try it now :)

@fractioneater fractioneater marked this pull request as ready for review February 1, 2026 21:23
@a-lupow
Copy link

a-lupow commented Feb 1, 2026

Wow, nice and quick fix, thank you. I will let you know tomorrow how it goes

@a-lupow
Copy link

a-lupow commented Feb 2, 2026

Just tested it out, works great when dragging the windows, yet there are some quirks that make it incomplete:

  • There is a weird positioning glitch when starting an app on the second monitor (the primary functions just fine):
image
  • There is an "edge case" (pun intended), where if you drag the blurred window halfway to another screen the blur only applies on the screen on which the window dominates (if that makes sense):
image
  • The blur does not apply to windows that are switching monitors with hotkeys

Otherwise looks much better. I will also try to take a closer look to solving these issues this week, not sure now long it will take me though, as I'm not that familiar with GJS.

@fractioneater
Copy link
Author

There is a weird positioning glitch when starting an app on the second monitor

Interesting, I haven't observed that when I've opened windows on the other monitor.

The blur does not apply to windows that are switching monitors with hotkeys

I was actually aware of this one; as far as I can tell, there's no signal for monitor updated, and currently it switches the blur actor's monitor index on position or size changed.

And the third issue, blur on two monitors at once, is a major refactor (there needs to be a blur actor and bg manager for each monitor, and that means handling creation, destruction, and signals for both windows and monitors). I've got it "working," meaning there's probably a bug somewhere and I haven't tested enough to find it.

@fractioneater
Copy link
Author

This is the "working" version if you have more time than I do and want to test it. Just replace components/applications.js with it. It's not good code, and there's one known bug: the corner effect will show up at the edges of monitors. The other option is to disable clipping at the edges, which means the pixels off screen will still be blurred.

@a-lupow
Copy link

a-lupow commented Feb 6, 2026

Great work, thank you. I've spent some time tweaking it to solve at least some of the issues I've faced, and it seems like the main issue in my setup is Wayland framebuffer scaling. You see, I have monitors with different scaling settings, one is 150%, another 100%. That is allegedly causing Wayland to scale window's content automatically, and which is caused the first and last issue. I was able to solve the issue with swapping monitors, but unfortunately minimizing an maximizing still results in glitched blur position (see screenshot)
image

Here is the tweaked version.

@fractioneater
Copy link
Author

The scaling thing makes sense. That may have been why I didn't notice the problems you did. I still don't understand the last one, about why it's trying to position it incorrectly, though, and I've never seen it happen.

Sorry, but with the limited time I have and inconvenience of it, I'm not going to be testing two monitors anymore. After all, I already have static blur working perfectly for me. If you figure out the random inconsistencies that are causing your issues, I will gladly put your code in this PR, and hide it behind some settings so people like me, who only use one monitor, don't have the extra monitor intersection code and other computations degrading performance.

@Humorist2601
Copy link

Hello, slight issue I encountered with this pull req.

I use Mosaic WM and whenever I move the window, the window starts bouncing all around like it is resisting the move. This doesn't occur with dynamic blur

@Humorist2601
Copy link

I have attached video of the issue happening

Screencast.From.2026-02-14.16-58-36.mp4

@fractioneater
Copy link
Author

fractioneater commented Feb 14, 2026

Sorry all, I do not have the time to continue to test and maintain this PR. Chances are, even if I left it open, it wouldn't be merged; the creator is not terribly active on this project.

If something breaks this for a basic, standard system, I will push code to fix it. This is because I wrote this for myself. If you're encountering issues that I am not, like those using Mosaic WM, fractional scaling, or multiple monitors, you will probably have to fix them yourself. If you do, feel free to send them in a comment here for others.

Apologies again.

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 this pull request may close these issues.

Feature Request: Mica Material for Applications

4 participants