Chapter 8. Firefox

  1. Make Firefox the default

    If necessary: sudo update-alternatives --set gnome-www-browser /usr/bin/firefox

  2. Sync

    Set up Firefox sync.

  3. Configuration

    Browse to about:config and adjust:

    • browser.enable_automatic_image_resizing = false

    • browser.link.open_newwindow.restriction = 0

    • browser.ml.chat.enabled = false

    • browser.search.context.loadInBackground = true

    • browser.tabs.groups.smart.enabled = false

    • dom.event.clipboardevents.enabled = ¿maybe?

    • dom.webnotifications.enabled = false

      Notes on eliminating popups: Disable popups

    • geo.enabled = false

    • keyword.enabled = false This disables search in the address bar, making it usable as an address bar again.

    • pref.privacy.disable_button_view.view_passwords = false

    • toolkit.legacyUserProfileCustomizations.stylesheets = true

    • There may be something to make popups open in new tabs (which is very helpful in tiled WMs like sway).

  4. Recover the home page, including changing new windows and tabs to use a blank page, and, just in case, turning off the privacy-compromising settings in Firefox Home Content.

  5. Go through config and disable all of the bad settings, including (as of 2025-09):

    1. Use AI to suggest tabs and a name for tab groups OFF

    2. Play DRM-controlled content OFF

    3. ¿Enable link previews?

    4. For Search, change engine to DuckDuckGo, disable suggestions, turn off most of Firefox Suggest, disable the worst search engines

    5. In Privacy & Security, turn off Send Technical and interaction data to Mozilla and related. Make sure Allow websites to perform privacy-preserving ad measurement is OFF.

  6. Note that Firefox tends to spam syslog, so we installed auditd in the big list above; it segregates all apparmor messages and calms down the logs.

  7. Install Extensions

    Extensions may come over automatically from sync, but this is inconsistent. If necessary, load them manually: Ctrl+Shift+A

    • UBlock Origin

    • Noscript

    • Firefox Multi-Account Containers

    • Tree Style Tab (laptop only)

  8. Hide UI clutter

    Install custom chrome file. It may be necessary to close Firefox before doing this. The hack with wildcards only works if there's only one default profile. mkdir ~/.mozilla/firefox/*default*/chrome cp ~/Dropbox/Basic/new_machine/linux/firefox/userChrome.css ~/.mozilla/firefox/*default*/chrome

    Note

    userChrome.css source

    @namespace
    url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
    
    
    /* How to inspect the browser UI: https://firefox-source-docs.mozilla.org/devtools-user/browser_toolbox/index.html */
    
    /* Hide lots of cruft on the bookmarks toolbar */
    
    #BMB_bookmarksPopup menuseparator[builder="end"],
    #BMB_bookmarksToolbar+menuseparator,
    #BMB_bookmarksToolbar,
    #BMB_unsortedBookmarks,
    #alltabs-button,
    #appmenu_bookmarksPopup menuseparator[builder="end"],
    #appmenu_bookmarksToolbar+menuseparator,
    #appmenu_bookmarksToolbar,
    #appmenu_unsortedBookmarks,
    #bookmarksMenuItemsSeparator,
    #bookmarksMenuPopup menuseparator[builder="end"],
    #bookmarksToolbarFolderMenu+menuseparator,
    #bookmarksToolbarFolderMenu,
    #menu_unsortedBookmarks,
    #organizeBookmarksSeparator,
    #subscribeToPageMenuitem,
    .hide-if-empty-places-result {
        display:none!important;
    }
    
    :root[sizemode="normal"] #nav-bar{ --uc-window-drag-space-width: 20px }
    
    #titlebar{ -moz-appearance: none !important; }
    #TabsToolbar{ min-height: 0px !important }
    
    #tabbrowser-tabs,
    #tabbrowser-arrowscrollbox{ min-height: 0 !important; }
    
    :root:not([customizing]) #tabs-newtab-button,
    :root:not([customizing]) #TabsToolbar-customization-target > .toolbarbutton-1,
    :root:not([customizing]) #TabsToolbar .titlebar-button{
      -moz-appearance: none !important;
      height: 0px;
      padding-top: 0px !important;
      padding-bottom: 0px !important;
      -moz-box-align: stretch;
      margin: 0 !important;
    }
    
    .accessibility-indicator,
    .private-browsing-indicator{ 
      height: unset !important;
    }
    .accessibility-indicator > hbox{ padding-block: 0 !important }
    
    .tabbrowser-tab{
      height: calc(var(--tab-min-height) + 2 * var(--tab-block-margin,0px));
    }
    
    .tabbrowser-tab[first-visible-tab="true"][last-visible-tab="true"]{
      visibility: collapse !important;
      /* These seem unnecessary, but they achieve compatibility with hide_tabs_with_one_tab.css */
      min-height: 0 !important;
      height: 0;
    }
    
    
    
    /* past attempts at hiding one-tab tabbar */
    /* .titlebar-spacer[type="pre-tabs"], .titlebar-spacer[type="post-tabs"] { */
    /*     visibility: collapse; */
    /* } */
    
    /* .tab-label-container { */
    /*     height: auto ! important; */
    /* } */
    
    
    /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/hide_tabs_with_one_tab.css made available under Mozilla Public License v. 2.0
    See the above repository for updates as well as full license text. */
    
    /* Makes tabs toolbar items zero-height initially and sets enlarge them to fill up space equal to tab-min-height set on tabs. Optionally use privatemode_indicator_as_menu_button.css to replace main menu icon with private browsing indicator while tabs are hidden. */
    
    /* This style causes CSD window controls to disappear on linux, but you can kind of work around that by using window_control_fallback_for_custom_windows_theme.css */
    
    /* Hide Tab bar with only one Tab - [110] https://support.mozilla.org/en-US/questions/1394300 */
    #tabbrowser-tabs .tabbrowser-tab:only-of-type,
    #tabbrowser-tabs .tabbrowser-tab:only-of-type + #tabbrowser-arrowscrollbox-periphery{
      display:none !important;
    }
    #tabbrowser-tabs, #tabbrowser-arrowscrollbox {min-height:0!important;}
    /* #TabsToolbar:not(:hover) */ #alltabs-button {display:none !important;}
    
    
    
    /* Button re-styling */
    #tabs-newtab-button{ transform: scale(0.8); }
    #tabs-newtab-button:hover{
      background-color: var(--toolbarbutton-hover-background);
      border-radius: var(--tab-border-radius);
    }
    
    #tabs-newtab-button > .toolbarbutton-icon{
      padding: 0 !important;
      transform: scale(0.5);
      background-color: transparent !important;
    }
    /* Fix window controls not being clickable */
    :root[tabsintitlebar] #toolbar-menubar[autohide="true"][inactive]{
      transition: height 0ms steps(1) 80ms;
    }
    :where(#nav-bar){
      border-inline: var(--uc-window-drag-space-width,0) solid var(--toolbar-fgcolor);
    }
    @media (-moz-platform: linux){
      #TabsToolbar .titlebar-buttonbox{
        -moz-box-align: stretch !important;
      }
      #TabsToolbar > .titlebar-buttonbox-container > .titlebar-buttonbox > .titlebar-button{
        transform: scale(0.8);
        margin-inline: -3px !important;
      }
      #TabsToolbar .titlebar-button > .toolbarbutton-icon{ padding: 0 13px !important }
    }
    

    For more details on editing userChrome.css, see Browser Toolbox help. See also this answer.

    Right-click on Recent bookmarks to get option to hide them