Fellas, I’m at my wit’s end with this one. I’m trying to set a general rule for window opacity in sway, and then have a few programs excepted from it.
Back on i3
with picom
, I could do this pretty easily by setting activeOpacity
to 0.9, for example, and then specifying additional opacityRules
like this:
"100:class_g = 'mpv'"
"100:class_g = 'Brave-browser'"
Likewise, hyprland
’s window rules made it pretty easy to override the general opacity rules as well.
I can’t seem to get this on sway
, though; if I set it up like this:
[app_id=".*"] opacity 0.85
[app_id="brave_browser"] opacity set 1
[app_id="librewolf"] opacity 1
it simply sets everything to 0.85.
Currently, I have this:
[app_id="^(?!mpv$|brave_browser$).*$"] opacity 0.85
[app_id="brave_browser"] opacity set 1
[app_id="mpv"] opacity 1
but it is still exhibiting the same behavior (except mpv
also seems to totally disregard any opacity rules whatsoever).
Any help is greatly appreciated—I haven’t been able to find anyone else asking or talking about what seems to me like pretty basic functionality.
Running:
swaymsg for_window "[app_id=mpv] opacity 0.5"
Works as expected on my end, are you missing just executing for_window
?
Note, you can also add multiple rules in the same execution, e.g.
for_window {
[app_id=mpv] opacity 0.85
[app_id=LibreWolf] opacity 0.85
}
Also, note that app_id
of LibreWolf is capitalized in that manner.
You can get that information [app_id, shell etc] by running swaymsg -t get_tree
I guess I should have written the post a bit more clearly.
I’ve got the for_window
part, it’s just that after I set the opacity for all windows app_id=.*
, the following lines of the config cannot override that for the specific windows I want different opacities for.