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.

  • SavvyBeardedFish@reddthat.com
    ·
    edit-2
    4 months ago

    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

    • gramgan@lemmy.ml
      hexagon
      ·
      4 months ago

      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.