From 4ee6df2630d657d50624e9620f262fe691dc4335 Mon Sep 17 00:00:00 2001
From: bmFtZQ <62812711+bmFtZQ@users.noreply.github.com>
Date: Mon, 1 Jan 2024 19:27:43 +0800
Subject: [PATCH] Update Linux/GTK theme + screenshots #126
Also clean up and sort the theme colour variables.
---
README.md | 23 ++-
chrome/content/newtab.css | 41 +++++
chrome/global/colors.css | 292 +++++++++++++++++-------------------
chrome/toolbar/tabbar.css | 43 +++---
screenshots/Linux_dark.png | Bin 0 -> 198553 bytes
screenshots/Linux_light.png | Bin 0 -> 199825 bytes
6 files changed, 213 insertions(+), 186 deletions(-)
create mode 100644 screenshots/Linux_dark.png
create mode 100644 screenshots/Linux_light.png
diff --git a/README.md b/README.md
index 1a21eb5..64edf08 100644
--- a/README.md
+++ b/README.md
@@ -11,12 +11,13 @@ Screenshot: macOS / Firefox 120 / Tweaks: rounded corners, hide forward button.
2. Download the repository and extract the files.
3. From the repository folder, copy the `chrome` folder and `user.js` file into your Firefox profile folder.
4. Close and restart Firefox, if performed correctly, the theme should now be installed.
-5. Optionally, listed below are some settings that can be changed using `about:config`:
+5. Optionally, listed below are some additional Firefox settings that can be changed using `about:config`:
- | Description | Preference Name | Value |
- | ---------------------------------------- | ------------------------------------ | ------- |
- | Use Edge-themed context menu on macOS | `widget.macos.native-context-menus` | `false` |
- | Use light theme in private browsing mode | `browser.theme.dark-private-windows` | `false` |
+ | Description | Preference Name | Value |
+ | ------------------------------------------ | -------------------------------------------- | ------- |
+ | Use Edge-themed context menu on macOS | `widget.macos.native-context-menus` | `false` |
+ | Use light theme in private browsing mode | `browser.theme.dark-private-windows` | `false` |
+ | Use rounded bottom window corners on Linux | `widget.gtk.rounded-bottom-corners.enabled ` | `true` |
Additional tweaks can also be applied to the theme such as Floating tabs, Rounded browser corners and more. See [Tweaks](#tweaks).
@@ -28,6 +29,7 @@ Screenshot: macOS / Firefox 120 / Tweaks: rounded corners, hide forward button.
| Default (Windows 11) | ![Light][s-light] | ![Dark][s-dark] |
| Floating Tabs + Rounded Corners (Windows 11) | ![Light, Floating Tabs][s-light-ft] | ![Dark, Floating Tabs][s-dark-ft] |
| Hide Tabs Bar + Rounded Corners (macOS) | ![Light, Hide Tabs Bar][s-light-mac-htb] | ![Dark, Hide Tabs Bar][s-dark-mac-htb] |
+| Rounded Corners (Linux, Ubuntu Yaru theme) | ![Light, Rounded Corners][s-light-linux] | ![Dark, Rounded Corners][s-dark-linux] |
## Tweaks
Certain tweaks can be applied to the theme, to enable them navigate to `about:config` and create a boolean key for each tweak you want to use and set it to `true`.
@@ -52,7 +54,7 @@ redesign of Edge.
---
### Hide tabs toolbar
-This hides the tabs toolbar and is useful when using vertical tab addons such as
+This hides the tabs toolbar, useful for when using vertical tab addons such as
Sidebery, Tree Style Tab or Tab Center Reborn.
**Note: Only works on Windows or macOS.**
@@ -163,13 +165,6 @@ Disable the custom Edge-themed context menu and use the default Firefox menus.
---
-## Mica Tweak Notice
-Mica is broken due to changes made in the Firefox 115 update, Mica has now been
-removed from this theme.
-
-If you still have `uc.tweak.win11-mica` set in `about:config` you can safely
-delete it.
-
## Acknowledgements
[muckSponge](https://github.com/muckSponge) - [MaterialFox](https://github.com/muckSponge/MaterialFox)
@@ -184,8 +179,10 @@ delete it.
[s-light]: screenshots/Windows_default_light.png
[s-light-ft]: screenshots/Windows_floating-tabs_light.png
[s-light-mac-htb]: screenshots/macOS_hide-tabs-bar_light.png
+[s-light-linux]: screenshots/Linux_light.png
[s-dark]: screenshots/Windows_default_dark.png
[s-dark-ft]: screenshots/Windows_floating-tabs_dark.png
[s-dark-mac-htb]: screenshots/macOS_hide-tabs-bar_dark.png
+[s-dark-linux]: screenshots/Linux_dark.png
diff --git a/chrome/content/newtab.css b/chrome/content/newtab.css
index ad7b504..c64d4f1 100644
--- a/chrome/content/newtab.css
+++ b/chrome/content/newtab.css
@@ -48,6 +48,22 @@ url-prefix("about:firefoxview") {
--newtab-status-success: #50B080 !important;
}
+ /* Custom GTK colours. */
+ @media (-moz-gtk-csd-available) {
+ :root:not([lwt-newtab]):not([style*="color"]) {
+ /* Colour adjusted for readability. */
+ --uc-accent-adjusted: light-dark(
+ color-mix(in oklch, AccentColor 92%, black),
+ color-mix(in oklch, AccentColor 60%, white)
+ );
+ --newtab-background-color: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
+ --newtab-background-color-secondary: light-dark(Field, color-mix(in srgb, -moz-dialog 86%, white)) !important;
+ --newtab-text-primary-color: -moz-dialogtext !important;
+ --newtab-wordmark-color: light-dark(color-mix(in srgb, -moz-dialogtext 65%, transparent), -moz-dialogtext) !important;
+ --newtab-primary-action-background: var(--uc-accent-adjusted) !important;
+ }
+ }
+
/* Adjustments for themes. */
:root[style*="--newtab-background-color"] {
/* Make the Firefox logo workmark follow text colour. */
@@ -73,6 +89,11 @@ url-prefix("about:firefoxview") {
@-moz-document url-prefix("about:newtab"),
url-prefix("about:home") {
+ /* Enforce system font selection. */
+ body {
+ font-family: system-ui !important;
+ }
+
/* hide pin */
.icon.icon-pin-small {
display: none !important;
@@ -117,6 +138,10 @@ url-prefix("about:home") {
opacity: 0 !important;
}
+ .icon-settings {
+ background-image: url("../icons/settings.svg") !important;
+ }
+
/* top sites */
.top-site-outer .tile {
border-radius: 12px !important;
@@ -191,6 +216,22 @@ url-prefix("about:home") {
}
}
+ /* Custom GTK colours. */
+ @media (-moz-gtk-csd-available) {
+ :root:not([lwt-newtab]):not([style*="color"]) {
+ /* Colour adjusted for readability. */
+ --uc-accent-adjusted: light-dark(
+ color-mix(in oklch, AccentColor 92%, black),
+ color-mix(in oklch, AccentColor 60%, white)
+ );
+
+ --in-content-page-background: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
+ --uc-background-color-secondary: light-dark(Field, color-mix(in srgb, -moz-dialog 86%, white)) !important;
+ --in-content-page-color: -moz-dialogtext !important;
+ --in-content-focus-outline-color: var(--uc-accent-adjusted) !important;
+ }
+ }
+
.search-inner-wrapper {
height: 44px !important;
}
diff --git a/chrome/global/colors.css b/chrome/global/colors.css
index 23303dd..c5eb5c5 100644
--- a/chrome/global/colors.css
+++ b/chrome/global/colors.css
@@ -7,103 +7,104 @@
* private window and private window with the 'Dark' theme enabled.
* May not be the most reliable method, but works for now up to FF 123. */
:root[privatebrowsingmode="temporary"][style*="--lwt-accent-color: rgb(28, 27, 34)"]:not([style*="--newtab-background-color-secondary: rgb(66, 65, 77)"]) {
+ /* Toolbars */
--lwt-accent-color: light-dark(#cecece, #1C1C1C) !important;
--lwt-accent-color-inactive: light-dark(#e8e8e8, #2e2e2e) !important;
--lwt-text-color: light-dark(#000, #FFF) !important;
--lwt-text-color-inactive: light-dark(#3A3A3A, #CBCBCB) !important;
- --lwt-text-color: light-dark(#000, #FFF) !important;
+ --tab-selected-textcolor: light-dark(#000, #fff) !important;
+ --tab-selected-textcolor-inactive: light-dark(#3E3E3E, #CBCBCB) !important;
+ --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
+ --tab-attention-icon-color: light-dark(#0078D4, #93d0ff) !important;
--toolbar-bgcolor: light-dark(#f7f7f7, #3B3B3B) !important;
--toolbar-non-lwt-bgcolor: var(--toolbar-bgcolor) !important;
--toolbar-color: light-dark(#000, #fff) !important;
- --toolbarbutton-icon-fill: light-dark(#000, #fff) !important;
- --chrome-content-separator-color: light-dark(#bfbfbf, #686868) !important;
- --lwt-toolbarbutton-icon-fill-attention: light-dark(#0078D4, #4C98D1) !important;
+ --toolbarbutton-icon-fill: var(--toolbar-color) !important;
--toolbarbutton-icon-fill-attention: light-dark(#0078D4, #4C98D1) !important;
- --tab-attention-icon-color: light-dark(#0078D4, #93d0ff) !important;
- --tab-selected-textcolor: light-dark(#000, #fff) !important;
- --tab-selected-textcolor-inactive: light-dark(#3E3E3E, #CBCBCB) !important;
- --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
+ --toolbarseparator-color: color-mix(in srgb, currentColor 25%, transparent) !important;
+ --chrome-content-separator-color: light-dark(#bfbfbf, #686868) !important;
+ --newtab-background-color: light-dark(#f7f7f7, #252525) !important;
+ --tabpanel-background-color: var(--newtab-background-color, var(--toolbar-bgcolor, transparent)) !important;
+ /* Toolbar button overlays */
+ --toolbarbutton-hover-background: light-dark(rgb(0 0 0 / .08), rgb(255 255 255 / .08)) !important;
+ --toolbarbutton-active-background: light-dark(rgb(0 0 0 / .135), rgb(255 255 255 / .135)) !important;
+ /* Tab audio indicator overlay icon */
+ --tab-icon-overlay-fill: var(--toolbar-color) !important;
+ --tab-icon-overlay-stroke: var(--toolbar-bgcolor) !important;
+ /* URL bar */
--toolbar-field-background-color: light-dark(#fff, #2B2B2B) !important;
--toolbar-field-color: light-dark(#000, #fff) !important;
--toolbar-field-border-color: transparent !important;
--toolbar-field-focus-background-color: var(--toolbar-field-background-color) !important;
--toolbar-field-focus-color: var(--toolbar-field-color) !important;
--toolbar-field-focus-border-color: light-dark(#0055D780, #63ADE5) !important;
- --link-color: light-dark(#0078D4, #75B6E8) !important;
- --urlbar-hover-highlight-color: light-dark(rgb(192 192 192 / .5), rgb(128 128 128 / .5)) !important;
+ --urlbar-icon-fill-opacity: 0.58 !important;
--urlbar-box-bgcolor: light-dark(rgb(0 0 0 / .09), rgb(255 255 255 / .11)) !important;
--urlbar-box-hover-bgcolor: light-dark(rgb(0 0 0 / .09), rgb(255 255 255 / .11)) !important;
- --urlbar-box-focus-bgcolor: light-dark(rgb(0 0 0 / .22), rgb(255 255 255 / .28)) !important;
- --urlbar-icon-fill-opacity: 0.58 !important;
- --urlbar-popup-url-color: light-dark(#0072C9, #75B6E8) !important;
+ --urlbar-box-active-bgcolor: light-dark(rgb(0 0 0 / .22), rgb(255 255 255 / .28)) !important;
+ --urlbar-box-focus-bgcolor: var(--urlbar-box-hover-bgcolor) !important;
+ /* URL bar suggestions */
+ --link-color: light-dark(#0078D4, #75B6E8) !important;
+ --uc-urlbarView-accent-color: light-dark(#1A6397, #75B6E8) !important;
--urlbarView-highlight-background: light-dark(#F2F2F2, #383838) !important;
--urlbarView-highlight-color: light-dark(#000, #fff) !important;
--urlbarView-hover-background: light-dark(#e5e5e5, #444444) !important;
--urlbarView-separator-color: light-dark(#EFEFEF, #5F5F5F) !important;
- --uc-urlbarView-accent-color: light-dark(#1A6397, #75B6E8) !important;
- --lwt-brighttext-url-color: var(--urlbar-popup-url-color) !important;
- --autocomplete-popup-background: light-dark(#fff, #4A4A4A) !important;
- --autocomplete-popup-color: light-dark(#fff, #fff) !important;
- --autocomplete-popup-highlight-background: light-dark(#f2f2f2, #383838) !important;
- --autocomplete-popup-hover-background: light-dark(#e5e5e5, #444444) !important;
- --autocomplete-popup-separator-color: light-dark(#dadada00, #63636300) !important;
- --button-color: light-dark(#000, #fff) !important;
- --button-bgcolor: light-dark(#EFEFEF, #5C5C5C) !important;
- --button-hover-bgcolor: light-dark(#D5D5D5, #6E6E6E) !important;
- --button-active-bgcolor: light-dark(#C0C0C0, #7C7C7C) !important;
- --button-primary-bgcolor: light-dark(#0078D4, #006CBE) !important;
- --button-primary-hover-bgcolor: light-dark(#006BBD, #1C7CC5) !important;
- --button-primary-active-bgcolor: light-dark(#0060AA, #3289CB) !important;
- --button-primary-color: light-dark(#fff, #fff) !important;
- --error-text-color: light-dark(#FF9AA2, #FF9AA2) !important;
- --input-bgcolor: light-dark(#fff, #4A4A4A) !important;
- --input-color: light-dark(#2b2b2b, #fff) !important;
- --input-border-color: light-dark(#bebebe, #8A8A8A) !important;
- --input-error-border-color: light-dark(#FF848A, #FF848A) !important;
- --zoom-controls-bgcolor: light-dark(#4A4A4A, #4A4A4A) !important;
+ /* Menus/panels */
--arrowpanel-background: light-dark(#fff, #4A4A4A) !important;
--arrowpanel-color: light-dark(#1c1c1c, #fff) !important;
- --panel-description-color: light-dark(#000a, #fffb) !important;
- --panel-disabled-color: light-dark(#9E9E9E, #ABABAA) !important;
+ --arrowpanel-border-color: light-dark(#fff, #636363) !important;
--arrowpanel-dimmed: light-dark(#565656, #565656) !important;
--arrowpanel-dimmed-further: light-dark(#707070, #707070) !important;
+ --panel-separator-color: light-dark(#dadada, #636363) !important;
+ --panel-description-color: light-dark(#000a, #fffb) !important;
+ --panel-disabled-color: light-dark(#9E9E9E, #ABABAA) !important;
--panel-item-hover-bgcolor: light-dark(#eee, #646464) !important;
--panel-item-active-bgcolor: light-dark(#ddd, #747474) !important;
- --arrowpanel-border-color: light-dark(#fff, #636363) !important;
- --panel-separator-color: light-dark(#dadada, #636363) !important;
--panel-banner-item-update-supported-bgcolor: light-dark(#188038, #81C995) !important;
- --focus-outline-color: light-dark(#0055D7, #63ADE5) !important;
- --panel-shortcut-color: inherit !important;
- --toolbarbutton-hover-background: light-dark(rgb(0 0 0 / .08), rgb(255 255 255 / .08)) !important;
- --toolbarbutton-active-background: light-dark(rgb(0 0 0 / .135), rgb(255 255 255 / .135)) !important;
- --tab-icon-overlay-stroke: light-dark(#fff, #4b4b4b) !important;
- --tab-icon-overlay-fill: light-dark(#252525, #fff) !important;
- --toolbarseparator-color: color-mix(in srgb, currentColor 25%, transparent) !important;
- --tabpanel-background-color: light-dark(#f7f7f7, #252525) !important;
-
- /* Side bar theme colours. */
+ /* Primary button */
+ --button-primary-bgcolor: light-dark(#0078D4, #006CBE) !important;
+ --button-primary-color: light-dark(#fff, #fff) !important;
+ --button-primary-hover-bgcolor: light-dark(#006BBD, #1C7CC5) !important;
+ --button-primary-active-bgcolor: light-dark(#0060AA, #3289CB) !important;
+ /* Secondary button */
+ --button-bgcolor: light-dark(#EFEFEF, #5C5C5C) !important;
+ --button-color: light-dark(#000, #fff) !important;
+ --button-hover-bgcolor: light-dark(#D5D5D5, #6E6E6E) !important;
+ --button-active-bgcolor: light-dark(#C0C0C0, #7C7C7C) !important;
+ /* Text input field, e.g. bookmarks editor */
+ --focus-outline-color: light-dark(#0055D780, #63ADE5) !important;
+ --input-bgcolor: light-dark(#fff, #4A4A4A) !important;
+ --input-color: light-dark(#2b2b2b, #fff) !important;
+ --input-border-color: light-dark(#bebebe, #808080) !important;
+ --error-text-color: light-dark(#FF9AA2, #FF9AA2) !important;
+ --input-error-border-color: light-dark(#FF848A, #FF848A) !important;
+ /* Side bar colours. */
--sidebar-background-color: light-dark(#f7f7f7, #3b3b3b) !important;
--sidebar-text-color: light-dark(#000, #fff) !important;
--sidebar-border-color: light-dark(#bfbfbf, #686868) !important;
- /* Dialog theme */
+ /* ::::: Dialog theme ::::: */
& #window-modal-dialog::backdrop {
+ /* Overlay when dialog is shown. */
background-color: rgb(20 20 20 / .2) !important;
}
&[dialogroot] {
+ /* Dialog */
--in-content-page-background: var(--arrowpanel-background) !important;
--in-content-page-color: var(--arrowpanel-color) !important;
+ /* Primary button */
--in-content-primary-button-text-color: var(--button-primary-color) !important;
--in-content-primary-button-background: var(--button-primary-bgcolor) !important;
--in-content-primary-button-background-hover: var(--button-primary-hover-bgcolor) !important;
--in-content-primary-button-background-active: var(--button-primary-active-bgcolor) !important;
-
+ /* Secondary button */
--in-content-button-text-color: var(--button-color) !important;
--in-content-button-background: var(--button-bgcolor) !important;
--in-content-button-background-hover: var(--button-hover-bgcolor) !important;
--in-content-button-background-active: var(--button-active-bgcolor) !important;
-
+ /* Text input */
--in-content-box-background: var(--input-bgcolor) !important;
--in-content-box-border-color: var(--input-border-color) !important;
}
@@ -120,17 +121,12 @@
}
}
-#urlbar {
- --urlbar-box-bgcolor: inherit !important;
- --urlbar-box-hover-bgcolor: inherit !important;
- --urlbar-box-focus-bgcolor: inherit !important;
-}
-
-/* make the titlebar buttons black/white on default themes */
+/* Make the titlebar buttons black/white on default themes */
:root:not(:-moz-lwtheme)[tabsintitlebar] .titlebar-buttonbox {
- color: var(--toolbar-color) !important;
+ color: var(--lwt-text-color) !important;
}
+/* Status/link preview panel */
#statuspanel-label {
background-color: var(--toolbar-field-focus-background-color) !important;
color: var(--toolbar-field-focus-color) !important;
@@ -144,6 +140,7 @@
}
@media (-moz-platform: windows) {
+ /* Colour the text selection background and foreground. */
::selection {
background-color: light-dark(#0078D4, #93B8E7) !important;
color: light-dark(#fff, #000) !important;
@@ -157,26 +154,26 @@
.titlebar-button:not(.titlebar-close):hover {
background-color: color-mix(in srgb, currentColor 11%, transparent) !important;
- }
- .titlebar-button:hover:active {
- background-color: color-mix(in srgb, currentColor 20%, transparent) !important;
+ &:active {
+ background-color: color-mix(in srgb, currentColor 20%, transparent) !important;
+ }
}
.titlebar-close:hover {
stroke: white !important;
background-color: #e81123 !important;
- }
- .titlebar-close:hover:active {
- background-color: #EF6B76 !important;
- }
+ &:active {
+ background-color: #DC5C66 !important;
+ }
- toolbar[brighttext] .titlebar-close:hover:active {
- background-color: #9C1420 !important;
+ toolbar[brighttext] &:active {
+ background-color: #971821 !important;
+ }
}
- /* library window theme */
+ /* Library window colour theme. */
window#places {
--organizer-color: light-dark(#000, #fff) !important;
--organizer-deemphasized-color: light-dark(#666, #bbb) !important;
@@ -213,6 +210,7 @@
}
}
+/* Prevent macOS vibrancy appearance, instead using a solid background. */
#sidebar-box {
appearance: none !important;
}
@@ -226,14 +224,14 @@
& #sidebar-search-container > #search-box,
& #viewButton {
appearance: none !important;
- background-color: light-dark(#fff, #2b2b2b) !important;
+ background-color: var(--toolbar-field-background-color) !important;
color: inherit !important;
- border: 1px solid light-dark(#bfbfbf, #686868) !important;
+ border: 1px solid var(--input-border-color) !important;
border-radius: 4px !important;
padding: 6px 8px !important;
&:focus {
- outline: 2px solid light-dark(#bfbfbf, #686868) !important;
+ outline: 2px solid var(--input-border-color) !important;
outline-offset: -2px !important;
border-color: transparent !important;
}
@@ -249,97 +247,87 @@
/* Linux / GTK csd support */
@media (-moz-gtk-csd-available) {
- :root:not(:-moz-lwtheme) {
- --toolbar-bgcolor: color-mix(in srgb, -moz-dialog 80%, #fff) !important;
- --toolbar-bgimage: none !important;
+ :root:not(:-moz-lwtheme),
+ /* `--newtab-background-color-secondary used` to differentiate between a dark
+ * private window and private window with the 'Dark' theme enabled.
+ * May not be the most reliable method, but works for now up to FF 123. */
+ :root[privatebrowsingmode="temporary"][style*="--lwt-accent-color: rgb(28, 27, 34)"]:not([style*="--newtab-background-color-secondary: rgb(66, 65, 77)"]) {
+ /* Used for mixing colours differently in light/dark themes. */
+ --uc-tint: light-dark(black, white);
+ /* Colour adjusted for readability. */
+ --uc-accent-adjusted: light-dark(
+ color-mix(in oklch, AccentColor 92%, black),
+ color-mix(in oklch, AccentColor 60%, white)
+ );
+ /* Toolbars */
+ --lwt-accent-color: light-dark(color-mix(in srgb, ActiveCaption 90%, black), ActiveCaption) !important;
+ --lwt-accent-color-inactive: light-dark(color-mix(in srgb, InactiveCaption 94%, black), InactiveCaption) !important;
+ --lwt-text-color: CaptionText !important;
+ --lwt-text-color-inactive: color-mix(in srgb, CaptionText 65%, transparent) !important;
+ --tab-selected-textcolor: var(--toolbar-color) !important;
+ --tab-selected-textcolor-inactive: color-mix(in srgb, var(--toolbar-color) 65%, transparent) !important;
+ --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
+ --tab-attention-icon-color: var(--uc-accent-adjusted) !important;
+ --toolbar-bgcolor: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 92%, white)) !important;
--toolbar-color: -moz-dialogtext !important;
- --tab-selected-bgimage: none !important;
- --chrome-content-separator-color: ThreeDShadow !important;
- --panel-separator-color: ThreeDShadow !important;
- --button-bgcolor: color-mix(in srgb, currentColor 10%, transparent) !important;
- --button-hover-bgcolor: color-mix(in srgb, currentColor 14%, transparent) !important;
- --button-active-bgcolor: color-mix(in srgb, currentColor 20%, transparent) !important;
- --button-color: currentColor !important;
- --button-primary-bgcolor: -moz-accent-color !important;
- --button-primary-hover-bgcolor: color-mix(in srgb, black 10%, -moz-accent-color) !important;
- --button-primary-active-bgcolor: color-mix(in srgb, black 20%, -moz-accent-color) !important;
- --button-primary-color: -moz-accent-color-foreground !important;
- --autocomplete-popup-hover-background: var(--arrowpanel-dimmed) !important;
- --autocomplete-popup-separator-color: color-mix(in srgb, currentColor 14%, transparent) !important;
+ --toolbarbutton-icon-fill-attention: var(--uc-accent-adjusted) !important;
+ --chrome-content-separator-color: color-mix(in srgb, currentColor 17%, var(--toolbar-bgcolor)) !important;
+ --newtab-background-color: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
+ /* URL bar */
+ --toolbar-field-background-color: light-dark(Field, color-mix(in srgb, Field 96%, -moz-dialogtext)) !important;
+ --toolbar-field-color: FieldText !important;
+ --toolbar-field-focus-border-color: light-dark(color-mix(in srgb, var(--focus-outline-color) 50%, transparent), var(--focus-outline-color)) !important;
--urlbar-box-bgcolor: var(--button-bgcolor) !important;
- --urlbar-box-focus-bgcolor: var(--button-bgcolor) !important;
--urlbar-box-hover-bgcolor: var(--button-hover-bgcolor) !important;
--urlbar-box-active-bgcolor: var(--button-active-bgcolor) !important;
- --urlbar-box-text-color: inherit !important;
- --urlbar-box-hover-text-color: var(--urlbar-box-text-color) !important;
- --urlbar-icon-fill-opacity: 0.58 !important;
- --urlbar-popup-url-color: -moz-nativehyperlinktext !important;
- --lwt-brighttext-url-color: #00ddff !important;
- --toolbarbutton-icon-fill-attention: -moz-nativehyperlinktext !important;
- --focus-outline-color: -moz-accent-color !important;
+ /* URL bar suggestions. */
+ --link-color: var(--uc-accent-adjusted) !important;
+ --uc-urlbarView-accent-color: var(--uc-accent-adjusted) !important;
+ --urlbarView-highlight-background: var(--panel-item-hover-bgcolor) !important;
+ --urlbarView-highlight-color: var(--toolbar-field-color) !important;
+ --urlbarView-hover-background: var(--panel-item-active-bgcolor) !important;
+ --urlbarView-separator-color: var(--panel-separator-color) !important;
+ /* Toolbar button hover & click backgrounds. */
+ --toolbarbutton-hover-background: color-mix(in srgb, -moz-dialogtext 8%, transparent) !important;
+ --toolbarbutton-active-background: color-mix(in srgb, -moz-dialogtext 13.5%, transparent) !important;
+ /* Menus/panels */
--arrowpanel-background: Field !important;
--arrowpanel-color: FieldText !important;
- --arrowpanel-border-color: ThreeDShadow !important;
+ --arrowpanel-border-color: light-dark(transparent, var(--panel-separator-color)) !important;
--arrowpanel-dimmed: color-mix(in srgb, currentColor 17%, transparent) !important;
--arrowpanel-dimmed-further: color-mix(in srgb, currentColor 30%, transparent) !important;
+ --panel-separator-color: color-mix(in srgb, currentColor 17%, var(--arrowpanel-background)) !important;
--panel-description-color: GrayText !important;
--panel-disabled-color: GrayText !important;
- --toolbarbutton-icon-fill: currentColor !important;
- --toolbar-field-background-color: Field !important;
- --toolbar-field-color: FieldText !important;
- --toolbar-field-border-color: ThreeDShadow !important;
- --toolbar-field-focus-background-color: Field !important;
- --toolbar-field-focus-color: FieldText !important;
- --toolbar-field-focus-border-color: -moz-accent-color !important;
- --toolbarbutton-hover-background: color-mix(in srgb, -moz-dialogtext 14%, transparent) !important;
- --toolbarbutton-active-background: color-mix(in srgb, -moz-dialogtext 20%, transparent) !important;
- --autocomplete-popup-highlight-color: FieldText !important;
- --autocomplete-popup-highlight-background: color-mix(in srgb, currentColor 8%, transparent) !important;
- --autocomplete-popup-hover-background: color-mix(in srgb, currentColor 12%, transparent) !important;
- --autocomplete-popup-separator-color: #0000 !important;
- --panel-item-hover-bgcolor: color-mix(in srgb, currentColor 17%, transparent) !important;
- --panel-item-active-bgcolor: color-mix(in srgb, currentColor 30%, transparent) !important;
- --panel-separator-color: ThreeDShadow !important;
- --panel-banner-item-update-supported-bgcolor: #1bba6b !important;
- --focus-outline-color: -moz-accent-color !important;
- --uc-private-browsing-indicator: -moz-accent-color !important;
- --uc-private-browsing-indicator-text: var(--button-primary-color);
- }
-
- #sidebar-box:not([lwt-sidebar]) {
- --sidebar-background-color: -moz-dialog !important;
- --sidebar-text-color: -moz-dialog-text !important;
- }
-
- #browser:not([style*="--sidebar-border-color"]) {
- --sidebar-border-color: ThreeDShadow !important;
- }
-
- .sidebar-panel:not([lwt-sidebar]) {
- color: -moz-dialogtext !important;
- }
-
- @media (prefers-color-scheme: light) {
- :root:not(:-moz-lwtheme) {
- --toolbar-bgcolor: color-mix(in srgb, -moz-dialog 65%, #fff) !important;
- --urlbar-icon-fill-opacity: 0.7 !important;
- --toolbar-field-border-color: transparent !important;
- --toolbar-field-background-color: color-mix(in srgb, Field 90%, -moz-dialogtext) !important;
- --toolbar-field-color: FieldText !important;
- --toolbar-field-focus-background-color: Field !important;
- --toolbar-field-focus-color: FieldText !important;
- }
+ --panel-item-hover-bgcolor: color-mix(in srgb, currentColor 8%, transparent) !important;
+ --panel-item-active-bgcolor: color-mix(in srgb, currentColor 13%, transparent) !important;
+ /* Primary button */
+ --button-primary-bgcolor: AccentColor !important;
+ --button-primary-color: AccentColorText !important;
+ --button-primary-hover-bgcolor: color-mix(in srgb, var(--uc-tint) 10%, var(--button-primary-bgcolor)) !important;
+ --button-primary-active-bgcolor: color-mix(in srgb, var(--uc-tint) 20%, var(--button-primary-bgcolor)) !important;
+ /* Secondary button */
+ --button-bgcolor: color-mix(in srgb, currentColor 10%, transparent) !important;
+ --button-color: currentColor !important;
+ --button-hover-bgcolor: color-mix(in srgb, currentColor 14%, transparent) !important;
+ --button-active-bgcolor: color-mix(in srgb, currentColor 20%, transparent) !important;
+ /* Text input field, e.g. bookmarks editor. */
+ --focus-outline-color: var(--uc-accent-adjusted) !important;
+ --input-bgcolor: var(--arrowpanel-background) !important;
+ --input-color: var(--arrowpanel-color) !important;
+ --input-border-color: color-mix(in srgb, currentColor 35%, var(--arrowpanel-background)) !important;
+ /* Sidebar */
+ --sidebar-background-color: var(--toolbar-bgcolor) !important;
+ --sidebar-text-color: var(--toolbar-color) !important;
+ --sidebar-border-color: var(--chrome-content-separator-color) !important;
}
- @media (prefers-color-scheme: dark) {
- :root:not(:-moz-lwtheme) {
- --toolbar-bgcolor: color-mix(in srgb, -moz-dialog 90%, #fff) !important;
- --urlbar-icon-fill-opacity: 1.0 !important;
- --toolbar-field-border-color: transparent !important;
- --toolbar-field-background-color: color-mix(in srgb, Field 90%, -moz-dialogtext) !important;
- --toolbar-field-color: FieldText !important;
- --toolbar-field-focus-background-color: color-mix(in srgb, Field 90%, -moz-dialogtext) !important;
- --toolbar-field-focus-color: FieldText !important;
- }
+ /* Use the same sidebar splitter style as other platforms. */
+ .sidebar-splitter {
+ border: 0 solid var(--sidebar-border-color) !important;
+ border-inline-end-width: 1px !important;
+ width: 4px !important;
+ background-color: transparent !important;
+ margin-inline-start: -4px !important;
}
}
diff --git a/chrome/toolbar/tabbar.css b/chrome/toolbar/tabbar.css
index 2cab473..9208c03 100644
--- a/chrome/toolbar/tabbar.css
+++ b/chrome/toolbar/tabbar.css
@@ -41,14 +41,12 @@
}
/* Fix window background colours. */
-@media not (-moz-gtk-csd-available) {
- :root:not(:-moz-lwtheme) #navigator-toolbox {
- background-color: var(--lwt-accent-color) !important;
- color: var(--lwt-text-color) !important;
- }
+#navigator-toolbox:not(:-moz-lwtheme) {
+ background-color: var(--lwt-accent-color) !important;
+ color: var(--lwt-text-color) !important;
/* Inactive window background colours. */
- :root:not(:-moz-lwtheme) #navigator-toolbox:-moz-window-inactive {
+ &:-moz-window-inactive {
background-color: var(--lwt-accent-color-inactive, var(--lwt-accent-color)) !important;
color: var(--lwt-text-color-inactive, var(--lwt-text-color)) !important;
}
@@ -206,6 +204,19 @@
}
}
}
+
+/* Linux titlebar button positioning. */
+@media (-moz-platform: linux) {
+ .titlebar-buttonbox-container {
+ /* Add space between buttons and other toolbar buttons. */
+ margin-inline: 8px 0 !important;
+
+ @media (-moz-gtk-csd-reversed-placement) {
+ /* Compensate for padding added to the Tabs Toolbar. */
+ margin-inline: -8px 8px !important;
+ }
+ }
+}
/* #endregion */
@@ -224,11 +235,11 @@
}
/* Enforce tab foreground colour. */
- &:is([visuallyselected], [multiselected]):not(:-moz-lwtheme) {
+ &:is([visuallyselected], [multiselected]) {
color: var(--tab-selected-textcolor) !important;
&:-moz-window-inactive {
- color: var(--tab-selected-textcolor-inactive) !important;
+ color: var(--tab-selected-textcolor-inactive, var(--tab-selected-textcolor)) !important;
}
}
}
@@ -649,23 +660,13 @@
/* Alternate gradient, fades to transparent on both sides. */
--uc-gradient-alt: linear-gradient(to right, transparent, var(--uc-bg-color) 25%, var(--uc-bg-color) 75%, transparent);
- /* On Linux, the background should be a different colour. */
- @media (-moz-gtk-csd-available) {
- &:not(:-moz-lwtheme) {
- --uc-bg-color: -moz-accent-color !important;
- color: -moz-accent-color-foreground !important;
- }
- }
-
/* If the titlebar buttons are on the right, then use the alternate gradient
* if the menu bar is not permanently enabled.
*/
@media (-moz-platform: windows),
- (-moz-gtk-csd-available) {
- @media not (-moz-gtk-csd-reversed-placement) {
- :root[tabsintitlebar] #toolbar-menubar:not([autohide="false"]) ~ #TabsToolbar & {
- background: var(--uc-gradient-alt);
- }
+ (-moz-gtk-csd-available) and (not (-moz-gtk-csd-reversed-placement)) {
+ :root[tabsintitlebar] #toolbar-menubar:not([autohide="false"]) ~ #TabsToolbar & {
+ background: var(--uc-gradient-alt);
}
}
diff --git a/screenshots/Linux_dark.png b/screenshots/Linux_dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..c94166f6ff5644f70ef557e5ef228ede8929bb45
GIT binary patch
literal 198553
zcmXtfdpwhG{66_erKl*C!;-Y5=%AX@rlTk(ippV~C80T+9Y~VOq0qu?az4Z=H0P;k
z4l!pr4l^?|Y%{j8?dSXbzJAy1eqPV>y6?a4`?(MA>wR5!tb@Jvwk`X%$jQlVv$=B7
zQBLl^*K%?j{%qg4UV{b)=dHi~3pj6cW79g2n;xz=%58pr<#vFaoXYS2dE_a61rOIN
z_Xb|N73k#mI56a%|0B7OkPss;U+;hi_ntp8^7HphpSRd2C%0eD=Hj^
>gvUZf@b^7>gto!
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