hi, in Firefox v.136 the sound button seems totally reworked and I can’t get a right way to style that button, or maybe my knowledge is insignificant. I tried this way but works only for English language, I guess I should add an entry for each language ans that seems inefficient:

button[aria-label="Mute tab"] .button-background {
        /* my code */
}

In the firefox code they use ::part(button) and that don’t works in userChrome.css:

.tab-audio-button {
  #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) {
    &[soundplaying]::part(button) {
   }
  }
}

There is a way to solve this or it is impossible?

  • @GodieOP
    link
    11 day ago

    Thank you so much, so now all the rules needs to be variables, I don’t understand very well but it seems to work:

    /* Normal tabs - Muted icon */
        
        .tab-audio-button[muted] {
            --my-position: absolute !important;
            --my-top: calc(var(--tab-height-personal)/2 - 14px) !important;
            --my-inset-inline-start: 14px !important;
            --my-background-image: url("../icons/paused.svg") !important;
            --my-background-color: transparent !important;
            --my-background-size: 12px !important;
            --my-box-shadow: none !important;
            --my-fill: var(--lwt-tab-text) !important;
            --my-opacity: 0.8 !important;
            --my-clip-path: xywh(1px 1px 86% 86% round 50%) !important;
            
            &:hover {
                --my-background-image: url("chrome://browser/skin/tabbrowser/tab-audio-blocked-small.svg") !important;
                --my-background-size: 8px !important;
                --my-box-shadow: inset 0 0 0 1px var(--contrast-color), inset 0 0 0 2px var(--lwt-tab-text) !important;
                --my-fill: var(--lwt-tab-text) !important;
                --my-opacity: 1 !important;
            }
        }
        
        .button-background {
            position: var(--my-position) !important;
            top: var(--my-top) !important;
            inset-inline-start: var(--my-inset-inline-start) !important;
            background-image: var(--my-background-image) !important;
            background-color: var(--my-background-color) !important;
            background-size: var(--my-background-size) !important;
            box-shadow: var(--my-box-shadow) !important;
            opacity: var(--my-opacity) !important;
            fill: var(--my-fill) !important;
            clip-path: var(--my-clip-path) !important;
        }