Merge pull request #438 from black7375/dev

Ver 6.0.0 Feedback Thread
This commit is contained in:
MS_Y 2022-08-23 14:46:34 +09:00 committed by GitHub
commit 1a4206f422
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
98 changed files with 4722 additions and 918 deletions

View file

@ -176,6 +176,11 @@ W: https://github.com/coekuss/quietfox
C: Copyright (c) 2019 coekuss
L: MIT
N: RainFox
W: https://github.com/1280px/rainfox
C: Copyright (c) 2020 1280px
L: MIT
N: ShadowFox
W: https://github.com/overdodactyl/ShadowFox
C: Copyright (c) 2017 overdodactyl

View file

@ -66,6 +66,10 @@ Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-u
- Menu
- Density
- Others...
- *Tabbar Layouts*
- Tabs on Bottom
- One Liner
- Vertical Tab Support
- *Tab Design*
- General:
- Connect with toolbar(Buttons like tabs)
@ -104,6 +108,7 @@ Some settings [[https://github.com/black7375/Firefox-UI-Fix/wiki/Options#using-u
- Overlap mode
- *Others*
- Animations
- Hidden & Auto Hide
- Activate calculator at address bar
- Mouse pointer for each context

View file

@ -0,0 +1,118 @@
@use 'true' as *;
@use "example" as *;
@use "../src/utils/one_liner";
@include test-module("One Liner [mix]") {
@include test("content") {
@include assert {
@include output {
@include one_liner.OneLinerContent {
@include example;
}
}
@include expect {
@supports not -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@include example;
}
@supports -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@media screen and (min-width: 1100px) {
@include example;
}
}
}
}
}
@include test("explicitly") {
@include assert {
@include output {
@include one_liner.OneLiner {
@include example;
}
}
@include expect {
@supports -moz-bool-pref("userChrome.tabbar.one_liner") {
@supports not -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@include example;
}
@supports -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@media screen and (min-width: 1100px) {
@include example;
}
}
}
}
}
}
}
@include test-module("One Liner for Responsive [mix]") {
@include test("Tabs on bottom") {
@include assert {
@include output {
@include one_liner.OneLinerOnBottom {
@include example;
}
}
@include expect {
@supports not -moz-bool-pref("userChrome.tabbar.one_liner") {
@include example;
}
@supports -moz-bool-pref("userChrome.tabbar.one_liner") {
@supports -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@media screen and (max-width: 1100px) {
@include example;
}
}
}
}
}
}
@include test("Tab bar") {
@include assert {
@include output {
@include one_liner.OneLinerTabbar {
@include example;
}
}
@include expect {
@supports not -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@include example;
}
@supports -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@media screen and (min-width: 1100px) {
@include example;
}
@supports -moz-bool-pref("userChrome.autohide.tabbar") {
@include example;
}
}
}
}
}
@include test("Nav Bar") {
@include assert {
@include output {
@include one_liner.OneLinerNavbar {
@include example;
}
}
@include expect {
@supports -moz-bool-pref("userChrome.autohide.navbar") {
@supports not -moz-bool-pref("userChrome.tabbar.one_liner") {
@include example;
}
@supports -moz-bool-pref("userChrome.tabbar.one_liner") {
@supports -moz-bool-pref("userChrome.tabbar.one_liner.responsive") {
@media screen and (max-width: 1100px) {
@include example;
}
}
}
}
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -2988,6 +2988,17 @@
}
}
}
/** Monospace *****************************************************************/
@supports -moz-bool-pref("userContent.page.monospace") {
@-moz-document url-prefix("about:"),
url-prefix("chrome://browser/content/places/places.xhtml"),
regexp("^(((jar:)?file:///)|(chrome://)).*/$")
{
* {
font-family: -moz-fixed;
}
}
}
/** Menu - Icons Layout *******************************************************/
@supports -moz-bool-pref("userChrome.icon.menu") {
@-moz-document url("chrome://browser/content/places/places.xhtml"),

View file

@ -390,6 +390,7 @@ $firefoxProfileDirPaths = @(
"${HOME}\AppData\Roaming\Mozilla\Firefox",
"${HOME}\AppData\Roaming\Waterfox",
"${HOME}\AppData\Roaming\librewolf",
"${HOME}\AppData\Roaming\Ghostery Browser",
"${HOME}\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser"
)

View file

@ -338,6 +338,7 @@ firefoxProfileDirPaths=(
"${HOME}/.mozilla/firefox"
"${HOME}/.waterfox"
"${HOME}/.librewolf"
"${HOME}/.ghostery browser"
"${HOME}/.pulse-browser"
"${HOME}/.firedragon"
"${HOME}/.local/opt/tor-browser/app/Browser/TorBrowser/Data/Browser"
@ -346,6 +347,7 @@ firefoxProfileDirPaths=(
"${HOME}/Library/Application Support/Firefox"
"${HOME}/Library/Application Support/Waterfox"
"${HOME}/Library/Application Support/libreWolf"
"${HOME}/Library/Application Support/Ghostery Browser"
"${HOME}/Library/Application Support/pulse-browser"
"${HOME}/Library/Application Support/TorBrowser/Browser"
)

View file

@ -0,0 +1,16 @@
#back-button[disabled="true"] {
margin-left: -36px !important;
opacity: 0 !important;
pointer-events: none;
}
@include Animate {
#back-button {
transition-property: background-color, opacity, margin-left !important;
}
#back-button[disabled="true"] {
transition: background-color 1s var(--animation-easing-function),
opacity 1s var(--animation-easing-function),
margin-left 0.5s ease !important;
}
}

View file

@ -0,0 +1,30 @@
// Based on https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/autohide_bookmarks_toolbar.css
#PersonalToolbar:not([customizing]) {
margin-bottom: var(--uc-bm-hide-height);
opacity: 0;
will-change: margin-bottom, opacity;
@include Option("userChrome.autohide.toolbar_overlap") {
&[collapsed="true"] {
visibility: visible !important;
max-height: unset !important;
}
}
}
#navigator-toolbox:is(:hover, :focus-within) #PersonalToolbar:not([customizing]) {
margin-bottom: 0;
opacity: 1;
}
@include Animate {
#PersonalToolbar:not([customizing]) {
// --ext-theme-background-transition: background-color 0.1s cubic-bezier(.17,.67,.83,.67);
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
min-height 170ms ease-out, max-height 170ms ease-out, var(--ext-theme-background-transition) !important;
}
#navigator-toolbox:is(:hover, :focus-within) #PersonalToolbar:not([customizing]) {
transition-delay: 0s !important;
}
}

50
src/autohide/_common.scss Normal file
View file

@ -0,0 +1,50 @@
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar", "userChrome.autohide.bookmarkbar", "userChrome.tabbar.one_liner") {
:root {
--uc-tabbar-height: var(--tab-min-height); // calc((var(--tab-block-margin) * 2) + var(--tab-min-height));
--uc-tabbar-hide-height: calc(-1 * var(--uc-tabbar-height));
--uc-navbar-height: calc(16px + 2 * (var(--toolbarbutton-inner-padding) + var(--toolbarbutton-outer-padding)));
--uc-navbar-hide-height: calc(-1 * var(--uc-navbar-height));
--uc-bm-height: calc(20px + (2 * var(--bookmark-block-padding, 4px))); /* 20px = 16px + (2px * 2) [margin block] */
--uc-bm-hide-height: calc(-1 * var(--uc-bm-height));
@include Option("userChrome.hidden.tabbar") {
@include OneLinerNavbarContent() {
--uc-tabbar-height: 0px;
}
}
@include Option("userChrome.hidden.navbar") {
--uc-navbar-height: 0px;
}
}
}
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar", "userChrome.autohide.bookmarkbar", "userChrome.autohide.infobar") {
:root {
--uc-autohide-toolbar-delay: 600ms;
}
#navigator-toolbox {
position: relative;
z-index: 2;
}
#navigator-toolbox:not(:hover) {
animation: 1s keepfront;
}
@keyframes keepfront {
from {
z-index: 3;
}
to {
z-index: 3;
}
}
#sidebar-box:is(:hover, :focus-within) {
position: relative;
z-index: 2 !important;
}
@include Option("userChrome.autohide.toolbar_overlap") {
@import "toolbar_overlap";
}
}

View file

@ -0,0 +1,31 @@
#nav-bar:not(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) #urlbar-container {
-moz-box-ordinal-group: 0;
min-width: calc(var(--uc-navbar-width, 100vw) - ((2 * var(--urlbar-margin-inline)) + var(--uc-window-drag-space-pre, 0px) + var(--uc-navbar-gap, 0px))) !important;
}
@include Option("userChrome.tabbar.one_liner") {
#nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) {
--uc-tabbar-width: calc(100vw - var(--uc-navbar-width-origin));
}
}
@include Animate {
@include OneLiner {
#nav-bar {
transition: margin-inline 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important;
}
#nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) {
transition-delay: 0s !important;
}
}
@include OneLinerNavbarContent {
#urlbar-container {
transition: min-width 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
}
#nav-bar:is(:hover, :focus-within, [urlbar-exceeds-toolbar-bounds="true"]) #urlbar-container {
transition-delay: 0s !important;
}
}
}

View file

@ -0,0 +1,16 @@
#forward-button[disabled="true"] {
margin-left: -36px !important;
opacity: 0 !important;
pointer-events: none;
}
@include Animate {
#forward-button {
transition-property: background-color, opacity, margin-left !important;
}
#forward-button[disabled="true"] {
transition: background-color 1s var(--animation-easing-function),
opacity 1s var(--animation-easing-function),
margin-left 0.5s ease !important;
}
}

35
src/autohide/_index.scss Normal file
View file

@ -0,0 +1,35 @@
@include Option("userChrome.autohide.back_button") {
@import "back_button";
}
@include Option("userChrome.autohide.forward_button") {
@import "forward_button";
}
@include Option("userChrome.autohide.page_action") {
@import "page_action";
}
@include Option("userChrome.autohide.tab") {
@import "tab";
}
@import "common";
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar") {
@include Option("userChrome.autohide.tabbar", "userChrome.tabbar.one_liner") {
@import "tabbar";
}
@include Option("userChrome.autohide.navbar", "userChrome.tabbar.one_liner") {
@import "navbar";
}
}
@include Option("userChrome.autohide.bookmarkbar") {
@import "bookmarkbar";
}
@include Option("userChrome.autohide.infobar") {
@import "infobar";
}
@import "sidebar";
@include Option("userChrome.autohide.fill_urlbar") {
@import "fill_urlbar";
}

View file

@ -0,0 +1,32 @@
#tab-notification-deck:not([customizing]) > .notificationbox-stack {
$infobarFixedHeight: 13px + ((1px + 5px) * 2); // button height + (button border + [button.small-button padding]) * 2
// fiexedHeight + (button margin * 2) + messagebar margin
--infobar-height: calc(#{ $infobarFixedHeight } + (var(--infobar-button-vertical-margin, 4px) * 2) + var(--infobar-message-vertical-margin, 8px));
}
#tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {
--infobar-message-margin: 0 4px calc(-1 * var(--infobar-height));
opacity: 0;
will-change: margin-bottom, opacity;
}
#navigator-toolbox:is(:hover, :focus-within) #tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {
--infobar-message-margin: 0 4px var(--infobar-message-vertical-margin, 8px);
opacity: 1;
}
@include Option("userChrome.autohide.toolbar_overlap") {
#tab-notification-deck:not([customizing]) {
height: 0;
}
}
@include Animate {
#tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important;
}
#navigator-toolbox:is(:hover, :focus-within) #tab-notification-deck:not([customizing]) > .notificationbox-stack[slot="selected"] > notification-message {
transition-delay: 0s !important;
}
}

29
src/autohide/_navbar.scss Normal file
View file

@ -0,0 +1,29 @@
@include OneLinerNavbar {
#nav-bar:not([customizing]) {
margin-bottom: var(--uc-navbar-hide-height);
opacity: 0;
will-change: margin-bottom, opacity;
}
#navigator-toolbox:is(:hover, :focus-within) #nav-bar:not([customizing]) {
margin-bottom: 0;
opacity: 1;
}
}
@include Animate {
#nav-bar:not([customizing]) {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important;
@include Option("userChrome.autohide.fill_urlbar") {
transition: margin-inline 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
var(--ext-theme-background-transition) !important;
}
}
#navigator-toolbox:is(:hover, :focus-within) #nav-bar:not([customizing]) {
transition-delay: 0s !important;
}
}

View file

@ -0,0 +1,29 @@
#page-action-buttons > .urlbar-page-action {
margin-inline-end: calc(-16px - 2 * var(--urlbar-icon-padding) );
opacity: 0;
}
#urlbar-container:is(:hover, :focus-within) #page-action-buttons > .urlbar-page-action,
.urlbar-page-action[open],
.urlbar-page-action[open] ~ .urlbar-page-action {
margin-inline-end: 0px !important;
opacity: 1;
}
@include Animate {
#page-action-buttons > .urlbar-page-action {
transition: margin-inline-end 50ms var(--animation-easing-function) 900ms,
opacity 1.5s var(--animation-easing-function) 600ms !important;
@include Option("userChrome.decoration.animate") {
transition: margin-inline-end 50ms var(--animation-easing-function) 900ms,
opacity 1.5s var(--animation-easing-function) 600ms,
background-color 2.5s var(--animation-easing-function) !important;
}
}
#urlbar-container:is(:hover, :focus-within) #page-action-buttons > .urlbar-page-action,
.urlbar-page-action[open],
.urlbar-page-action[open] ~ .urlbar-page-action{
transition-delay: 0s !important;
}
}

View file

@ -0,0 +1,20 @@
// Refer variable `src/sidebar/overlap`
@include Option("userChrome.autohide.sidebar") {
#sidebar-box {
min-width: var(--uc-sidebar-width) !important;
max-width: var(--uc-sidebar-width) !important;
}
:root[inFullscreen="true"] #sidebar-box {
min-width: var(--uc-sidebar-activate-width) !important;
max-width: var(--uc-sidebar-activate-width) !important;
}
@include Option("userChrome.sidebar.overlap") {
@import "sidebar/overlap";
}
@include NotOption("userChrome.sidebar.overlap") {
@import "sidebar/static";
}
}

34
src/autohide/_tab.scss Normal file
View file

@ -0,0 +1,34 @@
.tabbrowser-tab:not([multiselected]) .tab-content:not(:hover):not([selected]) {
@include NotOption("userChrome.autohide.tab.opacity") {
@include NotOption("userChrome.autohide.tab.blur") {
margin-bottom: -64px;
}
}
@include Option("userChrome.autohide.tab.opacity") {
opacity: 0%;
}
@include Option("userChrome.autohide.tab.blur") {
filter: blur(8px);
}
@include Animate {
transition-timing-function: var(--animation-easing-function);
transition-duration: 0.2s;
transition-delay: 600ms;
&:is(:hover, :focus-within) {
transition-delay: 0s;
}
@include NotOption("userChrome.autohide.tab.opacity") {
@include NotOption("userChrome.autohide.tab.blur") {
transition-property: margin-bottom;
}
}
@include Option("userChrome.autohide.tab.opacity") {
transition-property: opacity;
}
@include Option("userChrome.autohide.tab.blur") {
transition-property: filter;
}
}
}

64
src/autohide/_tabbar.scss Normal file
View file

@ -0,0 +1,64 @@
//-- Mixin ---------------------------------------------------------------------
@mixin _autohide_tabbar() {
@include NotOption("userChrome.tabbar.on_bottom") {
@content;
}
@include Option("userChrome.tabbar.on_bottom") {
> *:not(.titlebar-buttonbox-container) {
@content;
}
}
}
//------------------------------------------------------------------------------
@include OneLinerTabbar {
:root:not([customizing]) #titlebar {
margin-bottom: var(--uc-tabbar-hide-height);
will-change: margin-bottom;
}
#TabsToolbar:not([customizing]) {
@include _autohide_tabbar {
opacity: 0;
will-change: opacity;
}
}
#navigator-toolbox:is(:hover, :focus-within) {
> #titlebar {
margin-bottom: 0px;
}
#TabsToolbar {
@include _autohide_tabbar {
opacity: 1;
}
}
}
}
@include Animate {
#titlebar:not([customizing]) {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay),
background-color 1s var(--animation-easing-function) !important;
}
#TabsToolbar:not([customizing]) {
@include _autohide_tabbar {
transition: opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay) !important;
}
}
#navigator-toolbox:is(:hover, :focus-within) {
transition-delay: 0s !important;
> #titlebar:not([customizing]) {
transition-delay: 0s !important;
}
#TabsToolbar:not([customizing]) {
@include _autohide_tabbar {
transition-delay: 0s !important;
}
}
}
}

View file

@ -0,0 +1,68 @@
#navigator-toolbox {
--uc-toolbar-hide-height: calc(-1 * var(--uc-toolbar-height, 0));
margin-bottom: var(--uc-toolbar-hide-height) !important;
@include Animate {
@include Option("userChrome.decoration.animate") {
transition: margin-top 1s ease,
margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
&:is(:hover, :focus-within) {
transition-delay: 0s !important;
}
&[inFullscreen="true"] {
transition: margin-top 1.3s var(--animation-easing-function) 50ms,
margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
}
}
@include NotOption("userChrome.decoration.animate") {
transition: margin-bottom 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
&:is(:hover, :focus-within) {
transition-delay: 0s !important;
}
}
}
&:is(:hover, :focus-within) {
@include Option("userChrome.autohide.tabbar", "userChrome.autohide.navbar") {
@include Option("userChrome.autohide.tabbar", "userChrome.tabbar.one_liner") {
--uc-toolbar-height: var(--uc-tabbar-height);
@include NotOption("userChrome.autohide.navbar") {
@include Option("userChrome.autohide.bookmarkbar") {
--uc-toolbar-height: calc(var(--uc-tabbar-height) + var(--uc-bm-height));
}
}
@include OneLinerNavbar {
@include NotOption("userChrome.autohide.bookmarkbar") {
--uc-toolbar-height: calc(var(--uc-tabbar-height) + var(--uc-navbar-height));
}
@include Option("userChrome.autohide.bookmarkbar") {
--uc-toolbar-height: calc(var(--uc-tabbar-height) + var(--uc-navbar-height) + var(--uc-bm-height));
}
}
}
}
@include NotOption("userChrome.autohide.tabbar") {
@include NotOption("userChrome.autohide.navbar") {
@include Option("userChrome.autohide.bookmarkbar") {
--uc-toolbar-height: var(--uc-bm-height);
}
}
@include Option("userChrome.autohide.navbar", "userChrome.tabbar.one_liner") {
@include OneLinerNavbar {
@include NotOption("userChrome.autohide.bookmarkbar") {
--uc-toolbar-height: var(--uc-navbar-height);
}
@include Option("userChrome.autohide.bookmarkbar") {
--uc-toolbar-height: calc(var(--uc-navbar-height) + var(--uc-bm-height));
}
}
}
}
}
}

View file

@ -0,0 +1,47 @@
#sidebar {
min-width: var(--uc-sidebar-width) !important;
max-width: var(--uc-sidebar-width) !important;
will-change: min-width, max-width;
}
#sidebar-box:is(:hover, :focus-within) > #sidebar {
min-width: var(--uc-sidebar-activate-width) !important;
max-width: var(--uc-sidebar-activate-width) !important;
}
:root[inFullscreen="true"] #sidebar-box {
margin-inline-start: var(--uc-sidebar-activate-width-reverse) !important;
padding-inline-start: var(--uc-sidebar-fullscreen-width);
will-change: padding-inline-start;
&:is(:hover, :focus-within) {
padding-inline-start: var(--uc-sidebar-activate-width);
}
#sidebar-header,
#sidebar {
min-width: calc(var(--uc-sidebar-activate-width)) !important;
max-width: calc(var(--uc-sidebar-activate-width)) !important;
will-change: unset;
}
}
@include Animate {
#sidebar {
transition: min-width 750ms var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
}
#sidebar-box:is(:hover, :focus-within) > #sidebar {
transition-delay: 0ms !important;
}
:root[inFullscreen="true"] #sidebar-box {
transition: padding-inline-start 1s var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
&:is(:hover, :focus-within) {
transition-delay: 0ms !important;
}
}
}

View file

@ -0,0 +1,52 @@
#sidebar-box {
--uc-sidebar-fullscreen-margin: calc(var(--uc-sidebar-fullscreen-width) + var(--uc-sidebar-activate-width-reverse));
overflow: hidden;
will-change: min-width, max-width;
&:is(:hover, :focus-within) {
min-width: var(--uc-sidebar-activate-width) !important;
max-width: var(--uc-sidebar-activate-width) !important;
}
}
:root[inFullscreen="true"] #sidebar-box {
&:not([positionend="true"]) {
margin-inline-start: var(--uc-sidebar-fullscreen-margin) !important;
will-change: margin-inline-start;
&:is(:hover, :focus-within) {
margin-inline-start: 0 !important;
}
}
&[positionend="true"] {
margin-inline-end: var(--uc-sidebar-fullscreen-margin) !important;
will-change: margin-inline-end;
&:is(:hover, :focus-within) {
margin-inline-end: 0 !important;
}
}
}
@include Animate {
#sidebar-box {
transition: min-width 750ms var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
&:is(:hover, :focus-within) {
transition-delay: 0ms !important;
}
}
:root[inFullscreen="true"] #sidebar-box {
transition: margin-inline-start 1s var(--animation-easing-function) var(--uc-autohide-sidebar-delay) !important;
&[positionend="true"] {
transition-property: margin-inline-end !important;
}
&:is(:hover, :focus-within) {
transition-delay: 0ms !important;
}
}
}

View file

@ -0,0 +1,4 @@
#PlacesToolbarItems {
display: flex !important;
justify-content: safe center !important;
}

12
src/centered/_index.scss Normal file
View file

@ -0,0 +1,12 @@
/*= Centered - Tab ===========================================================*/
@import "tab";
/*= Centered - URL Bar =======================================================*/
@include Option("userChrome.centered.urlbar") {
@import "urlbar";
}
/*= Centered - Bookmark Bar ==================================================*/
@include Option("userChrome.centered.bookmarkbar") {
@import "bookmarkbar";
}

10
src/centered/_tab.scss Normal file
View file

@ -0,0 +1,10 @@
@include Option("userChrome.centered.tab") {
@import "tab/layout";
@include NotOption("userChrome.centered.tab.label") {
@import "tab/content";
}
@include Option("userChrome.centered.tab.label") {
@import "tab/label";
}
}

View file

@ -0,0 +1,9 @@
// Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/urlbar_centered_text.css made available under Mozilla Public License v. 2.0
// See the above repository for updates as well as full license text.
#urlbar:not([focused]) {
#urlbar-input,
.urlbar-input {
text-align: center !important;
}
}

View file

@ -0,0 +1,4 @@
.tab-icon-stack {
-moz-box-flex: 1;
justify-content: end;
}

View file

@ -0,0 +1,15 @@
/* Based on https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/centered_tab_label.css */
.tab-label-container {
display: grid;
justify-content: safe center;
align-items: safe center;
}
.tab-label,
.tab-secondary-label {
overflow: hidden;
}
.tabbrowser-tab[selected]:not(:hover) .tab-label-container:not([textoverflow]),
.tabbrowser-tab:not(:hover,[pinned]) .tab-label-container:not([textoverflow]) {
margin-inline-end: 5px;
}

View file

@ -1,14 +1,3 @@
/* Based on https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/centered_tab_label.css */
.tab-label-container {
display: grid;
justify-content: safe center;
align-items: safe center;
}
.tab-label,
.tab-secondary-label {
overflow: hidden;
}
.tabbrowser-tab[selected]:not(:hover) .tab-label-container:not([textoverflow]),
.tabbrowser-tab:not(:hover,[pinned]) .tab-label-container:not([textoverflow]) {
margin-inline-end: 5px;
@ -18,7 +7,7 @@
#tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab:not(:hover,[pinned]) .tab-label-container:not([textoverflow]) {
margin-inline-end: 1px;
}
#tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab:not([selected]):not(:hover, [pinned]) .tab-label-container:not([textoverflow]) {
margin-inline-end: 19px;
#tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab:not([selected]):not(:hover, [pinned]) .tab-label-container label {
padding-inline-end: 18px;
}
}

View file

@ -29,7 +29,7 @@
/** Activity Stream - Menu Icons ********************************************/
@include Option("userChrome.icon.context_menu") {
@import "../icons/layout_activity_stream";
@import "../icons/layout/activity_stream";
@import "../icons/activity_stream";
}

View file

@ -1,6 +1,6 @@
@-moz-document url("chrome://browser/content/places/places.xhtml"),
url("about:downloads") {
@import "../icons/layout_menu_contents";
@import "../icons/layout/menu_contents";
/*= Context Menu ===========================================================*/
@include Option("userChrome.icon.context_menu") {

View file

@ -0,0 +1,5 @@
@-moz-document url-prefix("about:"),
url-prefix("chrome://browser/content/places/places.xhtml"),
regexp("^(((jar:)?file:\/\/\/)|(chrome:\/\/)).*\/$") {
@import "../theme/monospace";
}

View file

@ -104,6 +104,7 @@ xul|search-textbox.tabsFilter,
/* Animation */
transition: margin-inline-start 0.25s var(--animation-easing-function), opacity 0.25s ease-in-out,
visibility 0s linear !important;
will-change: margin-inline-start, opacity, visibility;
&[hidden="true"] {
display: -moz-box !important;

91
src/hidden/_index.scss Normal file
View file

@ -0,0 +1,91 @@
@include OneLinerNavbarContent() {
@include Option("userChrome.hidden.tabbar") {
#TabsToolbar {
display: none !important;
}
}
@include Option("userChrome.hidden.navbar") {
#nav-bar {
visibility: collapse; /* display: none is not work */
}
}
}
@include Option("userChrome.hidden.tab_icon") {
.tabbrowser-tab:not([pinned="true"]) {
@include NotOption("userChrome.hidden.tab_icon.always") {
.tab-icon-image {
display: none;
}
}
@include Option("userChrome.hidden.tab_icon.always") {
.tab-icon-stack {
display: none;
}
}
}
}
@include Option("userChrome.hidden.sidebar_header") {
@include NotOption("userChrome.hidden.sidebar_header.vertical_tab_only") {
#sidebar-header {
display: none !important;
}
}
@include Option("userChrome.hidden.sidebar_header.vertical_tab_only") {
#sidebar-box:is(
[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"],
[sidebarcommand="tabcenter-reborn_ariasuni-sidebar-action"],
[sidebarcommand="sidebartabs_asamuzak_jp-sidebar-action"]
) #sidebar-header {
display: none !important;
}
}
}
@include Option("userChrome.hidden.urlbar_iconbox") {
#identity-box[pageproxystate="valid"] {
&.notSecureText #identity-icon-label,
&.chromeUI #identity-icon-box,
&.extensionPage #identity-icon-box {
display: none;
}
&.notSecureText #identity-icon-box {
padding-inline-end: 5px; /* Original: 8px */
}
}
}
#PlacesToolbarItems .bookmark-item {
@include Option("userChrome.hidden.bookmarkbar_icon") {
> .toolbarbutton-icon {
display: none;
}
}
@include Option("userChrome.hidden.bookmarkbar_label") {
> .toolbarbutton-text {
visibility: collapse; /* display: none is not work */
}
}
}
@include Option("userChrome.hidden.disabled_menu") {
menu,
menuitem:not(#context-back, #context-forward) {
&[disabled="true"] {
display: none !important;
}
}
@include NativeMenu {
#context-back,
#context-forward {
&[disabled="true"] {
display: none !important;
}
}
}
}

33
src/icons/_index.scss Normal file
View file

@ -0,0 +1,33 @@
/** Library - Icons Replace ***************************************************/
@include Option("userChrome.icon.library") {
@import "../library/chrome";
}
/** Panel - Icons *************************************************************/
@include Option("userChrome.icon.panel") {
@import "layout/panel";
@import "panel";
}
/** Menu - Icons Layout *******************************************************/
@include Option("userChrome.icon.menu") {
@import "layout/menu";
@import "layout/bookmark_menu";
@include Option("userChrome.icon.context_menu") {
@import "context_menu";
}
@include Option("userChrome.icon.global_menubar") {
@import "global_menubar";
}
@include Option("userChrome.icon.global_menu") {
@import "global_menu";
}
}
/** Libray Menu ***************************************************************/
@include Option("userChrome.icon.library") {
@include Option("userChrome.icon.menu") {
@import "library";
}
}

View file

@ -204,3 +204,6 @@ menuitem.searchbar-clear-history {
--menuitem-image: url("chrome://global/skin/icons/settings.svg");
}
}
#treestyletab_piro_sakura_ne_jp-menuitem-_context_sendTabsToDevice\:manage {
--menuitem-image: url("chrome://global/skin/icons/settings.svg");
}

View file

@ -1,43 +1,86 @@
/*= tabContextMenu ===========================================================*/
#context_openANewTab {
#context_openANewTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_newTab,
#tabcenter-reborn_ariasuni-menuitem-_newTabContextMenuOpenAlternatePosition,
#sidebartabs_asamuzak_jp-menuitem-_newTab {
--menuitem-image: url("chrome://browser/skin/new-tab.svg");
}
#tabcenter-reborn_ariasuni-menuitem-_newTabContextMenuOpenInWindow {
--menuitem-image: url("chrome://browser/skin/window.svg");
}
#tabcenter-reborn_ariasuni-menuitem-_newTabContextMenuOpenInPrivateWindow {
--menuitem-image: url("chrome://browser/skin/privateBrowsing.svg");
}
#context_reloadTab,
#context_reloadSelectedTabs {
#context_reloadSelectedTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_reloadTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_noContextTab\:context_reloadTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:reloadTree,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuReloadTab,
#sidebartabs_asamuzak_jp-menuitem-_reloadTab,
#sidebartabs_asamuzak_jp-menuitem-_reloadAllTabs {
--menuitem-image: url("../icons/reload.svg");
}
#context_toggleMuteTab,
#context_toggleMuteSelectedTabs {
#context_toggleMuteSelectedTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_toggleMuteTab-mute,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuMuteTab,
#sidebartabs_asamuzak_jp-menuitem-_muteTab {
--menuitem-image: url("chrome://browser/skin/tabbrowser/tab-audio-muted-small.svg");
}
#context_toggleMuteTab[muted],
#context_toggleMuteSelectedTabs[muted] {
#context_toggleMuteSelectedTabs[muted],
#treestyletab_piro_sakura_ne_jp-menuitem-_context_toggleMuteTab-unmute,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuMuteTab[label="Unmute Tab"],
#sidebartabs_asamuzak_jp-menuitem-_muteTab[label="Unmute Tab"] {
--menuitem-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
}
#context_pinTab,
#context_pinSelectedTabs {
#context_pinSelectedTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_pinTab,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuPinTab,
#sidebartabs_asamuzak_jp-menuitem-_pinTab {
--menuitem-image: url("../icons/pin-tab.svg");
}
#context_unpinTab,
#context_unpinSelectedTabs {
#context_unpinSelectedTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_unpinTab,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuPinTab[label="Unpin Tab"],
#sidebartabs_asamuzak_jp-menuitem-_pinTab[label="Unpin Tab"] {
--menuitem-image: url("../icons/unpin-tab.svg");
}
#context_duplicateTab,
#context_duplicateTabs {
#context_duplicateTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_duplicateTab,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuDuplicateTab,
#sidebartabs_asamuzak_jp-menuitem-_dupeTab {
--menuitem-image: url("../icons/notebook-subsection.svg");
}
#tabcenter-reborn_ariasuni-menuitem-_contextMenuUnloadTab {
}
#context_bookmarkTab,
#context_bookmarkSelectedTabs {
#context_bookmarkSelectedTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_bookmarkTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_noContextTab\:context_bookmarkSelected,
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:bookmarkTree,
#sidebartabs_asamuzak_jp-menuitem-_bookmarkTab,
#sidebartabs_asamuzak_jp-menuitem-_bookmarkAllTabs {
--menuitem-image: url("chrome://browser/skin/bookmark.svg");
}
#context_moveTabOptions {
#context_moveTabOptions,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_moveTab,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuMoveTab,
#sidebartabs_asamuzak_jp-menuitem-_moveTab {
--menuitem-image: url("../icons/arrow-swap.svg");
}
#context_sendTabToDevice {
#context_sendTabToDevice,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_sendTabsToDevice {
--menuitem-image: url("../icons/send-to-device.svg");
}
#treestyletab_piro_sakura_ne_jp-menuitem-_context_topLevel_sendTreeToDevice {
}
#context_sendTabToDevice:is([disabled="true"]) + #context_shareTabURL, /* Legacy */
#context_sendTabToDevice:is([disabled="true"]) + menuitem.share-tab-url-item {
@ -50,22 +93,52 @@
--menuitem-image: url("../icons/share.svg");
}
}
#context_reopenInContainer {
#context_reopenInContainer,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_reopenInContainer,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuOpenInContextualTab,
#sidebartabs_asamuzak_jp-menuitem-_openNewTabInContainer,
#sidebartabs_asamuzak_jp-menuitem-_reopenTabInContainer {
--menuitem-image: url("../icons/container-openin-16.svg");
}
#context_selectAllTabs {
#sidebartabs_asamuzak_jp-menuitem-_reloadAllTabs {
}
#context_selectAllTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_selectAllTabs,
#treestyletab_piro_sakura_ne_jp-menuitem-_noContextTab\:context_selectAllTabs,
#sidebartabs_asamuzak_jp-menuitem-_selectAllTabs {
--menuitem-image: url("../icons/tab-multiple.svg");
}
#context_closeTab {
#sidebartabs_asamuzak_jp-menuitem-_tabGroup {
}
#context_closeTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_closeTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:closeTree,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuCloseTab,
#sidebartabs_asamuzak_jp-menuitem-_closeTab {
--menuitem-image: url("chrome://global/skin/icons/close.svg");
}
#tabcenter-reborn_ariasuni-menuitem-_contextMenuCloseTabs,
#sidebartabs_asamuzak_jp-menuitem-_closeMultipleTabs {
}
#context_closeTabOptions {
}
#context_undoCloseTab {
#context_undoCloseTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_context_undoCloseTab,
#treestyletab_piro_sakura_ne_jp-menuitem-_noContextTab\:context_undoCloseTab,
#tabcenter-reborn_ariasuni-menuitem-_contextMenuUndoCloseTab,
#sidebartabs_asamuzak_jp-menuitem-_undoCloseTab {
--menuitem-image: url("../icons/undo.svg");
}
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:collapseTreeRecursively,
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:collapseAll,
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:expandTreeRecursively {
}
#treestyletab_piro_sakura_ne_jp-menuitem-_grouped\:expandAll {
}
/*= new-tab-button-popup =====================================================*/
#new-tab-button-popup > menuitem[command="Browser:NewUserContextTab"],
.new-tab-popup > menuitem[command="Browser:NewUserContextTab"] {

View file

@ -1,4 +1,4 @@
@import "./layout_menu_common";
@import "./menu_common";
//-- Mixin ---------------------------------------------------------------------
// Components

View file

@ -1,4 +1,4 @@
@import "../icons/layout_menu_common";
@import "./menu_common";
//-- Mixin ---------------------------------------------------------------------
$_placesPopupSet: "menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)";

View file

@ -4,6 +4,7 @@
@use "utils/theme" as *;
@use "utils/accent_color" as *;
@use "utils/native_menu" as *;
@use "utils/one_liner" as *;
@use "utils/proton_elements" as Proton;
@use "sass:selector";
@ -18,37 +19,8 @@
/** Compatibility Fixes *******************************************************/
@import "compatibility/index";
/** System Default Theme ******************************************************/
@include Option("userChrome.theme.system_default") {
@import "theme/system_default_theme";
}
/** Fully Theme Mode **********************************************************/
/* Default Themes
https://github.com/mozilla/gecko-dev/blob/master/toolkit/mozapps/extensions/default-theme/manifest.json
https://github.com/mozilla/gecko-dev/blob/master/browser/themes/addons/light/manifest.json
https://github.com/mozilla/gecko-dev/blob/master/browser/themes/addons/dark/manifest.json
*/
@include Option("userChrome.theme.proton_color") {
@import "theme/proton_color";
@include Option("userChrome.theme.proton_color.dark_blue_accent") {
@import "theme/dark_blue_accent";
}
}
@include Option("userChrome.theme.fully_color") {
@import "theme/fully_color";
}
/* Fully Dark Mode ************************************************************/
@include Option("userChrome.theme.fully_dark") {
@import "theme/fully_dark";
}
/* Proton Theme Mode **********************************************************/
@include Option("userChrome.theme.proton_chrome") {
@import "theme/proton_chrome";
}
/** Theme *********************************************************************/
@import "theme/index";
/** Decoration ****************************************************************/
@import "decoration/index";
@ -62,54 +34,38 @@
/** Tab Bar UI ****************************************************************/
@import "tabbar/index";
/** Tab UI ****************************************************************/
@import "tab/index";
/** Url View UI ***************************************************************/
@import "urlview/index";
/** Panel UI ******************************************************************/
@import "panel/index";
/** Sidebar UI ****************************************************************/
@import "sidebar/index";
/** Fullscreen - Overlap toolbar **********************************************/
@import "fullscreen/index";
/** Library - Icons Replace ***************************************************/
@include Option("userChrome.icon.library") {
@import "library/chrome";
}
/** Centered ******************************************************************/
@import "centered/index";
/** Panel - Icons *************************************************************/
@include Option("userChrome.icon.panel") {
@import "icons/layout_panel";
@import "icons/panel";
}
/** Auto Hide *****************************************************************/
@import "autohide/index";
/** Menu - Icons Layout *******************************************************/
@include Option("userChrome.icon.menu") {
@import "icons/layout_menu";
@import "icons/layout_bookmark_menu";
/** Hidden ********************************************************************/
@import "hidden/index";
@include Option("userChrome.icon.context_menu") {
@import "icons/context_menu";
}
@include Option("userChrome.icon.global_menubar") {
@import "icons/global_menubar";
}
@include Option("userChrome.icon.global_menu") {
@import "icons/global_menu";
}
}
/** Icons *********************************************************************/
@import "icons/index";
/** Libray Menu ***************************************************************/
@include Option("userChrome.icon.library") {
@include Option("userChrome.icon.menu") {
@import "icons/library";
}
}
/*= Waterfox =================================================================*/
/** Waterfox ******************************************************************/
@import "icons/waterfox";
@include Option("userChrome.theme.fully_color") {
@import "theme/waterfox";
}
/*= Tor Browser ==============================================================*/
/** Tor Browser ***************************************************************/
@import "icons/tor_browser";

View file

@ -34,6 +34,11 @@
@import "contents/proton_contents";
}
/** Monospace *****************************************************************/
@include Option("userContent.page.monospace") {
@import "contents/monospace";
}
/** Menu - Icons Layout *******************************************************/
@include Option("userChrome.icon.menu") {
@import "contents/context_menu";

View file

@ -26,12 +26,12 @@
/*= Nav Bar - Reduce Width ===================================================*/
@include Option("userChrome.padding.navbar_width") {
@import "nav_bar";
@import "navbar";
}
/*= URL Bar - Reduce Padding =================================================*/
@include Option("userChrome.padding.urlbar") {
@import "url_bar";
@import "urlbar";
}
@include Option("userChrome.padding.urlView_expanding") {
@import "urlview_expanding";
@ -42,12 +42,17 @@
/*= BookMark Bar - Reduce Height =============================================*/
@include Option("userChrome.padding.bookmarkbar") {
@import "bookmark_bar";
@import "bookmarkbar";
}
/*= Info Bar - Reduce Padding ================================================*/
@include Option("userChrome.padding.infobar", "userChrome.autohide.infobar") {
#tab-notification-deck notification-message[message-bar-type="infobar"]:not([style*="margin-top"]) {
margin: var(--infobar-message-margin, 0 4px var(--infobar-message-vertical-margin, 8px)) !important;
}
}
@include Option("userChrome.padding.infobar") {
@import "info_bar";
@import "infobar";
}
/*= Menu - Reduce Padding ====================================================*/

View file

@ -1,32 +1,42 @@
:root:not([uidensity]) #tab-notification-deck {
--infobar-message-margin: 0 4px 3px;
}
:root[uidensity="compact"] #tab-notification-deck {
--infobar-message-margin: 0 4px 2px;
}
#tab-notification-deck notification-message[message-bar-type="infobar"]:not([style*="margin-top"]) {
margin: var(--infobar-message-margin, 0 4px 4px) !important;
}
--infobar-message-vertical-margin: 3px;
:root:not([uidensity]) notification-message[message-bar-type="infobar"] {
--infobar-vertical-margin: 7px;
--infobar-button-vertical-margin: 3px;
}
:root[uidensity="compact"] notification-message[message-bar-type="infobar"] {
:root[uidensity="compact"] #tab-notification-deck {
--infobar-message-vertical-margin: 2px;
--infobar-vertical-margin: 6px;
--infobar-button-vertical-margin: 2px;
}
:root[uidensity="touch"] #tab-notification-deck {
--infobar-message-vertical-margin: 4px;
--infobar-vertical-margin: 8px;
--infobar-button-vertical-margin: 4px;
}
:root:not([uidensity]) #tab-notification-deck,
:root:not([uidensity]) notification-message[message-bar-type="infobar"] {
}
:root[uidensity="compact"] #tab-notification-deck,
:root[uidensity="compact"] notification-message[message-bar-type="infobar"] {
}
:root[uidensity="touch"] #tab-notification-deck,
:root[uidensity="touch"] notification-message[message-bar-type="infobar"] {
}
.infobar > .icon {
margin-block: var(--infobar-vertical-margin, 8px) !important; /* Original: 8px */
margin-block: var(--infobar-vertical-margin) !important; /* Original: 8px */
}
.notification-message {
padding-block: var(--infobar-vertical-margin, 8px) !important; /* Original: 8px */
padding-block: var(--infobar-vertical-margin) !important; /* Original: 8px */
}
.notification-button-container > .notification-button {
margin-block: var(--infobar-button-vertical-margin, 4px) !important; /* Original: 4px */
margin-block: var(--infobar-button-vertical-margin) !important; /* Original: 4px */
}
.notification-close {
margin: var(--infobar-button-vertical-margin, 4px) 8px !important; /* Original: 4px 8px */
margin: var(--infobar-button-vertical-margin) 8px !important; /* Original: 4px 8px */
}
/* Hard coded for compatibility - Disappearing phenomenon */

View file

@ -1,24 +1,28 @@
/* Toolbar Height */
@include Option("userChrome.tab.lepton_like_padding") {
:root:not([uidensity]) #TabsToolbar {
--tab-min-height: 36px;
}
:root[uidensity="compact"] #TabsToolbar {
--tab-min-height: 32px;
}
:root[uidensity="touch"] #TabsToolbar {
--tab-min-height: 41px;
:root {
&:not([uidensity]) {
--tab-min-height: 36px !important;
}
&[uidensity="compact"] {
--tab-min-height: 32px !important;
}
&[uidensity="touch"] {
--tab-min-height: 41px !important;
}
}
}
@include Option("userChrome.tab.photon_like_padding") {
:root:not([uidensity]) #TabsToolbar {
--tab-min-height: 32px;
}
:root[uidensity="compact"] #TabsToolbar {
--tab-min-height: 29px;
}
:root[uidensity="touch"] #TabsToolbar {
--tab-min-height: 41px;
:root {
&:not([uidensity]) {
--tab-min-height: 32px !important;
}
&[uidensity="compact"] {
--tab-min-height: 29px !important;
}
&[uidensity="touch"] {
--tab-min-height: 41px !important;
}
}
/* Top Margin */
@ -29,11 +33,13 @@
}
@include NotOption("userChrome.tab.lepton_like_padding") {
@include NotOption("userChrome.tab.photon_like_padding") {
:root:not([uidensity]) #TabsToolbar {
--tab-min-height: 36px; /* 38px -> 36px */
}
:root[uidensity="compact"] #TabsToolbar {
--tab-min-height: 29px; /* 36px -> 29px */
:root {
&:not([uidensity]) {
--tab-min-height: 36px !important; /* 38px -> 36px */
}
&[uidensity="compact"] {
--tab-min-height: 29px !important; /* 36px -> 29px */
}
}
}
}

View file

@ -1,9 +1,13 @@
/* Titlebar Space */
:root {
--uc-title-pre-spacer: 30px; /* Original: 40px */
--uc-title-post-spacer: 25px; /* Original: 40px */
}
.titlebar-spacer[type="pre-tabs"] {
width: 30px !important; /* Original: 40px */
width: var(--uc-title-pre-spacer) !important;
}
.titlebar-spacer[type="post-tabs"] {
width: 25px !important; /* Original: 40px */
width: var(--uc-title-post-spacer) !important;
}
/* Tabbar Buttons */
@ -55,15 +59,16 @@
}
/* Tab - Max Size */
@include NotOption("userChrome.tab.photon_like_padding") {
:root {
:root {
@include NotOption("userChrome.tab.photon_like_padding") {
--tab-max-width: 240px;
}
}
@include Option("userChrome.tab.photon_like_padding") {
:root {
@include Option("userChrome.tab.photon_like_padding") {
--tab-max-width: 225px;
}
@include OneLiner {
--tab-max-width: 180px;
}
}
.tabbrowser-tab[fadein]:not([pinned]):not([style*="max-width"]) {
max-width: var(--tab-max-width) !important; /* Original: 225px */

View file

@ -35,6 +35,7 @@
@include Option("userChrome.rounding.square_menupopup") {
xul|menupopup {
--panel-border-radius: 0px !important;
border-radius: 0 !important;
}
}

1
src/sidebar/_index.scss Normal file
View file

@ -0,0 +1 @@
@import "overlap";

66
src/sidebar/_overlap.scss Normal file
View file

@ -0,0 +1,66 @@
@include Option("userChrome.sidebar.overlap", "userChrome.autohide.sidebar") {
#sidebar-box {
/* Original
min-width: 14em;
width: 18em;
max-width: 36em;
*/
--uc-sidebar-width: 40px;
--uc-sidebar-activate-width: 18em;
--uc-sidebar-activate-width-reverse: calc(-1 * var(--uc-sidebar-activate-width));
--uc-sidebar-fullscreen-width: 4px;
--uc-sidebar-shadow-color: #28282F;
--uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */
z-index: 1 !important;
position: relative !important;
box-shadow: 1px 0px 15px -10px var(--uc-sidebar-shadow-color);
&[positionend="true"] {
box-shadow: -1px 0px 15px -10px var(--uc-sidebar-shadow-color);
}
}
#sidebar {
display: block;
}
#sidebar-splitter {
display: none !important;
}
}
@include Option("userChrome.sidebar.overlap") {
#sidebar-box[positionend="true"] {
direction: rtl;
}
#sidebar-header {
background-color: var(--sidebar-background-color) !important;
color: var(--sidebar-text-color) !important;
overflow: hidden;
}
@include NotOption("userChrome.autohide.sidebar") {
#sidebar-box,
#sidebar {
min-width: var(--uc-sidebar-activate-width) !important;
max-width: var(--uc-sidebar-activate-width) !important;
}
#sidebar-box {
margin-inline-start: var(--uc-sidebar-activate-width-reverse) !important;
will-change: padding-inline;
&:not([hidden="true"]) {
padding-inline-start: var(--uc-sidebar-activate-width);
}
@include Animate {
transition: padding-inline-start 0.25s var(--animation-easing-function), opacity 0.25s ease-in-out,
visibility 0s linear !important;
}
}
}
}

View file

@ -10,7 +10,9 @@
/** Clipped tabs - Show close button at pinned tab ****************************/
@include Option("userChrome.tab.close_button_at_pinned") {
@import "clipped_tab/pinned_close_button";
@include NotOption("userChrome.tabbar.as_titlebar") {
@import "clipped_tab/pinned_close_button";
}
}
/** Clipped tabs - Always show tab icon ***************************************/

41
src/tab/_index.scss Normal file
View file

@ -0,0 +1,41 @@
/*= Tab - Connect to window ==============================================*/
@include Option("userChrome.tab.connect_to_window") {
@import "connect_to_window";
}
/*= Selected Tab =============================================================*/
@import "selected_tab";
/*= Unselected Tab - Divide line =============================================*/
@import "unselected_tab";
/*= New tab button ============================================================*/
@import "newtab_button";
/*= Unloaded Tab - Contents Opacity ===========================================*/
@include Option("userChrome.tab.unloaded") {
@import "unload_tab";
}
/*= Clipped tabs =============================================================*/
@import "clipped_tab";
/*= Sound Tab ================================================================*/
@import "sound_tab";
/*= PictureInPicture Tab - Show PIP Icon =====================================*/
@include Option("userChrome.tab.pip") {
@import "picture_in_picture_tab";
}
/*= Container Tab - Color line at icon's bottom ==============================*/
@include Option("userChrome.tab.container") {
@include NotOption("userChrome.tabbar.as_titlebar") {
@import "container_tab";
}
}
/*= Crashed Tab - Don't show Favicons ========================================*/
@include Option("userChrome.tab.crashed") {
@import "crashed_tab";
}

View file

@ -1,6 +1,8 @@
/*= Sound Tab - Hide Label ===================================================*/
@include Option("userChrome.tab.sound_hide_label") {
@import "sound_tab/hide_label";
@include NotOption("userChrome.tab.sound_show_label") {
@import "sound_tab/hide_label";
}
}
/*= Sound Tab - Show Label ===================================================*/

View file

@ -1,3 +1,30 @@
//-- Mixin ---------------------------------------------------------------------
@mixin _hidden_tabIcon_soundTabLabel() {
@include NotOption("userChrome.hidden.tab_icon") {
@content;
}
@include Option("userChrome.hidden.tab_icon") {
@include NotOption("userChrome.hidden.tab_icon.always") {
@content;
}
}
}
@mixin _hidden_tabIcon_soundTabIcon() {
@include NotOption("userChrome.hidden.tab_icon") {
&:not([image]) {
@content;
}
}
@include Option("userChrome.hidden.tab_icon") {
@include NotOption("userChrome.hidden.tab_icon.always") {
@content;
}
}
}
//------------------------------------------------------------------------------
/* Makes the favicons always visible (also on hover) */
.tab-icon-image:not([pinned]) {
opacity: 1 !important;
@ -26,8 +53,12 @@
fill-opacity: 0.8 !important;
opacity: 1 !important;
}
.tabbrowser-tab:not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) .tab-label {
transform: translateX(4px);
/* Label */
@include _hidden_tabIcon_soundTabLabel {
.tabbrowser-tab:not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) .tab-label {
transform: translateX(4px);
}
}
/* Animate */
@ -44,18 +75,22 @@
/* None exist favicon - Size bigger */
@include NotOption("userChrome.tab.always_show_tab_icon") {
.tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing], [crashed]) {
transform: translateX(-0.5px) translateY(-1px);
inset-inline-end: 0 !important;
margin-inline-end: 0 !important;
padding: 0 !important;
}
.tabbrowser-tab:not([image]):is([soundplaying], [muted], [activemedia-blocked]) .tab-icon-image:not([pinned]) {
opacity: 0 !important; /* Favicon hidden */
}
.tabbrowser-tab:not([image]):not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked])
.tab-label {
transform: translateX(3px);
.tabbrowser-tab {
@include _hidden_tabIcon_soundTabIcon {
.tab-icon-overlay:not([pinned], [sharing], [crashed]) {
transform: translateX(-0.5px) translateY(-1px);
inset-inline-end: 0 !important;
margin-inline-end: 0 !important;
padding: 0 !important;
}
&:is([soundplaying], [muted], [activemedia-blocked]) .tab-icon-image:not([pinned]) {
opacity: 0 !important; /* Favicon hidden */
}
&:not([image]):not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked])
.tab-label {
transform: translateX(3px);
}
}
}
}

View file

@ -57,6 +57,16 @@
.tabbrowser-tab:not([visuallyselected], [multiselected], :hover, :first-child) .tab-background::before {
opacity: var(--tab-separator-opacity);
}
@include Option("userChrome.tabbar.one_liner") {
@include NotOption("userChrome.tabbar.one_liner.tabbar_first") {
@include OneLinerContent {
.tabbrowser-tab:not([visuallyselected], [multiselected], :hover):first-child .tab-background::before {
opacity: var(--tab-separator-opacity);
transform: translateX(-1.5px) translateY(calc(-50% + 1px));
}
}
}
}
@include Option("userChrome.tab.newtab_button_like_tab") {
#tabs-newtab-button:not(:hover, [open])::before {
opacity: var(--tab-separator-opacity);

View file

@ -0,0 +1,87 @@
//-- Mixin ---------------------------------------------------------------------
@mixin _asTitlebar_preSpacer() {
@include NotOption("userChrome.centered.tab") {
@content;
}
@include Option("userChrome.centered.tab") {
@include Option("userChrome.centered.tab.label") {
@content;
}
}
}
//------------------------------------------------------------------------------
:root:not([tabsintitlebar="true"]) #tabbrowser-tabs, /* Show only */
#scrollbutton-up, /* Defaults */
#scrollbutton-down,
.titlebar-spacer[type="pre-tabs"],
spacer:is([part="overflow-start-indicator"], [part="overflow-end-indicator"]),
.tabbrowser-tab:not([selected="true"]),
.tabbrowser-tab[selected="true"] .tab-background,
.tabbrowser-tab[selected="true"] .tab-stack:is(::before, ::after),
.tabbrowser-tab[selected="true"] .tab-close-button,
#tabs-newtab-button {
display: none !important;
}
.tabbrowser-tab[selected="true"] {
-moz-window-dragging: drag;
--tab-max-width: 100vw;
min-width: calc(var(--uc-tabbar-width, 100vw) - var(--uc-widow-control-space)) !important;
max-width: var(--tab-max-width) !important;
margin-inline-start: calc(var(--tab-shadow-max-size) * -1) !important;
// padding-inline-start: calc(var(--tab-shadow-max-size) + 1px) !important;
&[pinned="true"] {
-moz-box-flex: 100;
max-width: var(--tab-max-width) !important;
}
.tab-label-container {
margin-inline: 0 !important;
}
}
.tab-content {
margin-inline: auto;
width: 100%;
}
/* Pinned */
#tabbrowser-tabs[positionpinnedtabs] > #tabbrowser-arrowscrollbox > .tabbrowser-tab[pinned][selected="true"] {
position: relative !important;
}
#tabbrowser-tabs {
--tab-overflow-pinned-tabs-width: 0 !important;
padding-inline: 0 !important; /* Original: var(--tab-overflow-pinned-tabs-width) 0; */
}
.tab-throbber,
.tab-icon-pending,
.tab-icon-image,
.tab-sharing-icon-overlay,
.tab-icon-overlay {
&[pinned] {
margin-inline-end: 5.5px;
}
}
.tab-label-container[pinned] {
width: unset !important;
}
/* Padding */
@include _asTitlebar_preSpacer {
#tabbrowser-arrowscrollbox {
margin-inline: 2px !important;
}
:root[sizemode="normal"] #tabbrowser-arrowscrollbox {
margin-inline: 6px !important;
}
}
@include Option("browser.tabs.tabmanager.enabled") {
:root:not([tabsintitlebar="true"]) #tabbrowser-tabs:not([overflow="true"], [hashiddentabs]) ~ #alltabs-button,
:root:not([tabsintitlebar="true"]) #tabbrowser-tabs[hasadjacentnewtabbutton]:not([overflow="true"]) ~ #new-tab-button {
display: -moz-box !important;
}
}

View file

@ -1,5 +1,5 @@
/*= Tabs on Bottom ===========================================================*/
@include Option("userChrome.tab.on_bottom", "userChrome.fullscreen.overlap") {
@include Option("userChrome.tabbar.on_bottom", "userChrome.fullscreen.overlap") {
/* Don't use display: flex at not fullscreen!! side effect #372 */
:root[sizemode="fullscreen"] #navigator-toolbox {
display: flex !important; /* Needed for content to take up entire height, compatibility with tabs on bottom */
@ -19,51 +19,26 @@
}
}
@include Option("userChrome.tab.on_bottom") {
@import "tabs_on_bottom";
@include Option("userChrome.tabbar.on_bottom") {
@include OneLinerOnBottom {
@import "on_bottom";
}
}
/*= Tab Bar - Connect to window ==============================================*/
@include Option("userChrome.tab.connect_to_window") {
@import "connect_to_window";
/*= Tab Bar - Oneliner =======================================================*/
@include OneLiner {
@import "one_liner";
}
/*= Selected Tab =============================================================*/
@import "selected_tab";
/*= Unselected Tab - Divide line =============================================*/
@import "unselected_tab";
/*= New tab button ============================================================*/
@import "newtab_button";
/*= Unloaded Tab - Contents Opacity ===========================================*/
@include Option("userChrome.tab.unloaded") {
@import "unload_tab";
/*= Tab Bar - Shared Layout ==================================================*/
@include Option("userChrome.tabbar.on_bottom", "userChrome.tabbar.one_liner", "userChrome.hidden.tabbar", "userChrome.tabbar.as_titlebar") {
@import "layout/window_control_size";
}
@include Option("userChrome.tabbar.on_bottom", "userChrome.tabbar.one_liner", "userChrome.hidden.tabbar") {
@import "layout";
}
/*= Clipped tabs =============================================================*/
@import "clipped_tab";
/*= Sound Tab ================================================================*/
@import "sound_tab";
/*= PictureInPicture Tab - Show PIP Icon =====================================*/
@include Option("userChrome.tab.pip") {
@import "picture_in_picture_tab";
}
/*= Container Tab - Color line at icon's bottom ==============================*/
@include Option("userChrome.tab.container") {
@import "container_tab";
}
/*= Crashed Tab - Don't show Favicons ========================================*/
@include Option("userChrome.tab.crashed") {
@import "crashed_tab";
}
/*= Tab Label - Make to Center ===============================================*/
@include Option("userChrome.tab.centered_label") {
@import "centered_label";
/*= Tab Bar - Show only current tab ==========================================*/
@include Option("userChrome.tabbar.as_titlebar") {
@import "as_titlebar";
}

26
src/tabbar/_layout.scss Normal file
View file

@ -0,0 +1,26 @@
@include NotOption("userChrome.tabbar.one_liner") {
@include Option("userChrome.tabbar.on_bottom", "userChrome.hidden.tabbar") {
@import "layout/window_control";
}
}
@include Option("userChrome.tabbar.one_liner") {
@include NotOption("userChrome.tabbar.one_liner.responsive") {
@include Option("userChrome.tabbar.one_liner.tabbar_first") {
@import "layout/window_control";
}
}
@include Option("userChrome.tabbar.one_liner.responsive") {
@include Option("userChrome.tabbar.on_bottom", "userChrome.hidden.tabbar") {
@media screen and (max-width: 1100px) {
@import "layout/window_control";
}
}
@include Option("userChrome.tabbar.one_liner.tabbar_first") {
@media screen and (min-width: 1100px) {
@import "layout/window_control";
}
}
}
}
@import "layout/navbar_padding";

130
src/tabbar/_on_bottom.scss Normal file
View file

@ -0,0 +1,130 @@
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/tabs_on_bottom.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/*= Tabbar - Move to bottom ==================================================*/
#titlebar {
order: 2; /* When userChrome.fullscreen.overlap */
-moz-box-ordinal-group: 2;
--tabs-navbar-shadow-size: 0px;
}
#tab-notification-deck {
order: 2; /* When userChrome.fullscreen.overlap */
-moz-box-ordinal-group: 2;
}
#TabsToolbar .titlebar-spacer {
display: none;
}
#TabsToolbar-customization-target > .toolbarbutton-1:last-child {
padding-inline-end: var(--toolbar-start-end-padding, 8px);
}
@include Option("userChrome.tabbar.on_bottom.above_bookmark") {
#PersonalToolbar {
order: 2; /* When userChrome.fullscreen.overlap */
-moz-box-ordinal-group: 2;
}
}
@include NotOption("userChrome.tabbar.on_bottom.above_bookmark") {
@include Option("userChrome.tab.connect_to_window") {
@include Option("userChrome.tab.color_like_toolbar") {
#navigator-toolbox {
border-bottom-color: var(--toolbar-bgcolor) !important; /* Original: 1px solid var(--chrome-content-separator-color); */
}
}
}
}
/*= Tabbar - Hidden at singgle tab ===========================================*/
@include Option("userChrome.tabbar.on_bottom.hidden_single_tab") {
#tabbrowser-tabs .tabbrowser-tab:only-of-type {
display: none !important;
}
#tabbrowser-tabs,
#tabbrowser-tabs arrowscrollbox {
height: auto !important;
min-height: auto !important;
}
@include Animate {
#tabbrowser-tabs {
transition: height 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay);
}
}
}
/*= Menubar - Always on top ==================================================*/
@include Option("userChrome.tabbar.on_bottom.menubar_on_top") {
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/tabs_on_bottom_menubar_on_top_patch.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
:root {
/* height if native titlebar is enabled, assumes empty menubar */
--uc-menubar-height: 20px;
--uc-menubar-padding: 1px; /* FF's menubar padding */
--uc-menubar-container-height: calc(var(--uc-menubar-height) - (2 * var(--uc-menubar-padding)));
}
:root[tabsintitlebar] {
/* height when native titlebar is disabled, more roomy so can fit buttons etc. */
--uc-menubar-height: 30px;
}
/* Menubar on top patch - use with tabs_on_bottom.css */
/* Only really useful if menubar is ALWAYS visible */
:root:not([sizemode="fullscreen"]) {
--uc-window-control-width: 0px !important;
}
/* Since menubar is statically at top, remove fake drag-space that might be set by window_control_placeholder_support.css */
:root:not([sizemode="fullscreen"]) #nav-bar {
border-inline-width: 0;
}
#navigator-toolbox{
-moz-window-dragging: drag;
}
:root[sizemode="fullscreen"] #navigator-toolbox {
padding-top: 0px !important;
}
#toolbar-menubar {
position: fixed;
display: flex;
top: var(--uc-titlebar-padding);
height: var(--uc-menubar-height);
width: 100%;
overflow: hidden;
}
:root[tabsintitlebar] #toolbar-menubar[autohide="true"]:not([inactive="true"]) {
height: var(--uc-menubar-height) !important; /* calc(var(--tab-min-height) + 2 * var(--tab-block-margin)) */
}
#toolbar-menubar > .titlebar-buttonbox-container {
height: 100%;
order: 100;
}
#toolbar-menubar > [flex] {
flex-grow: 100;
}
#toolbar-menubar > spacer[flex] {
order: 99;
flex-grow: 1;
min-width: var(--uc-window-drag-space-post);
}
#toolbar-menubar .toolbarbutton-1 {
--toolbarbutton-inner-padding: 3px;
}
#toolbar-menubar[autohide="true"] > .titlebar-buttonbox-container,
#TabsToolbar > .titlebar-buttonbox-container {
height: var(--uc-menubar-container-height);
}
:root:not([chromehidden~="menubar"], [sizemode="fullscreen"]) #toolbar-menubar:not([autohide="true"]) + #TabsToolbar > .titlebar-buttonbox-container{
visibility: collapse !important;
}
:root:not([chromehidden~="menubar"]):not([sizemode="fullscreen"]) #toolbar-menubar:not([autohide="true"]) .titlebar-buttonbox-container {
visibility: visible;
}
}

104
src/tabbar/_one_liner.scss Normal file
View file

@ -0,0 +1,104 @@
:root {
--uc-navbar-width-origin: 40vw;
--uc-navbar-width: var(--uc-navbar-width-origin);
--uc-tabbar-width: calc(100vw - var(--uc-navbar-width));
--uc-navbar-margin: calc(var(--uc-navbar-width) + var(--uc-navbar-gap, 0px));
@include Option("userChrome.autohide.fill_urlbar") {
--uc-navbar-width-origin: 50vw;
--uc-navbar-width: 24em;
}
}
#nav-bar {
--uc-navbar-double-block: calc(2 * var(--uc-navbar-block, 0px));
height: calc(var(--uc-tabbar-height) - var(--uc-navbar-double-block)) !important;
margin-top: calc(var(--uc-tabbar-hide-height) + var(--uc-navbar-double-block)) !important;
margin-bottom: var(--uc-navbar-block, 0px) !important;
transform: translateY(calc(-1 * var(--uc-navbar-block, 0px)));
}
#titlebar {
transform: translateY(var(--uc-navbar-block, 0px));
}
#TabsToolbar > .titlebar-buttonbox-container {
transform: translateY(calc(-1 * var(--uc-navbar-block, 0px)));
}
@include NotOption("userChrome.tabbar.one_liner.combine_navbar") {
:root {
--uc-navbar-gap: 10px;
--uc-navbar-block: 1.5px; // var(--tab-block-margin) or var(--tabs-navbar-shadow-size)
&[uidensity="compact"] {
--uc-navbar-block: 1px;
}
&[uidensity="touch"] {
--uc-navbar-block: 3px;
}
}
#nav-bar {
--toolbarbutton-inner-padding: 6px; /* Original: 8px */
border-radius: var(--tab-border-radius, 4px);
}
#nav-bar,
#nav-bar-customization-target {
-moz-box-align: center;
}
#urlbar[breakout] {
top: 0px !important; /* Original: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2); */
}
}
@include Option("userChrome.tabbar.one_liner.combine_navbar") {
#navigator-toolbox {
background-color: var(--toolbar-bgcolor) !important;
}
#nav-bar {
--lwt-tabs-border-color: transparent; // box-shadow
background-color: unset !important; // var(--toolbar-bgcolor)
background-image: unset !important; // var(--toolbar-bgimage)
}
}
#urlbar-container {
min-width: calc(24px + 2 * var(--toolbarbutton-inner-padding)) !important; // Original: calc(350px + 24px + 2 * var(--toolbarbutton-inner-padding))
}
#PersonalToolbar {
// for URL Bar
position: relative;
z-index: -1;
}
toolbarspring.chromeclass-toolbar-additional {
display: none !important;
}
@include NotOption("userChrome.tabbar.one_liner.tabbar_first") {
#TabsToolbar {
margin-inline-start: var(--uc-navbar-margin) !important;
}
#nav-bar {
margin-inline-end: var(--uc-tabbar-width) !important;
}
.titlebar-spacer[type="pre-tabs"] {
display: none !important;
}
}
@include Option("userChrome.tabbar.one_liner.tabbar_first") {
#TabsToolbar {
margin-inline-end: var(--uc-navbar-margin) !important;
}
#nav-bar {
margin-inline-start: var(--uc-tabbar-width) !important;
}
.titlebar-spacer[type="post-tabs"] {
display: none !important;
}
}

View file

@ -1,237 +0,0 @@
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/tabs_on_bottom.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/*= Tabbar - Move to bottom ==================================================*/
#titlebar{
order: 2; /* When userChrome.fullscreen.overlap */
-moz-box-ordinal-group: 2;
--tabs-navbar-shadow-size: 0px;
}
#tab-notification-deck {
order: 2; /* When userChrome.fullscreen.overlap */
-moz-box-ordinal-group: 2;
}
#TabsToolbar .titlebar-spacer {
display: none;
}
@include Option("userChrome.tab.on_bottom.above_bookmark") {
#PersonalToolbar {
order: 2; /* When userChrome.fullscreen.overlap */
-moz-box-ordinal-group: 2;
}
}
@include NotOption("userChrome.tab.on_bottom.above_bookmark") {
@include Option("userChrome.tab.connect_to_window") {
@include Option("userChrome.tab.color_like_toolbar") {
#navigator-toolbox {
border-bottom-color: var(--toolbar-bgcolor) !important; /* Original: 1px solid var(--chrome-content-separator-color); */
}
}
}
}
/*= Windows Control - Move to toolbar ========================================*/
:root {
--uc-titlebar-padding: 0px;
}
@include OS($win) {
:root[sizemode="maximized"][tabsintitlebar]{
--uc-titlebar-padding: 8px;
}
}
#toolbar-menubar[autohide="true"] > .titlebar-buttonbox-container,
#TabsToolbar > .titlebar-buttonbox-container{
position: fixed;
display: block;
top: var(--uc-titlebar-padding);
right:0;
height: 40px;
}
/* where window controls are on left */
@include OS($mac) {
:root{
--uc-titlebar-padding: 0px !important;
}
.titlebar-buttonbox-container{
left:0;
right: unset !important;
}
}
#navigator-toolbox {
padding-top: var(--uc-titlebar-padding) !important;
}
:root[uidensity="compact"] #TabsToolbar > .titlebar-buttonbox-container {
height: 32px;
}
#toolbar-menubar[inactive] > .titlebar-buttonbox-container {
opacity: 0;
}
.titlebar-buttonbox-container > .titlebar-buttonbox {
height: 100%;
@include OS($mac) {
margin-block: 10px;
}
}
/* At Full Screen */
:root[sizemode="fullscreen"] #window-controls {
position: fixed;
display: flex;
top: 0;
right: 0;
height: 40px;
}
:root[uidensity="compact"][sizemode="fullscreen"] #window-controls {
height: 32px;
}
@include Option("browser.fullscreen.autohide") {
:root[sizemode="fullscreen"] #navigator-toolbox:not(:hover) .titlebar-buttonbox-container {
visibility: hidden;
}
}
/* At Activated Menubar */
:root:not([chromehidden~="menubar"], [sizemode="fullscreen"]) #toolbar-menubar:not([autohide="true"]) + #TabsToolbar > .titlebar-buttonbox-container {
display: block !important;
}
:root:not([chromehidden~="menubar"]) #toolbar-menubar:not([autohide="true"]) .titlebar-buttonbox-container {
visibility: hidden;
}
/*= Navbar - Padding for window controls =====================================*/
/* Customized https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/window_control_placeholder_support.css */
:root {
--uc-window-control-width: 0px; /* Same as .titlebar-buttonbox-container - Space reserved for window controls */
--uc-window-drag-space-pre: 0px; /* Same as .titlebar-spacer[type="pre-tabs"] - Extra space reserved on both sides of the nav-bar to be able to drag the window */
--uc-window-drag-space-post: 0px; /* Same as .titlebar-spacer[type="post-tabs"] */
}
:root:is([tabsintitlebar], [sizemode="fullscreen"]) {
--uc-window-control-width: 84px; /* 84px is default value of linux */
--uc-window-drag-space-pre: 30px;
--uc-window-drag-space-post: 25px;
}
:root:is([tabsintitlebar][sizemode="maximized"], [sizemode="fullscreen"]) {
--uc-window-drag-space-pre: 0px; /* Remove pre space */
}
#nav-bar {
border-inline-start-width: var(--uc-window-drag-space-pre);
border-inline-end-width: calc(var(--uc-window-control-width) + var(--uc-window-drag-space-post));
border-inline-style: solid !important;
border-inline-color: var(--toolbar-bgcolor);
}
/* Windows */
@include OS($win7, $win8) {
:root:is([tabsintitlebar], [sizemode="fullscreen"]) {
--uc-window-control-width: 105px;
}
}
@include OS($win10) {
:root:is([tabsintitlebar], [sizemode="fullscreen"]) {
--uc-window-control-width: 138px;
}
}
/* Use this pref to check Mac OS where window controls are on left */
/* This pref defaults to true on Mac and doesn't actually do anything on other platforms. So if your system has window controls on LEFT side you can set the pref to true */
@include OS($mac) {
:root:is([tabsintitlebar], [sizemode="fullscreen"]) {
--uc-window-control-width: 72px;
}
:root[tabsintitlebar="true"]:not([inFullscreen]) #nav-bar {
border-inline-start-width: calc(var(--uc-window-control-width) + var(--uc-window-drag-space-post));
border-inline-end-width: var(--uc-window-drag-space-pre);
}
:root[sizemode="fullscreen"] #TabsToolbar > .titlebar-buttonbox-container:last-child,
:root[sizemode="fullscreen"] #window-controls {
right: unset;
}
}
/*= Menubar - Always on top ==================================================*/
@include Option("userChrome.tab.on_bottom.menubar_on_top") {
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/tabs_on_bottom_menubar_on_top_patch.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
:root {
/* height if native titlebar is enabled, assumes empty menubar */
--uc-menubar-height: 20px;
--uc-menubar-padding: 1px; /* FF's menubar padding */
--uc-menubar-container-height: calc(var(--uc-menubar-height) - (2 * var(--uc-menubar-padding)));
}
:root[tabsintitlebar] {
/* height when native titlebar is disabled, more roomy so can fit buttons etc. */
--uc-menubar-height: 30px;
}
/* Menubar on top patch - use with tabs_on_bottom.css */
/* Only really useful if menubar is ALWAYS visible */
:root:not([sizemode="fullscreen"]) {
--uc-window-control-width: 0px !important;
}
/* Since menubar is statically at top, remove fake drag-space that might be set by window_control_placeholder_support.css */
:root:not([sizemode="fullscreen"]) #nav-bar {
border-inline-width: 0;
}
#navigator-toolbox{
-moz-window-dragging: drag;
padding-top: calc(var(--uc-menubar-height) + var(--uc-titlebar-padding)) !important;
}
:root[sizemode="fullscreen"] #navigator-toolbox {
padding-top: 0px !important;
}
#toolbar-menubar {
position: fixed;
display: flex;
top: var(--uc-titlebar-padding);
height: var(--uc-menubar-height);
width: 100%;
overflow: hidden;
}
:root[tabsintitlebar] #toolbar-menubar[autohide="true"]:not([inactive="true"]) {
height: var(--uc-menubar-height) !important; /* calc(var(--tab-min-height) + 2 * var(--tab-block-margin)) */
}
#toolbar-menubar > .titlebar-buttonbox-container {
height: 100%;
order: 100;
}
#toolbar-menubar > [flex] {
flex-grow: 100;
}
#toolbar-menubar > spacer[flex] {
order: 99;
flex-grow: 1;
min-width: var(--uc-window-drag-space-post);
}
#toolbar-menubar .toolbarbutton-1 {
--toolbarbutton-inner-padding: 3px;
}
#toolbar-menubar[autohide="true"] > .titlebar-buttonbox-container,
#TabsToolbar > .titlebar-buttonbox-container {
height: var(--uc-menubar-container-height);
}
:root:not([chromehidden~="menubar"], [sizemode="fullscreen"]) #toolbar-menubar:not([autohide="true"]) + #TabsToolbar > .titlebar-buttonbox-container{
visibility: collapse !important;
}
:root:not([chromehidden~="menubar"]):not([sizemode="fullscreen"]) #toolbar-menubar:not([autohide="true"]) .titlebar-buttonbox-container {
visibility: visible;
}
}

View file

@ -0,0 +1,128 @@
/*= Navbar - Padding for window controls =====================================*/
/* Customized https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/window_control_placeholder_support.css */
//-- Mixin ---------------------------------------------------------------------
@mixin _remove_spacer_pre() {
/* Don't need pre spacer */
--uc-window-drag-space-pre: 0px;
}
@mixin _remove_spacer_post() {
/* Don't need window control */
--uc-widow-control-space: 0px;
}
@mixin _remove_spacer_oneLiner() {
@include Option("userChrome.tabbar.one_liner.tabbar_first") {
@include _remove_spacer_pre;
@include Option("userChrome.tabbar.as_titlebar") {
#tabbrowser-tabs {
@include _remove_spacer_post;
}
}
}
@include NotOption("userChrome.tabbar.one_liner.tabbar_first") {
@include NotOption("userChrome.tabbar.as_titlebar") {
@include _remove_spacer_post;
}
}
}
@mixin _oneLiner_navBar_borderPadding() {
@include NotOption("userChrome.tabbar.one_liner") {
@content;
}
@include Option("userChrome.tabbar.one_liner") {
@include Option("userChrome.tabbar.one_liner.combine_navbar") {
@content;
}
@include NotOption("userChrome.tabbar.one_liner.combine_navbar") {
@include Option("userChrome.tabbar.on_bottom", "userChrome.hidden.tabbar") {
@media screen and (max-width: 1100px) {
@content;
}
}
}
}
}
@mixin _oneLiner_navBar_marginGap() {
@include NotOption("userChrome.tabbar.one_liner.combine_navbar") {
@include NotOption("userChrome.tabbar.one_liner.responsive") {
@content;
}
@include Option("userChrome.tabbar.one_liner.responsive") {
@media screen and (min-width: 1100px) {
@content;
}
}
}
}
//------------------------------------------------------------------------------
@include Option("userChrome.tabbar.one_liner") {
:root:is([tabsintitlebar], [sizemode="fullscreen"]) {
@include NotOption("userChrome.tabbar.one_liner.responsive") {
@include _remove_spacer_oneLiner;
}
@include Option("userChrome.tabbar.one_liner.responsive") {
@media screen and (max-width: 1100px) {
@include NotOption("userChrome.tabbar.on_bottom", "userChrome.hidden.tabbar") {
@include _remove_spacer_pre;
@include _remove_spacer_post;
}
}
@media screen and (min-width: 1100px) {
@include _remove_spacer_oneLiner;
}
}
}
}
#nav-bar {
border-inline-style: solid !important;
border-inline-color: transparent;
@include _oneLiner_navBar_borderPadding {
border-inline-start-width: var(--uc-window-drag-space-pre);
border-inline-end-width: var(--uc-widow-control-space);
}
@include Option("userChrome.tabbar.one_liner") {
@include _oneLiner_navBar_marginGap {
@include NotOption("userChrome.tabbar.one_liner.tabbar_first") {
margin-inline-start: var(--uc-window-drag-space-pre) !important;
}
@include Option("userChrome.tabbar.one_liner.tabbar_first") {
margin-inline-end: var(--uc-widow-control-space) !important;
}
}
}
}
/* Use this pref to check Mac OS where window controls are on left */
/* This pref defaults to true on Mac and doesn't actually do anything on other platforms. So if your system has window controls on LEFT side you can set the pref to true */
@include OS($mac) {
:root[tabsintitlebar="true"]:not([inFullscreen]) #nav-bar {
@include _oneLiner_navBar_borderPadding {
border-inline-start-width: var(--uc-widow-control-space);
border-inline-end-width: var(--uc-window-drag-space-pre);
}
@include Option("userChrome.tabbar.one_liner") {
@include _oneLiner_navBar_marginGap {
@include NotOption("userChrome.tabbar.one_liner.tabbar_first") {
margin-inline-start: var(--uc-window-drag-space-pre, 0px) !important;
}
@include Option("userChrome.tabbar.one_liner.tabbar_first") {
margin-inline-end: var(--uc-widow-control-space, 0px) !important;
}
}
}
}
:root[sizemode="fullscreen"] #TabsToolbar > .titlebar-buttonbox-container:last-child,
:root[sizemode="fullscreen"] #window-controls {
right: unset;
}
}

View file

@ -0,0 +1,121 @@
/*= Windows Control - Move to toolbar ========================================*/
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/tabs_on_bottom.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
:root {
--uc-titlebar-padding: 0px;
}
@include OS($win) {
:root[sizemode="maximized"][tabsintitlebar] {
--uc-titlebar-padding: 8px;
}
}
#toolbar-menubar[autohide="true"] > .titlebar-buttonbox-container,
#TabsToolbar > .titlebar-buttonbox-container {
position: fixed;
display: block;
top: var(--uc-titlebar-padding);
right:0;
height: 40px;
z-index: 1;
}
/* where window controls are on left */
@include OS($mac) {
:root{
--uc-titlebar-padding: 0px !important;
}
.titlebar-buttonbox-container{
left:0;
right: unset !important;
}
}
#navigator-toolbox {
padding-top: calc(var(--uc-menubar-height, 0px) + var(--uc-titlebar-padding)) !important;
}
:root[uidensity="compact"] #TabsToolbar > .titlebar-buttonbox-container {
height: 32px;
}
#toolbar-menubar[inactive] > .titlebar-buttonbox-container {
@include NotOption("userChrome.hidden.tabbar") {
opacity: 0;
visibility: collapse;
}
@include Option("userChrome.hidden.tabbar") {
opacity: 1;
visibility: visible;
@include Option("userChrome.autohide.navbar") {
opacity: 0;
visibility: collapse;
}
}
}
#navigator-toolbox:is(:hover, :focus-within) #toolbar-menubar[inactive]:not([customizing]) > .titlebar-buttonbox-container {
@include Option("userChrome.hidden.tabbar") {
@include Option("userChrome.autohide.navbar") {
opacity: 1;
visibility: visible;
}
}
}
@include Animate {
#toolbar-menubar[inactive] > .titlebar-buttonbox-container {
transition: opacity 0.25s var(--animation-easing-function) var(--uc-autohide-toolbar-delay, 600ms),
visibility 100ms var(--animation-easing-function) 0.25s !important;
}
#navigator-toolbox:is(:hover, :focus-within) #toolbar-menubar[inactive]:not([customizing]) > .titlebar-buttonbox-container {
transition-delay: 0s !important;
}
}
.titlebar-buttonbox-container > .titlebar-buttonbox {
height: 100%;
@include OS($mac) {
margin-block: 10px;
}
}
/* At Full Screen */
:root[sizemode="fullscreen"] #window-controls {
position: fixed;
display: flex;
top: 0;
right: 0;
height: 40px;
}
:root[uidensity="compact"][sizemode="fullscreen"] #window-controls {
height: 32px;
}
@include Option("browser.fullscreen.autohide") {
:root[sizemode="fullscreen"] #navigator-toolbox:not(:hover) .titlebar-buttonbox-container {
visibility: hidden;
}
}
@include Option("userChrome.hidden.tabbar") {
:root[inFullscreen]:not([macOSNativeFullscreen]) {
#toolbar-menubar {
visibility: visible !important;
min-height: 0 !important;
max-height: 0 !important;
}
#menubar-items {
visibility: collapse !important;
}
}
}
/* At Activated Menubar */
:root:not([chromehidden~="menubar"], [sizemode="fullscreen"]) #toolbar-menubar:not([autohide="true"]) + #TabsToolbar > .titlebar-buttonbox-container {
display: block !important;
}
:root:not([chromehidden~="menubar"]) #toolbar-menubar:not([autohide="true"]) .titlebar-buttonbox-container {
@include NotOption("userChrome.hidden.tabbar") {
visibility: hidden;
}
}

View file

@ -0,0 +1,27 @@
:root {
--uc-window-control-width: 0px; /* Same as .titlebar-buttonbox-container - Space reserved for window controls */
--uc-window-drag-space-pre: 0px; /* Same as .titlebar-spacer[type="pre-tabs"] - Extra space reserved on both sides of the nav-bar to be able to drag the window */
--uc-window-drag-space-post: 0px; /* Same as .titlebar-spacer[type="post-tabs"] */
--uc-widow-control-space: calc(var(--uc-window-control-width) + var(--uc-window-drag-space-post));
}
:root:is([tabsintitlebar], [sizemode="fullscreen"]) {
--uc-window-control-width: 84px; /* 84px is default value of linux */
--uc-window-drag-space-pre: var(--uc-title-pre-spacer, 40px); // 30px
--uc-window-drag-space-post: var(--uc-title-post-spacer, 40px); // 25px
@include OS($win7, $win8) {
--uc-window-control-width: 105px;
}
@include OS($win10) {
--uc-window-control-width: 138px;
}
@include OS($mac) {
--uc-window-control-width: 72px;
}
}
:root:is([tabsintitlebar][sizemode="maximized"], [sizemode="fullscreen"]) {
--uc-window-drag-space-pre: 0px; /* Remove pre space */
}

35
src/theme/_index.scss Normal file
View file

@ -0,0 +1,35 @@
/*= System Default Theme =====================================================*/
@include Option("userChrome.theme.system_default") {
@import "system_default_theme";
}
/*= Fully Theme Mode =========================================================*/
// Default Themes
// https://github.com/mozilla/gecko-dev/blob/master/toolkit/mozapps/extensions/default-theme/manifest.json
// https://github.com/mozilla/gecko-dev/blob/master/browser/themes/addons/light/manifest.json
// https://github.com/mozilla/gecko-dev/blob/master/browser/themes/addons/dark/manifest.json
@include Option("userChrome.theme.proton_color") {
@import "proton_color";
@include Option("userChrome.theme.proton_color.dark_blue_accent") {
@import "dark_blue_accent";
}
}
@include Option("userChrome.theme.fully_color") {
@import "fully_color";
}
/*= Fully Dark Mode ==========================================================*/
@include Option("userChrome.theme.fully_dark") {
@import "fully_dark";
}
/*= Proton Theme Mode ========================================================*/
@include Option("userChrome.theme.proton_chrome") {
@import "proton_chrome";
}
/*= Monospace ================================================================*/
@include Option("userChrome.theme.monospace") {
@import "monospace";
}

View file

@ -0,0 +1,3 @@
* {
font-family: -moz-fixed;
}

View file

@ -1,3 +1,4 @@
#pageActionButton {
#urlbar:not([breakout-extend="true"]) #pageActionButton {
display: block !important;
visibility: visible !important;
}

View file

@ -1,7 +1,7 @@
.urlbarView-type-icon {
min-width: 16px !important;
height: 16px !important;
margin-bottom: 0 !important;
margin-block: 0 !important;
margin-inline-start: 0 !important;
}

68
src/utils/_one_liner.scss Normal file
View file

@ -0,0 +1,68 @@
@use "option" as *;
@mixin OneLinerContent() {
@include NotOption("userChrome.tabbar.one_liner.responsive") {
@content;
}
@include Option("userChrome.tabbar.one_liner.responsive") {
@media screen and (min-width: 1100px) {
@content;
}
}
}
@mixin OneLiner() {
@include Option("userChrome.tabbar.one_liner") {
@include OneLinerContent {
@content;
}
}
}
@mixin OneLinerOnBottom() {
@include NotOption("userChrome.tabbar.one_liner") {
@content;
}
@include Option("userChrome.tabbar.one_liner") {
@include Option("userChrome.tabbar.one_liner.responsive") {
@media screen and (max-width: 1100px) {
@content;
}
}
}
}
@mixin OneLinerTabbar() {
@include NotOption("userChrome.tabbar.one_liner.responsive") {
@content;
}
@include Option("userChrome.tabbar.one_liner.responsive") {
@media screen and (min-width: 1100px) {
@content;
}
@include Option("userChrome.autohide.tabbar") {
@content;
}
}
}
@mixin OneLinerNavbarContent() {
@include NotOption("userChrome.tabbar.one_liner") {
@content;
}
@include Option("userChrome.tabbar.one_liner") {
@include Option("userChrome.tabbar.one_liner.responsive") {
@media screen and (max-width: 1100px) {
@content;
}
}
}
}
@mixin OneLinerNavbar() {
@include Option("userChrome.autohide.navbar") {
@include OneLinerNavbarContent() {
@content;
}
}
}

49
user.js
View file

@ -68,10 +68,40 @@ user_pref("userChrome.rounding.square_tab", false);
// == Theme Custom Settings ====================================================
// -- User Chrome --------------------------------------------------------------
// user_pref("userChrome.theme.proton_color.dark_blue_accent", true);
// user_pref("userChrome.theme.monospace", true);
// user_pref("userChrome.decoration.disable_panel_animate", true);
// user_pref("userChrome.decoration.disable_sidebar_animate", true);
// user_pref("userChrome.theme.proton_color.dark_blue_accent", true);
// user_pref("userChrome.autohide.tab", true);
// user_pref("userChrome.autohide.tab.opacity", true);
// user_pref("userChrome.autohide.tab.blur", true);
// user_pref("userChrome.autohide.tabbar", true);
// user_pref("userChrome.autohide.navbar", true);
// user_pref("userChrome.autohide.bookmarkbar", true);
// user_pref("userChrome.autohide.sidebar", true);
// user_pref("userChrome.autohide.fill_urlbar", true);
// user_pref("userChrome.autohide.back_button", true);
// user_pref("userChrome.autohide.forward_button", true);
// user_pref("userChrome.autohide.page_action", true);
// user_pref("userChrome.autohide.toolbar_overlap", true);
// user_pref("userChrome.hidden.tab_icon", true);
// user_pref("userChrome.hidden.tab_icon.always", true);
// user_pref("userChrome.hidden.tabbar", true);
// user_pref("userChrome.hidden.navbar", true);
// user_pref("userChrome.hidden.sidebar_header", true);
// user_pref("userChrome.hidden.sidebar_header.vertical_tab_only", true);
// user_pref("userChrome.hidden.urlbar_iconbox", true);
// user_pref("userChrome.hidden.bookmarkbar_icon", true);
// user_pref("userChrome.hidden.bookmarkbar_label", true);
// user_pref("userChrome.hidden.disabled_menu", true);
// user_pref("userChrome.centered.tab", true);
// user_pref("userChrome.centered.tab.label", true);
// user_pref("userChrome.centered.urlbar", true);
// user_pref("userChrome.centered.bookmarkbar", true);
// user_pref("userChrome.rounding.square_button", true);
// user_pref("userChrome.rounding.square_panel", true);
@ -95,21 +125,29 @@ user_pref("userChrome.rounding.square_tab", false);
// user_pref("userChrome.urlView.go_button_when_typing", true);
// user_pref("userChrome.urlView.always_show_page_actions", true);
// user_pref("userChrome.tab.on_bottom", true);
// user_pref("userChrome.tab.on_bottom.above_bookmark", true); // Need on_bottom
// user_pref("userChrome.tab.on_bottom.menubar_on_top", true); // Need on_bottom
// user_pref("userChrome.tabbar.as_titlebar", true);
// user_pref("userChrome.tabbar.on_bottom", true);
// user_pref("userChrome.tabbar.on_bottom.above_bookmark", true); // Need on_bottom
// user_pref("userChrome.tabbar.on_bottom.menubar_on_top", true); // Need on_bottom
// user_pref("userChrome.tabbar.on_bottom.hidden_single_tab", true); // Need on_bottom
// user_pref("userChrome.tabbar.one_liner", true);
// user_pref("userChrome.tabbar.one_liner.combine_navbar", true); // Need one_liner
// user_pref("userChrome.tabbar.one_liner.tabbar_first", true); // Need one_liner
// user_pref("userChrome.tabbar.one_liner.responsive", true); // Need one_liner
// user_pref("userChrome.tab.always_show_tab_icon", true);
// user_pref("userChrome.tab.close_button_at_pinned", true);
// user_pref("userChrome.tab.close_button_at_pinned.always", true);
// user_pref("userChrome.tab.close_button_at_pinned.background", true);
// user_pref("userChrome.tab.close_button_at_hover.always", true); // Need close_button_at_hover
// user_pref("userChrome.tab.sound_show_label", true); // Need remove sound_hide_label
// user_pref("userChrome.tab.centered_label", true);
// user_pref("userChrome.panel.remove_strip", true);
// user_pref("userChrome.panel.full_width_separator", true);
// user_pref("userChrome.panel.full_width_padding", true);
// user_pref("userChrome.sidebar.overlap", true);
// user_pref("userChrome.icon.account_image_to_right", true);
// user_pref("userChrome.icon.account_label_to_right", true);
// user_pref("userChrome.icon.menu.full", true);
@ -120,6 +158,7 @@ user_pref("userChrome.rounding.square_tab", false);
// user_pref("userContent.page.proton_color.dark_blue_accent", true);
// user_pref("userContent.page.proton_color.system_accent", true);
// user_pref("userContent.page.monospace", true);
// == Theme Default Settings ===================================================
// -- User Chrome --------------------------------------------------------------