fenix-fox/chrome/multi-row_tabs_below_content.css
MrOtherGuy da2ee8b244 use display: -webkit-box instead of flex for nav-bar
display: flex breaks extension menus but -webkit-box doesn't, so lets
use that while it works.
2021-09-01 15:49:26 +03:00

194 lines
No EOL
7.1 KiB
CSS

/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/multi-row_tabs_below_content.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/* Makes tabs to appear on multiple lines below the web content */
/* Tab reordering will not work and can't be made to work */
/* Make menubar enabled for getting window controls in correct place. Menubar options will be shown as overlay when mouse is at top-left corner */
/* 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 */
/* Scrollbar can't be clicked but the rows can be scrolled with mouse */
/* This maximum visible rows won't work before Fx66 */
/* So this setting does nothing on Fx65 and all tab rows will be shown */
@-moz-document url(chrome://browser/content/browser.xhtml){
/* Dummy variable to support both versions 89-90 */
:root{ --tab-block-margin: var(--proton-tab-block-margin) }
:root{
--multirow-toolbar-height: 40px;
--multirow-top-padding: 0px;
--multirow-n-rows: 3;
--multirow-tab-min-width: 100px;
--multirow-tab-dynamic-width: 1; /* Change to 0 for fixed-width tabs using the above width. */
}
@media (-moz-os-version: windows-win7),(-moz-os-version: windows-win10){
:root[sizemode="maximized"]{ --multirow-top-padding: 8px }
}
:root[uidensity="compact"]{--multirow-toolbar-height: 32px}
:root{ border-top-width: 0px !important }
#main-window > body > box,
#navigator-toolbox{ -moz-box-ordinal-group: 2; border-bottom: 0px !important }
#titlebar{-moz-appearance: none !important; } /* Try setting to "-moz-window-titlebar" if you face issues */
#nav-bar{
position: fixed !important;
/* For some reason -webkit-box behaves internally like -moz-box, but can be used with fixed position. display: flex would work too but it breaks extension menus. */
display: -webkit-box;
-webkit-box-flex: 1;
margin-left: 30px;
width: calc(100vw - 30px);
top: var(--multirow-top-padding);
}
:root[inFullscreen] #nav-bar,
:root[tabsintitlebar] #nav-bar{
margin-right: 138px;
/* width == 100vw - margins */
width: calc(100vw - 168px);
top: var(--multirow-top-padding);
}
:root[inFullscreen] #TabsToolbar > #window-controls{
display: flex !important;
justify-content: flex-end;
position: fixed;
right: 0;
width: 138px;
height: var(--multirow-toolbar-height);
background:var(--toolbar-bgcolor);
}
/* Fix incorrect vertical alignment with megabar */
#urlbar[breakout]{ --urlbar-toolbar-height: var(--multirow-toolbar-height) !important; }
/* Fix customization view */
#customization-panelWrapper > .panel-arrowbox > .panel-arrow{ margin-inline-end: initial !important; }
#customization-container,
:root:not([inFullscreen]) #content-deck,
:root:not([inFullscreen]) #browser{ margin-top: calc(var(--multirow-toolbar-height) + var(--multirow-top-padding))}
:root[inFullscreen] #TabsToolbar > #window-controls,
:root[inFullscreen] #toolbar-menubar,
:root[inFullscreen] #nav-bar{ top: calc(1px - (var(--multirow-toolbar-height) + var(--multirow-top-padding))) }
:root[inFullscreen] #navigator-toolbox:hover > #titlebar > #TabsToolbar > #window-controls,
:root[inFullscreen] #navigator-toolbox:hover > #nav-bar,
:root[inFullscreen] #navigator-toolbox:hover > #titlebar > #toolbar-menubar{ top: 0px }
/* Restyle nav-bar and menubar */
#nav-bar-customization-target{ flex-grow: 1 }
#nav-bar-overflow-button,
#PanelUI-menu-button{ height: var(--multirow-toolbar-height); }
#toolbar-menubar{
height: var(--multirow-toolbar-height);
position: fixed;
display: flex;
visibility: visible !important;
top: var(--multirow-top-padding);
width: 100vw;
color: var(--lwt-text-color);
background: linear-gradient(to right, var(--toolbar-bgcolor), var(--toolbar-bgcolor) 30px, transparent 30px) no-repeat;
}
#menubar-items + spacer{ flex-grow: 1 }
#toolbar-menubar > #menubar-items{
-moz-box-pack: center;
height: 100%;
visibility: hidden;
}
#toolbar-menubar:hover{ z-index: 2 }
#toolbar-menubar:hover > #menubar-items{
visibility: visible;
background-image: linear-gradient( to left,transparent,var(--lwt-accent-color) 35px);
}
#toolbar-menubar > .titlebar-buttonbox-container{ background: var(--toolbar-bgcolor); }
#toolbar-menubar > .titlebar-buttonbox-container > .titlebar-buttonbox{ height: 100% ;}
#main-menubar:last-child{ padding-inline-end: 40px }
#toolbar-menubar > toolbarspring {
background: url("chrome://global/skin/icons/settings.svg") no-repeat 10px;
height: 100%;
display: block;
fill: currentColor;
-moz-context-properties: fill;
min-width: 28px !important;
max-width: 28px !important;
}
:root[tabsintitlebar] #PanelUI-button{ margin-right: 20px; }
#tabbrowser-tabs{
min-height: unset !important;
padding-inline-start: 0px !important
}
#scrollbutton-up~spacer,
#scrollbutton-up,
#scrollbutton-down{ display: var(--scrollbutton-display-model,initial) }
scrollbox[part][orient="horizontal"]{
display: flex;
flex-wrap: wrap;
overflow-y: auto;
max-height: var(--uc-scrollbox-max-height,1px);
scrollbar-color: currentColor transparent;
scrollbar-width: thin;
scroll-snap-type: y mandatory;
}
.scrollbox-clip[orient="horizontal"],
#tabbrowser-arrowscrollbox{
overflow: -moz-hidden-unscrollable;
display: block;
--scrollbutton-display-model: none;
--uc-scrollbox-max-height: calc((var(--tab-min-height) + 2 * var(--tab-block-margin,0px)) * var(--multirow-n-rows));
}
:root[inFullscreen] .scrollbox-clip[orient="horizontal"]:not(:hover),
:root[inFullscreen] #tabbrowser-arrowscrollbox:not(:hover){ --uc-scrollbox-max-height: 1px; min-height: 1px !important; }
.tabbrowser-tab{
height: calc((var(--tab-min-height) + 2 * var(--tab-block-margin,0px))) !important;
scroll-snap-align: start;
}
.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%; }
/* This should fix potential flash that could occur when bottom border is hovered to show tabs in fullscreen mode */
#tabbrowser-tabpanels{ background-color: var(--lwt-accent-color) !important; }
/* Hide some things that are unnecessary in multi-row below content mode */
#TabsToolbar > #window-controls,
#alltabs-button,
:root:not([customizing]) #TabsToolbar #new-tab-button,
#tabbrowser-arrowscrollbox > spacer,
.tabbrowser-tab::after{ display: none !important } /* Also disables tab separators since they mysteriously break tab-row scrolling */
}