aAPT
dDebian
fFFmpeg
jJava
mMercurial: Usage
oOCaml
pPostgreSQL

Home Applications

Firefox

Quirks

FF 141 picking wrong theme (light instead of dark) bug

FF 141 starts with light theme, although its theme is set to system (e.g. Arc-dark).

Solution:

Check d-bus for the current theme:

$ gsettings get org.gnome.desktop.interface color-scheme

If it returns 'default', change it to 'prefer-dark':

$ gsettings set org.gnome.desktop.interface color-scheme "'prefer-dark'"

UI Customization

Fix UI scaling (FF 131+)

about:config

ui.textScaleFactor → 0

Enable user content/chrome (FF 69+)

about:config

toolkit.legacyUserProfileCustomizations.stylesheets → true

Dark home and new tab pages

chrome/userContent.css
@-moz-document url("about:home"), url("about:newtab") {
    .activity-stream {
        background-color: #2a2a2e !important;
    }
    .title {
        color: gray !important;
    }
    .top-site-icon {
        background-color: #2a2a2e !important;
        opacity: 0.5 !important;
    }
    .top-site-outer .tile::before {
        content: none !important;
    }
    .top-site-outer .screenshot.active {
        opacity: 0.5 !important;
    }
}

Fix url bar size on focus (FF 76+)

chrome/userChrome.css
@-moz-document url(chrome://browser/content/browser.xhtml) {
    /* DISABLE EXPANDING START */
    #urlbar[breakout][breakout-extend] {
        top: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2) !important;
        left: 0 !important;
        width: 100% !important;
    }
    
    #urlbar[breakout][breakout-extend] > #urlbar-input-container {
        height: var(--urlbar-height) !important;
        padding-block: 0 !important;
        padding-inline: 0 !important;
    }
    
    #urlbar[breakout][breakout-extend] > #urlbar-background {
        animation-name: none !important;
        box-shadow: 0 1px 4px rgba(0, 0, 0, .05) !important;
    }
    /* DISABLE EXPANDING END */
    
    /* REMOVE URL RESULT PADDING START */
    .urlbarView {
        margin-inline: 0 !important;
        width: 100% !important;
    }

    .urlbarView-row {
        padding-block: 0 !important;
    }
    /* REMOVE URL RESULT PADDING END */
    
    /* MOVE URL RESULT TYPE ICON TO LEFT START */
    .urlbarView-type-icon {
        min-width: 16px !important;
        height: 16px !important;
        margin-bottom: 0 !important;
        margin-inline-start: 0 !important;
    }
    
    .urlbarView-favicon {
        margin-inline-start: 20px !important;
    }
    /* MOVE URL RESULT TYPE ICON TO LEFT END */
}

Fix font size in url & search bars (FF 78+)

chrome/userChrome.css
@-moz-document url(chrome://browser/content/browser.xhtml) {
    #urlbar,
    #searchbar {
        font-size: 12px !important;
    }
}

Don't round corners of the input boxes in url & search bars (FF 78+)

chrome/userChrome.css
@-moz-document url(chrome://browser/content/browser.xhtml) {
    #urlbar[breakout] > :first-child,
    #searchbar {
        border-radius: 1px !important;
    }

    .urlbarView-row-inner {
        border-radius: 0 !important;
    }
}

Enable compact layout (FF 89+)

about:config

browser.compactmode.show → true

and optionally

chrome/userChrome.css
:root {
  --tab-min-height: 30px !important;
}

#TabsToolbar {
    height: var(--tab-min-height) !important;
}

Classic tabs (FF 89+)

chrome/userChrome.css:

FF 89-95
@media (-moz-proton) {
    .tab-background {
        border-radius: 0 !important;
        margin-block: 0 !important;
    }
}
FF 96+
.tab-background {
    border-radius: 0 !important;
    margin-block: 0 !important;
}

Compact menus (FF 89+)

chrome/userChrome.css
menupopup > menuitem, menupopup > menu {
  padding-block: 4px !important;
}

:root {
  --arrowpanel-menuitem-padding: 4px 8px !important;
}

Active tab color (FF 100+)

chrome/userChrome.css
.tab-background[selected="true"] {
    background-color: #262b38 !important;
}

Compact tabs (FF 108+)

chrome/userChrome.css
:root {
    --tab-min-height: 30px !important;
}

.tab-label-container{
    height: unset !important; 
}

Remove "List all tabs" menu button

about:config

browser.tabs.tabmanager.enabled → false

for 131+:

#alltabs-button {
    display: none !important;
}

Remove line between tabs and navigation bar (FF 123+)

chrome/userChrome.css
#nav-bar {
    box-shadow: none !important;
    border-top: none;
}

Remove tab left padding

chrome/userChrome.css
.tabbrowser-tab {
    padding-left: 0 !important;
}

Restore background downloads to $TMP (FF 102+)

about:config

browser.download.start_downloads_in_tmp_dir → true

All combined

Firefox < 126

chrome/userChrome.css
@-moz-document url(chrome://browser/content/browser.xhtml) {
    #urlbar[breakout][breakout-extend] {
        top: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2) !important;
        left: 0 !important;
        width: 100% !important;
    }

    #urlbar[breakout][breakout-extend] > #urlbar-input-container {
        height: var(--urlbar-height) !important;
        padding-block: 0 !important;
        padding-inline: 0 !important;
    }
    
    #urlbar[breakout][breakout-extend] > #urlbar-background {
        animation-name: none !important;
        box-shadow: 0 1px 4px rgba(0, 0, 0, .05) !important;
    }
    
    .urlbarView {
        margin-inline: 0 !important;
        width: 100% !important;
    }

    .urlbarView-row {
        padding-block: 0 !important;
    }
    
    .urlbarView-type-icon {
        min-width: 16px !important;
        height: 16px !important;
        margin-bottom: 0 !important;
        margin-inline-start: 0 !important;
    }
    
    .urlbarView-favicon {
        margin-inline-start: 20px !important;
    }

    #urlbar[breakout] > :first-child,
    #searchbar {
        border-radius: 1px !important;
    }

    .urlbarView-row-inner {
        border-radius: 0 !important;
    }

    #nav-bar {
      box-shadow: none !important;
      border-top: none;
    }

    .tab-background {
        border-radius: 0 !important;
        margin-block: 0 !important;
    }

    .tab-label-container {
        height: unset !important;
    }

    .tabbrowser-tab {
        padding-left: 0 !important;
    }
}

menupopup {
    --panel-border-radius: 0 !important;
}

menupopup, menupopup > menuitem {
    border-radius: 0 !important;
}

menupopup > menuitem, menupopup > menu {
  padding-block: 4px !important;
}

:root {
  --arrowpanel-border-radius: 0px !important;
  --arrowpanel-menuitem-padding: 4px 8px !important;
  --tab-min-height: 30px !important;
  --tab-block-margin: 0px !important;
}

Firefox 126+

chrome/userChrome.css
@-moz-document url(chrome://browser/content/browser.xhtml) {
    #urlbar[breakout][breakout-extend] {
        top: 4px !important;
        left: 0 !important;
        width: 100% !important;
    }

    #urlbar[breakout][breakout-extend] > #urlbar-input-container {
        height: 100% !important;
        padding-block: 0 !important;
        padding-inline: 0 !important;
        padding: 1px 0 0 1px !important;
    }

    #urlbar[breakout][breakout-extend] > #urlbar-background {
        animation-name: none !important;
        box-shadow: 0 1px 4px rgba(0, 0, 0, .05) !important;
    }

    #urlbar[breakout][breakout-extend]:focus-within > #urlbar-background {
        border-color: var(--toolbar-field-focus-border-color) !important;
    }

    #urlbar[breakout] > :first-child,
    #searchbar {
        border-radius: 1px !important;
    }

    #urlbar[breakout]:focus-within > :first-child,
    #searchbar:focus-within {
        outline-offset: -1px !important;
        outline-width: 1px !important;
    }

    #urlbar[breakout][breakout-extend] .search-one-offs {
        padding: 4px 0 4px 0 !important;
    }

    #urlbar-input {
        min-height: 22px;
    }

    .urlbarView {
        margin-inline: 0 !important;
        width: 100% !important;
    }

    .urlbarView-row {
        padding-block: 0 !important;
    }
    
    .urlbarView-type-icon {
        min-width: 16px !important;
        height: 16px !important;
        margin-bottom: 0 !important;
        margin-inline-start: 0 !important;
    }
    
    .urlbarView-favicon {
        margin-inline-start: 20px !important;
    }

    .urlbarView-row {
        border-radius: 0 !important;
    }

    #nav-bar {
      box-shadow: none !important;
      border-top: none !important;
    }

    .tab-background {
        border-radius: 0 !important;
        margin-block: 0 !important;
    }

    .tab-label-container {
        height: unset !important;
    }

    .tabbrowser-tab {
        padding-left: 0 !important;
    }
}

menupopup {
    --panel-border-radius: 0 !important;
}

menupopup, menupopup > menuitem {
    border-radius: 0 !important;
}

menupopup > menuitem, menupopup > menu {
  padding-block: 4px !important;
}

:root {
  --arrowpanel-border-radius: 0px !important;
  --arrowpanel-menuitem-padding: 4px 8px !important;
  --tab-min-height: 30px !important;
  --tab-block-margin: 0px !important;
  --toolbar-field-focus-border-color: rgb(82, 148, 226) !important;
}

panel {
  --panel-border-radius: 1px !important;
}

Firefox 145+

chrome/userChrome.css
@-moz-document url(chrome://browser/content/browser.xhtml) {
    #urlbar[breakout][breakout-extend] {
        margin-left: 0 !important;
        width: var(--urlbar-width) !important;
        margin-top: calc((var(--urlbar-container-height) - var(--urlbar-height)) / 2) !important;

        > .urlbar-input-container {
            height: var(--urlbar-height) !important;
            padding-block: var(--urlbar-container-padding) !important;
            padding-inline: var(--urlbar-container-padding) !important;
        }

        > #urlbar-background {
            animation-name: none !important;
            box-shadow: 0 1px 4px rgba(0, 0, 0, .05) !important;
        }

        .search-one-offs {
            padding: 4px 0 4px 0 !important;
        }

        &:focus-within > #urlbar-background {
            border-color: var(--toolbar-field-focus-border-color) !important;
            border-radius: 1px !important;
        }
    }

    #urlbar[breakout] > :first-child,
    #searchbar {
        border-radius: 1px !important;
    }

    #urlbar,
    #searchbar {
        font-size: 13px !important;
    }

    #urlbar[breakout]:focus-within > :first-child,
    #searchbar:focus-within {
        outline-offset: -1px !important;
        outline-width: 1px !important;
    }

    .urlbarView {
        margin-inline: 0 !important;
        width: 100% !important;
    }

    .urlbarView-row {
        height: 28px !important;
        border-radius: 0 !important;
    }
    
    .urlbarView-type-icon {
        min-width: 16px !important;
        height: 16px !important;
        margin-bottom: 0 !important;
        margin-inline-start: 0 !important;
    }
    
    .urlbarView-favicon {
        margin-inline-start: 8px !important;
        margin-inline-end: 8px !important;
    }

    #nav-bar {
      box-shadow: none !important;
      border-top: none !important;
    }

    .tab-background {
        border-radius: 0 !important;
        margin-block: 0 !important;
    }

    .tab-label-container {
        height: unset !important;
    }

    .tabbrowser-tab {
        padding-left: 0 !important;
    }
}

menupopup {
    --panel-border-radius: 0 !important;
}

menupopup, menupopup > menuitem {
    border-radius: 0 !important;
}

menupopup > menuitem, menupopup > menu {
  padding-block: 4px !important;
}

:root {
  --arrowpanel-border-radius: 0px !important;
  --arrowpanel-menuitem-padding: 4px 8px !important;
  --tab-min-height: 30px !important;
  --tab-block-margin: 0px !important;
  --toolbar-field-focus-border-color: rgb(82, 148, 226) !important;
  --urlbar-inner-border-radius: 2px !important;
  --border-radius-medium: 4px !important;
}

panel {
  --panel-border-radius: 1px !important;
}

#alltabs-button {
    display: none !important;
}

Version specific CSS notes

In 128 #urlbar-input-container changed to .urlbar-input-container.

In 133 megabar changed coordinate calculation (relative to absolute), the proper css section should be

#urlbar[breakout][breakout-extend]
#urlbar[breakout][breakout-extend] {
    margin-left: 0 !important;
    width: var(--urlbar-width) !important;
    margin-top: calc((var(--urlbar-container-height) - var(--urlbar-height)) / 2) !important;

    > .urlbar-input-container {
        height: var(--urlbar-height) !important;
        padding-block: var(--urlbar-container-padding) !important;
        padding-inline: var(--urlbar-container-padding) !important;
    }
}

Also see:

Using Firefox without PulseAudio