Archive | December 2019

Multi Row Tabs in Firefox 71+

  1. Open about:config and set toolkit.legacyUserProfileCustomizations.stylesheets to true.
  2. Open a new tab on about:support and click the button next to “Profile Folder
  3. Go to the “chrome” directory at the profile folder, or create it if it doesn’t exist.
  4. Create a file named “userChrome.css” (if it doesn’t exist) and open it in a text editor.
  5. Copy the css code from below (based on multi-row_bookmarks.css)
    (copy of the css is at the bottom of this post)
  6. Paste it into userChrome.css and save.
  7. Restart Firefox

More firefox tweaks at firefox-csshacks

userChrome.css

/* https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/multi-row_tabs.css */

/* Makes tabs to appear on multiple lines */
/* Tab reordering will not work and can't be made to work */
/* You can use multi-row_tabs_window_control_patch.css to move window controls to nav-bar*/

/* It's recommended to move tabs new-tab-button outside tabs toolbar */

/* Change the --multirow-n-rows to change maximum number of rows before the rows will start to scroll */
/* This maximum visible rows won't work before Fx66 */
/* So this setting does nothing on Fx65 and all tab rows will be shown */
:root{
    --multirow-n-rows: 5;
    --multirow-tab-min-width: 60px;
    --multirow-tab-dynamic-width: 1; /* Change to 0 for fixed-width tabs using the above width */
}

/* Scrollbar can't be clicked but the rows can be scrolled with mouse wheel */
/* Uncomment the next line if you want to be able to use the scrollbar with mouse clicks */

/* .tabbrowser-arrowscrollbox{ -moz-window-dragging: no-drag } */

/* Uncommenting the above makes you unable to drag the window from empty */
/*space in the tab strip but normal draggable spaces will continue to work */

#tabbrowser-tabs{
  min-height: unset !important;
  padding-inline-start: 0px !important
}
/* Selectors for Firefox 71+ */
/* These are not tabs toolbar specific but horizontal scrollbox isn't */
/* used elsewhere, except in bookmarks toolbar but there it doesn't have */
/* [part] attribute since it's not in shadow-root */
@-moz-document url(chrome://browser/content/browser.xhtml){
  .scrollbutton-up[orient="horizontal"][part]~spacer,
  .scrollbutton-up[orient="horizontal"][part],
  .scrollbutton-down[orient="horizontal"][part]{ display: none }

  scrollbox[part][orient="horizontal"]{
    display: flex;
    flex-wrap: wrap;
    overflow-y: auto;
    max-height: calc(var(--tab-min-height) * var(--multirow-n-rows));
    scrollbar-color: currentColor transparent;
    scrollbar-width: thin;
  }
}

/* Test for Firefox > 66 */
@supports (inset-block:auto){
  #tabbrowser-tabs > .tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox{
    display: flex;
    flex-wrap: wrap;
    overflow-y: auto;
    max-height: calc(var(--tab-min-height) * var(--multirow-n-rows));
    scrollbar-color: var(--toolbar-bgcolor) var(--lwt-accent-color);
    scrollbar-width: thin;
  }
  #tabbrowser-tabs > .tabbrowser-arrowscrollbox {
    overflow: -moz-hidden-unscrollable;
    display: block;
  }
}

/* Test for Firefox < 66 */
@supports not (inset-block:auto){
  #tabbrowser-tabs > .tabbrowser-arrowscrollbox{
    min-height: unset !important;
  }
  #tabbrowser-tabs .scrollbox-innerbox{
    display: flex;
    flex-wrap: wrap;
  }
  #tabbrowser-tabs .arrowscrollbox-scrollbox {
    overflow: -moz-hidden-unscrollable;
    display: block;
  }
}

.tabbrowser-tab{ height: var(--tab-min-height); }
#tabbrowser-tabs .tabbrowser-tab[pinned]{
  position: static !important;
  margin-inline-start: 0px !important;
}

.tabbrowser-tab[fadein]:not([pinned]){
  min-width: var(--multirow-tab-min-width) !important;
  flex-grow: var(--multirow-tab-dynamic-width);
  /*
  Uncomment to enable full-width tabs, also makes tab dragging a tiny bit more sensible
  Don't set to none or you'll see errors in console when closing tabs
  /*max-width: 100vw !important;*/
}

.tabbrowser-tab > stack{ width: 100%; height: 100% }

#tabbrowser-tabs .scrollbutton-up,
#tabbrowser-tabs .scrollbutton-down,
#alltabs-button,
:root:not([customizing]) #TabsToolbar #new-tab-button,
#tabbrowser-tabs spacer,
.tabbrowser-tab::after{ display: none !important }

/* Always show tab close button on hover and never otherwise */
/* https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/tab_close_button_always_on_hover.css */
.tabbrowser-tab .tab-close-button{
  display:none;
}
.tabbrowser-tab:not([pinned]):hover .tab-close-button{
  display:-moz-box !important;
}
This entry was posted on December 4, 2019, in blog, firefox.