What happened
Vivaldi never receives the chromium-based-browser tag, so it falls through the
browser opacity exemption and gets the generic window opacity instead.
default/hypr/apps/browser.lua:2 spells the class with a capital V:
o.window("((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)", { tag = "+chromium-based-browser" })
The actual window class is lowercase vivaldi-stable. The other alternatives in
the same regex explicitly cover both cases ([cC]hrom, [bB]rave, [mM]icrosoft),
so this looks like an oversight rather than intent.
Consequence: line 4 ({ tag = "chromium-based-browser" } -> -default-opacity,
tile = true, opacity = "1.0 0.985") never applies to Vivaldi. It keeps the
default-opacity tag from default/hypr/windows.lua:6 and ends up at
opacity = "0.985 0.96" instead of "1.0 0.985". The difference is small when
focused but clearly noticeable when the window is not focused, and Vivaldi also
misses the tile = true the other Chromium browsers get.
Expected
Vivaldi behaves like Chrome/Brave/Edge: chromium-based-browser tag applied,
default-opacity removed, opacity = "1.0 0.985", tile = true.
Steps to reproduce
- Install Vivaldi (Arch package
vivaldi) and open a window.
- Inspect the tags Hyprland assigned:
$ hyprctl clients -j | jq -r '.[]|select(.class|test("vivaldi";"i"))|"\(.class) -> \(.tags|join(","))"'
vivaldi-stable -> default-opacity*
Expected chromium-based-browser* in that list; it is absent. For comparison, a
user rule that differs only in the capitalisation of the class does match:
o.window("vivaldi-stable", { tag = "+probe" })
vivaldi-stable -> default-opacity*,probe*
So the case of the class name is the only difference between matching and not.
Suggested fix
One character class, consistent with the neighbouring alternatives:
-o.window("((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)", { tag = "+chromium-based-browser" })
+o.window("((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|[vV]ivaldi-stable|helium)", { tag = "+chromium-based-browser" })
Local workaround for anyone hitting this, in ~/.config/hypr/looknfeel.lua:
o.window("vivaldi-stable", { opacity = "1.0 0.985", tile = true })
System details
|
|
| Omarchy |
4.0.0-1 |
| Hyprland |
0.56.2 (efb5099) |
| Kernel |
7.1.8-arch1-3 |
| CPU |
Intel Core Ultra 7 258V |
| GPU |
Intel Arc Graphics 130V/140V |
| Vivaldi |
8.1.4087.68-1 (Arch vivaldi) |
Note: omarchy debug --no-sudo --print is rejected as an unknown command on
4.0.0-1, so the system details above were collected manually.
What happened
Vivaldi never receives the
chromium-based-browsertag, so it falls through thebrowser opacity exemption and gets the generic window opacity instead.
default/hypr/apps/browser.lua:2spells the class with a capital V:The actual window class is lowercase
vivaldi-stable. The other alternatives inthe same regex explicitly cover both cases (
[cC]hrom,[bB]rave,[mM]icrosoft),so this looks like an oversight rather than intent.
Consequence: line 4 (
{ tag = "chromium-based-browser" }->-default-opacity,tile = true,opacity = "1.0 0.985") never applies to Vivaldi. It keeps thedefault-opacitytag fromdefault/hypr/windows.lua:6and ends up atopacity = "0.985 0.96"instead of"1.0 0.985". The difference is small whenfocused but clearly noticeable when the window is not focused, and Vivaldi also
misses the
tile = truethe other Chromium browsers get.Expected
Vivaldi behaves like Chrome/Brave/Edge:
chromium-based-browsertag applied,default-opacityremoved,opacity = "1.0 0.985",tile = true.Steps to reproduce
vivaldi) and open a window.Expected
chromium-based-browser*in that list; it is absent. For comparison, auser rule that differs only in the capitalisation of the class does match:
So the case of the class name is the only difference between matching and not.
Suggested fix
One character class, consistent with the neighbouring alternatives:
Local workaround for anyone hitting this, in
~/.config/hypr/looknfeel.lua:System details
vivaldi)Note:
omarchy debug --no-sudo --printis rejected as an unknown command on4.0.0-1, so the system details above were collected manually.