Skip to content

Vivaldi misses the chromium-based-browser tag: browser.lua regex spells the class "Vivaldi-stable", real class is lowercase #9274

Description

@maTzko13

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

  1. Install Vivaldi (Arch package vivaldi) and open a window.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions