├── screenshots
├── iex.gif
├── rounded-corners.png
├── firefox-25-11-2023.jpg
├── firefox-26-11-2023.jpg
└── Screenshot 2023-12-04 144143.png
├── chrome
├── userContent.css
├── icons
│ ├── zoom-out.svg
│ ├── menu-bar.svg
│ ├── back.svg
│ ├── menu.svg
│ ├── forward.svg
│ ├── folder.svg
│ ├── arrow-right.svg
│ ├── arrow-up.svg
│ ├── arrow-down.svg
│ ├── media-pause.svg
│ ├── media-play.svg
│ ├── win11-minimize.svg
│ ├── checkmark.svg
│ ├── reader-mode.svg
│ ├── arrow-left.svg
│ ├── search-glass.svg
│ ├── ext-link.svg
│ ├── edit-undo.svg
│ ├── account.svg
│ ├── win11-maximize.svg
│ ├── info.svg
│ ├── window.svg
│ ├── tab.svg
│ ├── edit-redo.svg
│ ├── bookmark.svg
│ ├── close.svg
│ ├── security.svg
│ ├── report.svg
│ ├── edit-copy.svg
│ ├── microphone.svg
│ ├── open.svg
│ ├── win11-close.svg
│ ├── spell-check.svg
│ ├── close-all.svg
│ ├── security-broken.svg
│ ├── close-9px.svg
│ ├── mail.svg
│ ├── autoplay-media.svg
│ ├── customize.svg
│ ├── edit-cut.svg
│ ├── link.svg
│ ├── move-tab.svg
│ ├── screen.svg
│ ├── win11-restore.svg
│ ├── page-portrait.svg
│ ├── win11-close-dark.svg
│ ├── chevron.svg
│ ├── midi.svg
│ ├── media-pip.svg
│ ├── sort.svg
│ ├── bookmark-star-on-tray.svg
│ ├── downloads.svg
│ ├── plus.svg
│ ├── new-tab-image.svg
│ ├── pocket-outline.svg
│ ├── source-code.svg
│ ├── help.svg
│ ├── inspect.svg
│ ├── permissions.svg
│ ├── edit.svg
│ ├── reload.svg
│ ├── tracking-protection.svg
│ ├── send-to-device.svg
│ ├── sidebars.svg
│ ├── canvas.svg
│ ├── duplicate-tab.svg
│ ├── ungroupTab.svg
│ ├── search-page.svg
│ ├── sidebars-right.svg
│ ├── geo.svg
│ ├── desktop-notification.svg
│ ├── add-to-dictionary.svg
│ ├── fullscreen.svg
│ ├── developer.svg
│ ├── manage.svg
│ ├── camera.svg
│ ├── moveTabToGroup.svg
│ ├── bookmark-hollow.svg
│ ├── print.svg
│ ├── edit-paste.svg
│ ├── account-private.svg
│ ├── microphone-blocked.svg
│ ├── history.svg
│ ├── privateBrowsing.svg
│ ├── fullscreen-exit.svg
│ ├── home.svg
│ ├── new-tab.svg
│ ├── video-open.svg
│ ├── image-open.svg
│ ├── image-copy.svg
│ ├── autoplay-media-blocked.svg
│ ├── screen-blocked.svg
│ ├── media-mute.svg
│ ├── paste-and-go.svg
│ ├── edit-delete.svg
│ ├── pin.svg
│ ├── passwords.svg
│ ├── save.svg
│ ├── security-warning.svg
│ ├── media-unmute.svg
│ ├── canvas-blocked.svg
│ ├── share.svg
│ ├── unpin.svg
│ ├── audio-save.svg
│ ├── geo-blocked.svg
│ ├── translations.svg
│ ├── edit-select-all.svg
│ ├── popup.svg
│ ├── desktop-notification-blocked.svg
│ ├── accessibility.svg
│ ├── media-loop.svg
│ ├── tool-profiler.svg
│ ├── firefox.svg
│ ├── camera-blocked.svg
│ ├── persistent-storage.svg
│ ├── xr.svg
│ ├── forget.svg
│ ├── video-save.svg
│ ├── zoom-control.svg
│ ├── private-window.svg
│ ├── container-tab.svg
│ ├── media-speed.svg
│ ├── image-save.svg
│ ├── library.svg
│ ├── extension.svg
│ ├── screenshot.svg
│ ├── persistent-storage-blocked.svg
│ ├── xr-blocked.svg
│ ├── loop.svg
│ ├── extension-blocked.svg
│ ├── unloadTab.svg
│ ├── mac-close.svg
│ ├── mac-maximize.svg
│ ├── mac-minimize.svg
│ ├── mac-restore.svg
│ ├── ask-chat.svg
│ ├── settings.svg
│ ├── reload-to-stop.svg
│ ├── stop-to-reload.svg
│ └── firefox-logo.svg
├── animations
│ └── tab-animation.css
├── userChrome.css
├── global
│ ├── tweaks.css
│ └── rounded-corners.css
├── content
│ ├── card-container.css
│ ├── newtab.css
│ └── common.css
└── toolbar
│ ├── navbar.css
│ ├── personalbar.css
│ ├── searchbar.css
│ ├── urlbar.css
│ └── tabbar.css
├── .github
├── ISSUE_TEMPLATE
│ └── bug_report.md
└── FUNDING.yml
├── user.js
├── LICENSE
├── README.md
└── install.ps1
/screenshots/iex.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amnweb/firefox-plus/HEAD/screenshots/iex.gif
--------------------------------------------------------------------------------
/screenshots/rounded-corners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amnweb/firefox-plus/HEAD/screenshots/rounded-corners.png
--------------------------------------------------------------------------------
/screenshots/firefox-25-11-2023.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amnweb/firefox-plus/HEAD/screenshots/firefox-25-11-2023.jpg
--------------------------------------------------------------------------------
/screenshots/firefox-26-11-2023.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amnweb/firefox-plus/HEAD/screenshots/firefox-26-11-2023.jpg
--------------------------------------------------------------------------------
/screenshots/Screenshot 2023-12-04 144143.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amnweb/firefox-plus/HEAD/screenshots/Screenshot 2023-12-04 144143.png
--------------------------------------------------------------------------------
/chrome/userContent.css:
--------------------------------------------------------------------------------
1 | @import url("content/common.css");
2 | @import url("content/newtab.css");
3 | @import url("content/card-container.css");
4 | @import url("global/tweaks.css");
--------------------------------------------------------------------------------
/chrome/icons/zoom-out.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/menu-bar.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/back.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/menu.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/forward.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/folder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/animations/tab-animation.css:
--------------------------------------------------------------------------------
1 | #tabbrowser-tabpanels > hbox {
2 | transition: all 0.2s;
3 | scale: 1.01 !important;
4 | filter: blur(4px) !important;
5 | }
6 |
7 | #tabbrowser-tabpanels > hbox.deck-selected {
8 | scale: 1 !important;
9 | filter: none !important;
10 | }
--------------------------------------------------------------------------------
/chrome/icons/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/media-pause.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/media-play.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/win11-minimize.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/checkmark.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/reader-mode.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/arrow-left.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/search-glass.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/ext-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/edit-undo.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/account.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/chrome/icons/win11-maximize.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/tab.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit-redo.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/security.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/report.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit-copy.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/microphone.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/open.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/win11-close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/spell-check.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/close-all.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/security-broken.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/close-9px.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/mail.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/autoplay-media.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/customize.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit-cut.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/link.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/move-tab.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/screen.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/win11-restore.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/page-portrait.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/win11-close-dark.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/chevron.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/midi.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/media-pip.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/sort.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/userChrome.css:
--------------------------------------------------------------------------------
1 | @import url("toolbar/tabbar.css") not -moz-pref("sidebar.verticalTabs");
2 | @import url("toolbar/navbar.css");
3 | @import url("toolbar/personalbar.css");
4 | @import url("toolbar/urlbar.css");
5 | @import url("toolbar/searchbar.css");
6 | @import url("global/general.css");
7 | @import url("icons/icons.css");
8 | @import url("global/rounded-corners.css") -moz-pref("fp.tweak.rounded-corners");
9 | @import url("animations/tab-animation.css") -moz-pref("fp.tweak.animation.tab-switch");
--------------------------------------------------------------------------------
/chrome/icons/bookmark-star-on-tray.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/downloads.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/plus.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/chrome/icons/new-tab-image.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/chrome/icons/pocket-outline.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/source-code.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/help.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/inspect.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/permissions.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/reload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/tracking-protection.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/send-to-device.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/sidebars.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/canvas.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/duplicate-tab.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/ungroupTab.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/search-page.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/sidebars-right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/geo.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/desktop-notification.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/add-to-dictionary.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/fullscreen.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/developer.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/manage.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/camera.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/moveTabToGroup.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark-hollow.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/print.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit-paste.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/account-private.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/chrome/icons/microphone-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/history.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/privateBrowsing.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/fullscreen-exit.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/home.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/new-tab.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/video-open.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/image-open.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/chrome/icons/image-copy.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/autoplay-media-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: amnweb
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Screenshots or video**
21 | Add screenshots or video to help explain your problem.
22 |
23 | **Firefox version (please complete the following information):**
24 | - Version [e.g. 127.0.1]
25 |
26 | **Additional context**
27 | Add any other context about the problem here.
28 |
--------------------------------------------------------------------------------
/chrome/icons/screen-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/media-mute.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/paste-and-go.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit-delete.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/pin.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/passwords.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/save.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/security-warning.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/media-unmute.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/canvas-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/share.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/unpin.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/audio-save.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/geo-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/translations.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/edit-select-all.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/popup.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/desktop-notification-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/accessibility.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/media-loop.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/tool-profiler.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/global/tweaks.css:
--------------------------------------------------------------------------------
1 | @namespace html "http://www.w3.org/1999/xhtml";
2 | @media (prefers-color-scheme: dark) {
3 | @media not (prefers-contrast) {
4 | html|dialog,
5 | .dialogBox {
6 | --in-content-page-background: rgba(133, 131, 150, 0.2) !important;
7 | backdrop-filter: blur(12px);
8 | }
9 | :root[dialogroot] {
10 | --in-content-page-background: rgba(0,0,0, 0) !important;
11 | }
12 | }
13 | }
14 | @media (prefers-color-scheme: light) {
15 | @media not (prefers-contrast) {
16 | html|dialog,
17 | .dialogBox {
18 | --in-content-page-background: rgba(255, 255, 255, 0.85) !important;
19 | backdrop-filter: blur(12px);
20 | }
21 | :root[dialogroot] {
22 | --in-content-page-background: rgba(255, 255, 255, 0) !important;
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/chrome/icons/firefox.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/content/card-container.css:
--------------------------------------------------------------------------------
1 | @media (prefers-color-scheme: dark) {
2 | details.card-container {
3 | --fxview-primary-action-background: #47CBFF;
4 | background-color: #33333e !important;
5 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
6 | }
7 | }
8 | @media (prefers-color-scheme: light) {
9 | details.card-container {
10 | --fxview-primary-action-background: #3672e4;
11 | background-color: #ebebee !important;
12 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
13 | }
14 | }
15 | .fxview-tab-row-url {
16 | text-decoration: none !important;
17 | color: var(--fxview-primary-action-background) !important
18 | }
19 | .sticky-container.bottom-fade {
20 | background: linear-gradient(to bottom, var(--fxview-background-color) 0%, var(--fxview-background-color) 40%, transparent 100%) !important
21 | }
22 |
--------------------------------------------------------------------------------
/chrome/icons/camera-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/persistent-storage.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/xr.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/forget.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/video-save.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/zoom-control.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/private-window.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/chrome/icons/container-tab.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/media-speed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/image-save.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: amnweb # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
12 | polar: # Replace with a single Polar username
13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
14 | thanks_dev: # Replace with a single thanks.dev username
15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
16 |
--------------------------------------------------------------------------------
/chrome/icons/library.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/extension.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/screenshot.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/persistent-storage-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/xr-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/loop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/extension-blocked.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/chrome/icons/unloadTab.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/mac-close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/chrome/icons/mac-maximize.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/chrome/icons/mac-minimize.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/chrome/icons/mac-restore.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/chrome/icons/ask-chat.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/settings.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/reload-to-stop.svg:
--------------------------------------------------------------------------------
1 |
2 |
29 |
--------------------------------------------------------------------------------
/user.js:
--------------------------------------------------------------------------------
1 | // Style firefox
2 | //user_pref("browser.startup.preXulSkeletonUI", false);
3 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
4 | user_pref("svg.context-properties.content.enabled", true);
5 | user_pref("layout.css.color-mix.enabled", true);
6 | user_pref("layout.css.light-dark.enabled", true);
7 | user_pref("browser.tabs.tabMinWidth", 66);
8 | user_pref("browser.tabs.tabClipWidth", 86);
9 | user_pref("fp.tweak.autohide-bookmarks", true);
10 | user_pref("fp.tweak.macos-button", false);
11 | user_pref("fp.tweak.rounded-corners", true);
12 |
13 | // disable spell checking
14 | user_pref("layout.spellcheckDefault", 0);
15 | // disable auto install updates
16 | user_pref("app.update.auto", false);
17 | // disable background service to install updates
18 | user_pref("app.update.service.enabled", false);
19 | // open tabs to the right of the current tab
20 | user_pref("browser.tabs.insertAfterCurrent", true);
21 | // enable dark-mode
22 | user_pref("browser.in-content.dark-mode", true);
23 | user_pref("ui.systemUsesDarkTheme", 1);
24 | // restore previous session
25 | user_pref("browser.startup.page", 3);
26 | // disable data collection & crash reports
27 | user_pref("datareporting.healthreport.uploadEnabled", false);
28 | // disable WebRTC leaks
29 | user_pref("media.peerconnection.enabled", false);
30 | // allow search sugggestions in private windows
31 | user_pref("browser.search.suggest.enabled.private", true);
32 | // Disables geolocation and firefox logging geolocation requests.
33 | user_pref("geo.enabled", false);
34 | user_pref("geo.wifi.uri", "");
35 | user_pref("browser.search.geoip.url", "");
36 | // Only send pings if send and receiving host match (same website).
37 | user_pref("browser.send_pings.require_same_host", true);
38 | // Disable telemetry
39 | user_pref("toolkit.telemetry.enabled", false);
40 | // Disable (Windows-only) scheduled task which runs in the background to collect and submit data about the browser
41 | user_pref("default-browser-agent", false);
42 | // Better font rendering
43 | user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", "");
44 | user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 50);
45 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2023 amnweb
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 | ----
24 |
25 | Some parts of this project are adapted from edge-frfox (https://github.com/bmFtZQ/edge-frfox), which is licensed as follows:
26 |
27 | MIT License
28 |
29 | Copyright (c) 2021 bmFtZQ
30 |
31 | Permission is hereby granted, free of charge, to any person obtaining a copy
32 | of this software and associated documentation files (the "Software"), to deal
33 | in the Software without restriction, including without limitation the rights
34 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
35 | copies of the Software, and to permit persons to whom the Software is
36 | furnished to do so, subject to the following conditions:
37 |
38 | The above copyright notice and this permission notice shall be included in all
39 | copies or substantial portions of the Software.
40 |
41 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
44 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
45 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
46 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
47 | SOFTWARE.
48 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Firefox Plus (Windows only)
2 | > **Note:** FireFox v144+ only
3 |
4 |
5 |
6 |
7 |
8 | # Rounded Corners
9 |
10 |
11 | ***
12 |
13 | # How to install
14 | 1. Go to `about:support` and click the "Open Folder/Show in Finder" button for the root directory of your browser profile/s.
15 | 2. Download and copy the `chrome` folder and `user.js` into the profile folder.
16 | 3. Restart Firefox.
17 |
18 | ***
19 |
20 | # Tweaks
21 | - To enable macOS button style, open `user.js`, find `fp.tweak.macos-button` and set it to `true`.
22 | - To disable bookmarks autohide open `user.js`, find `fp.tweak.autohide-bookmarks` and set it to `false`.
23 | - To enable or disable rounded corners, open `user.js`, find `fp.tweak.rounded-corners` and set it to `true` or `false`.
24 | - To enable or disable tab switch animation, open `user.js`, find `fp.tweak.animation.tab-switch` and set it to `true` or `false`.
25 | - To enable or disable White Mode, open `user.js`, find `browser.in-content.dark-mode` and set it to `true` or `false`. Then find and set `ui.systemUsesDarkTheme` to `1` or `0`.
26 |
27 | ***
28 |
29 | # Install or update Firefox Plus directly from PowerShell.
30 |
31 | 1. Open PowerShell.
32 | 2. Copy and paste this command
33 |
34 | ```
35 | iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/amnweb/firefox-plus/main/install.ps1'))
36 | ```
37 |
38 |
39 |
40 | ***
41 |
42 | # 💖 Support & Suggestions
43 |
44 | If you enjoy this project and want to help me maintain it further, buying me a coffee would be greatly appreciated! [☕️](https://ko-fi.com/amnweb)
45 |
46 |
47 |
48 | ***Enjoy your enhanced browsing experience!***
49 |
50 | ## Star History
51 |
52 | 
53 |
54 | # License
55 |
56 | This project is licensed under the MIT License.
--------------------------------------------------------------------------------
/chrome/global/rounded-corners.css:
--------------------------------------------------------------------------------
1 | :root[tabsintitlebar] #TabsToolbar:-moz-window-inactive {
2 | opacity: 1 !important;
3 | }
4 | #main-window:not([chromehidden~="toolbar"]) {
5 | --rounded-corners-padding: 4px;
6 | --browser-frame-bgcolor: var(--toolbar-bgcolor, var(--lwt-accent-color));
7 | --rounded-corners-radius: 8px;
8 | --rounded-corners-in-fullscreen: block
9 | }
10 | :root:is[inFullscreen] {
11 | --rounded-corners-in-fullscreen: none
12 | }
13 | #navigator-toolbox {
14 | border-bottom: none !important;
15 | }
16 | /*Disable rounded corners in fullscreen if the toolbar is hidden.*/
17 | :root[inFullscreen] #navigator-toolbox[style*="margin-top"]+#browser,
18 | :root[inDOMFullscreen] #browser {
19 | --rounded-corners-padding: 0;
20 | --rounded-corners-radius: 0;
21 |
22 | }
23 | #browser .browserStack {
24 | margin-inline: var(--rounded-corners-padding) !important;
25 | margin-block-end: var(--rounded-corners-padding) !important;
26 | }
27 | #PersonalToolbar,
28 | #nav-bar {
29 | overflow: initial !important;
30 | }
31 | :root:is([inFullscreen]) {
32 | --rounded-corners-in-fullscreen: none !important;
33 | }
34 | #PersonalToolbar:before,
35 | #PersonalToolbar:after,
36 | #nav-bar:before,
37 | #nav-bar:after,
38 | #browser .browserStack:before,
39 | #browser .browserStack:after {
40 | content: "" !important;
41 | display: var(--rounded-corners-in-fullscreen) !important;
42 | position: absolute !important;
43 | width: 16px !important;
44 | height: 16px !important;
45 | bottom: -16px !important;
46 | pointer-events: none !important;
47 | clip-path: inset(0);
48 | border-bottom-right-radius: var(--rounded-corners-radius) !important;
49 | left: var(--rounded-corners-padding) !important;
50 | transform: rotate(180deg) !important;
51 | box-shadow: 0 0 0 18px var(--toolbar-bgcolor) !important;
52 | z-index: 1;
53 | }
54 | :root:is[inFullscreen] {
55 | --rounded-corners-in-fullscreen: none !important;
56 | }
57 | #PersonalToolbar:after,
58 | #nav-bar:after {
59 | right: var(--rounded-corners-padding) !important;
60 | left: auto !important;
61 | transform: rotate(270deg) !important;
62 | }
63 |
64 | #browser .browserStack:before,
65 | #browser .browserStack:after {
66 | bottom: 0 !important;
67 | left: 0 !important;
68 | transform: rotate(90deg) !important;
69 | }
70 |
71 | #browser .browserStack:after {
72 | right: 0 !important;
73 | left: auto !important;
74 | transform: rotate(0deg) !important;
75 | }
76 |
77 | #browser {
78 | background-color: var(--browser-frame-bgcolor) !important;
79 | }
80 | #tabbrowser-tabpanels {
81 | background-color: transparent !important;
82 | }
--------------------------------------------------------------------------------
/chrome/icons/stop-to-reload.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/chrome/toolbar/navbar.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --toolbarbutton-border-radius: 13px !important;
3 | --toolbarbutton-inner-padding: 7px !important;
4 | --fp-toolbarbutton-inner-inline-padding: 12px !important;
5 | --tabs-navbar-shadow-size: 0 !important;
6 | }
7 |
8 | #nav-bar .toolbarbutton-1>.toolbarbutton-icon {
9 | width: calc(2 * var(--fp-toolbarbutton-inner-inline-padding) + 16px) !important;
10 | }
11 |
12 | #nav-bar .toolbarbutton-1>.toolbarbutton-icon,
13 | #nav-bar .toolbarbutton-1>.toolbarbutton-text,
14 | #nav-bar .toolbarbutton-1>.toolbarbutton-badge-stack {
15 | padding-inline: var(--fp-toolbarbutton-inner-inline-padding) !important;
16 | }
17 |
18 | /* move reload/stop icon to middle of button */
19 | #reload-button>.toolbarbutton-animatable-box,
20 | #stop-button>.toolbarbutton-animatable-box {
21 | top: calc(50% - 10px) !important;
22 | }
23 |
24 | #nav-bar-customization-target :where(#reload-button, #stop-button)>.toolbarbutton-icon {
25 | padding: var(--toolbarbutton-inner-padding) var(--fp-toolbarbutton-inner-inline-padding) !important;
26 | }
27 |
28 | /* account button */
29 | #navigator-toolbox>toolbar #fxa-toolbar-menu-button,
30 | #navigator-toolbox>toolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack,
31 | #fxa-avatar-image {
32 | border-radius: 99px !important;
33 | }
34 |
35 | #nav-bar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack {
36 | padding: var(--toolbarbutton-inner-padding) !important;
37 | margin-inline: calc(var(--fp-toolbarbutton-inner-inline-padding) - var(--toolbarbutton-inner-padding)) !important;
38 | }
39 |
40 | #fxa-toolbar-menu-button {
41 | display: flex !important;
42 | display: -moz-box !important;
43 | }
44 |
45 | #widget-overflow-list>#fxa-toolbar-menu-button #fxa-avatar-image {
46 | scale: 1.25 !important;
47 | }
48 |
49 | #nav-bar-customization-target>#fxa-toolbar-menu-button #fxa-avatar-image {
50 | scale: 1.5 !important;
51 | }
52 |
53 | /* button background transition */
54 | @media not (prefers-reduced-motion) {
55 | .toolbarbutton-1>.toolbarbutton-icon,
56 | .toolbarbutton-1>.toolbarbutton-text,
57 | .toolbarbutton-1>.toolbarbutton-badge-stack,
58 | :not(.panel-subview-body>toolbaritem)>.bookmark-item:not(menu, menuitem),
59 | .urlbar-page-action,
60 | .identity-box-button,
61 | #tracking-protection-icon-container,
62 | panel button,
63 | panel menulist,
64 | .titlebar-button {
65 | transition: background-color 0.25s ease !important;
66 | }
67 |
68 | .toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-icon,
69 | .toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-text,
70 | .toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-badge-stack,
71 | :not(.panel-subview-body>toolbaritem)>.bookmark-item:not(menu, menuitem):not([disabled=true]):is([open], [checked], :hover:active),
72 | .urlbar-page-action:not([disabled=true]):is([open], [checked], :hover:active),
73 | .identity-box-button:not([disabled=true]):is([open], [checked], :hover:active),
74 | #tracking-protection-icon-container:not([disabled=true]):is([open], [checked], :hover:active),
75 | panel button:not([disabled=true]):is([open], [checked], :hover:active),
76 | panel menulist:not([disabled=true]):is([open], [checked], :hover:active),
77 | .titlebar-button:not([disabled=true]):hover:active {
78 | transition-duration: 0s !important;
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/chrome/toolbar/personalbar.css:
--------------------------------------------------------------------------------
1 | #PersonalToolbar {
2 | --bookmark-block-padding: 6px !important;
3 | position: relative;
4 | }
5 |
6 | /* Bookmarks bar item sizing */
7 | #personal-toolbar-empty-description,
8 | #PersonalToolbar .toolbarbutton-1,
9 | toolbarbutton.bookmark-item:not(.subviewbutton) {
10 | margin-block: 2px 4px !important;
11 | padding-block: var(--bookmark-block-padding) !important;
12 | padding-inline: 6px !important;
13 | font-size: 12px !important;
14 |
15 |
16 | & .toolbarbutton-text {
17 | margin-block: -1px 0 !important;
18 | }
19 |
20 | }
21 |
22 | #PersonalToolbar .toolbarbutton-1 {
23 | padding: 0 !important;
24 | }
25 |
26 | /* Bookmarks bar separators */
27 | #PlacesToolbarItems>toolbarseparator {
28 | padding-inline: 1px !important;
29 | &::before {
30 | content: "";
31 | display: block;
32 | border-inline-start: 1px solid var(--toolbarseparator-color) !important;
33 | margin-block: 8px 10px !important;
34 | border-image-source: none !important;
35 | }
36 | }
37 |
38 | /* Left and Right padding of bookmarks bar */
39 | #PersonalToolbar {
40 | padding-inline: calc(var(--toolbar-start-end-padding) - 2px) calc(var(--toolbar-start-end-padding) + 6px) !important;
41 | }
42 |
43 | /* Spacing between icon and label for bookmarks bar items */
44 | #managed-bookmarks>.toolbarbutton-icon,
45 | #bookmarks-toolbar-placeholder>.toolbarbutton-icon,
46 | #PlacesToolbarItems>.bookmark-item>.toolbarbutton-icon[label]:not([label=""]),
47 | #OtherBookmarks.bookmark-item[container]>.toolbarbutton-icon {
48 | margin-inline-end: 4px !important;
49 | }
50 |
51 | /* Sizing for bookmarks bar icons */
52 | #PersonalToolbar .toolbarbutton-1>.toolbarbutton-icon {
53 | width: calc(2 * var(--bookmark-block-padding) + 16px) !important;
54 | height: calc(2 * var(--bookmark-block-padding) + 16px) !important;
55 | padding: var(--bookmark-block-padding) !important;
56 | }
57 |
58 | toolbarbutton.bookmark-item:not(.subviewbutton, [disabled="true"], [open]):hover {
59 | background-color: rgba(255, 255, 255, 0.1) !important;
60 | }
61 | toolbarbutton.bookmark-item:hover:active:not(.subviewbutton, [disabled="true"]) {
62 | background-color: rgba(255, 255, 255, 0.2) !important;
63 | }
64 | toolbarbutton.bookmark-item[open="true"] {
65 | background-color: rgba(255, 255, 255, 0.2) !important;
66 | }
67 | toolbarbutton.bookmark-item[open="true"]>.toolbarbutton-icon {
68 | filter: brightness(2);
69 | }
70 | :root {
71 | --bookmarks-toolbar-overlapping-browser-height: 34px !important;
72 | }
73 |
74 | /* Autohide bookmark toolbar */
75 | @media -moz-pref("fp.tweak.autohide-bookmarks") {
76 | #PersonalToolbar {
77 | --bookmarks-padding: 4px;
78 | --autohide-toolbar-delay: 600ms;
79 | --autohide-toolbar-focus-rotation: 0deg;
80 | --autohide-toolbar-hover-rotation: 0deg;
81 | }
82 | :root {
83 | --firefoxcss-bookmarks-bg-color: transparent !important;
84 | }
85 | :root[uidensity="touch"] #PersonalToolbar {
86 | --bookmarks-padding: 7px
87 | }
88 | #PersonalToolbar:not([customizing]) {
89 | position: relative;
90 | margin-bottom: -34px;
91 | transform: rotateX(90deg);
92 | transform-origin: top;
93 | transition: transform 135ms linear var(--autohide-toolbar-delay) !important;
94 | z-index: 1;
95 | height: 34px;
96 | }
97 | /* .browser-toolbar:not(.titlebar-color):not(.browser-toolba) {
98 | background-color: var(--toolbar-bgcolor) !important;
99 | } */
100 | :root[uidensity="compact"] #PersonalToolbar {
101 | --toolbarbutton-outer-padding: 1px !important;
102 | }
103 | #PersonalToolbar:not(:-moz-lwtheme) {
104 | --toolbar-bgcolor: #f9f9fb;
105 | }
106 | @media (prefers-color-scheme: dark) {
107 | #PersonalToolbar:not(:-moz-lwtheme) {
108 | --toolbar-bgcolor: rgb(43, 42, 51);
109 | }
110 | }
111 | #PlacesToolbarItems>.bookmark-item,
112 | #OtherBookmarks,
113 | #PersonalToolbar>#import-button {
114 | padding-block: var(--bookmarks-padding) !important;
115 | }
116 |
117 | #nav-bar:focus-within+#PersonalToolbar {
118 | transition-delay: 100ms !important;
119 | transform: rotateX(var(--autohide-toolbar-focus-rotation, 0));
120 | }
121 | #navigator-toolbox:is(:hover, :focus-within) {
122 | border-bottom: 0;
123 | }
124 | #navigator-toolbox:hover>#PersonalToolbar {
125 | transition-delay: 800ms !important;
126 | transform: rotateX(var(--autohide-toolbar-hover-rotation, 0)) !important;
127 | }
128 |
129 | #navigator-toolbox:hover>#nav-bar:focus-within+#PersonalToolbar,
130 | #navigator-toolbox:hover>#nav-bar:focus-within+#TabsToolbar {
131 | transform: rotateX(0) !important;
132 | }
133 |
134 | }
135 | #navigator-toolbox {
136 | z-index: 3 !important;
137 | border-bottom: 0 !important
138 | }
--------------------------------------------------------------------------------
/chrome/toolbar/searchbar.css:
--------------------------------------------------------------------------------
1 | /* This Source Code Form is subject to the terms of the Mozilla Public
2 | * License, v. 2.0. If a copy of the MPL was not distributed with this
3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 |
5 | .searchbar-engine-image {
6 | width: 16px;
7 | height: 16px;
8 | list-style-image: url("chrome://global/skin/icons/defaultFavicon.svg");
9 | -moz-context-properties: fill;
10 | fill: currentColor;
11 | }
12 |
13 | .search-one-offs:not([hidden]) {
14 | display: block;
15 | width: 100%;
16 | }
17 |
18 | .search-panel-one-offs-header {
19 | display: block;
20 | }
21 |
22 | .search-panel-header {
23 | font-weight: normal;
24 | margin: 0;
25 | }
26 |
27 | .search-panel-header > label {
28 | margin-top: 2px;
29 | margin-bottom: 1px;
30 | opacity: .6;
31 | }
32 | #PopupSearchAutoComplete > menuseparator::before {border: 0 !important;}
33 | /* Make the contrast stronger in dark mode */
34 | :root[lwt-toolbar-field-focus="dark"] .search-panel-header > label {
35 | opacity: 1;
36 | }
37 |
38 | /**
39 | * The borders of the various elements are specified as follows.
40 | *
41 | * The current engine always has a bottom border.
42 | * The search results never have a border.
43 | *
44 | * When the search results are not collapsed:
45 | * - The elements underneath the search results all have a top border.
46 | *
47 | * When the search results are collapsed:
48 | * - The elements underneath the search results all have a bottom border.
49 | */
50 |
51 | .search-panel-current-engine {
52 | padding:4px !important;
53 | }
54 |
55 | .search-panel-one-offs:not([hidden]),
56 | .search-panel-one-offs-container {
57 | display: flex;
58 | flex-direction: row;
59 | flex: 1;
60 | }
61 |
62 | .search-panel-one-offs {
63 | margin: 0 !important;
64 | /* Bug 1108841: prevent font-size from affecting the layout */
65 | line-height: 0;
66 | flex-wrap: wrap;
67 | }
68 |
69 | .searchbar-engine-one-off-item {
70 | appearance: none;
71 | display: inline-flex;
72 | background-color: transparent;
73 | border: none;
74 | min-width: 32px;
75 | height: 32px;
76 | margin-inline-end: 8px;
77 | margin-block: 0;
78 | padding: 0;
79 | color: inherit;
80 | border-radius: var(--toolbarbutton-border-radius);
81 | }
82 |
83 | .searchbar-engine-one-off-item:focus-visible {
84 | outline: none;
85 | }
86 |
87 |
88 | /* We don't handle `:active` because it doesn't work on the search or settings
89 | buttons due to event.preventDefault() in SearchOneOffs._on_mousedown(). */
90 | .searchbar-engine-one-off-item:not([selected]):hover {
91 | background-color: var(--urlbarView-hover-background);
92 | color: inherit;
93 | }
94 |
95 | .searchbar-engine-one-off-item[selected] {
96 | background-color: var(--urlbarView-highlight-background);
97 | color: var(--urlbarView-highlight-color);
98 | }
99 |
100 | .searchbar-engine-one-off-item > .button-box > .button-text {
101 | display: none;
102 | }
103 |
104 | .searchbar-engine-one-off-item > .button-box > .button-icon {
105 | margin-inline: 0;
106 | width: 16px;
107 | height: 16px;
108 | }
109 |
110 | .search-panel-tree {
111 | background: transparent;
112 | color: inherit;
113 | }
114 |
115 | .search-panel-tree > .autocomplete-richlistitem {
116 | padding: 4px !important;
117 | }
118 |
119 | .search-panel-tree > .autocomplete-richlistitem:hover {
120 | background-color: var(--urlbarView-hover-background);
121 | }
122 |
123 | .search-panel-tree > .autocomplete-richlistitem > .ac-type-icon {
124 | display: flex;
125 | width: 14px;
126 | height: 14px;
127 | margin-inline-end: 7px;
128 | }
129 |
130 | .search-panel-tree > .autocomplete-richlistitem[originaltype="fromhistory"] > .ac-type-icon {
131 | list-style-image: url("chrome://browser/skin/history.svg");
132 | -moz-context-properties: fill;
133 | fill: currentColor;
134 | fill-opacity: 0.6;
135 | }
136 |
137 | .search-panel-tree > .autocomplete-richlistitem[originaltype="fromhistory"][selected] > .ac-type-icon {
138 | fill-opacity: 1;
139 | }
140 |
141 | .searchbar-separator {
142 | appearance: none;
143 |
144 | padding: 0;
145 | border: 0;
146 |
147 | color: inherit;
148 | }
149 |
150 | .search-panel-tree[collapsed=true] + .searchbar-separator {
151 | display: none;
152 | }
153 |
154 | .search-setting-button {
155 | max-height: 32px;
156 | align-self: end;
157 | margin-inline: 0;
158 | }
159 |
160 | .search-setting-button > .button-box > .button-icon {
161 | list-style-image: url("chrome://global/skin/icons/settings.svg");
162 | -moz-context-properties: fill, fill-opacity;
163 | fill: currentColor;
164 | fill-opacity: var(--urlbar-icon-fill-opacity);
165 | }
166 |
167 | #PopupSearchAutoComplete {
168 | --panel-border-radius: var(--arrowpanel-border-radius);
169 | }
170 |
171 | #urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background, #searchbar:focus-within {
172 | outline: 1px solid !important;
173 | outline-color:#0078d4 !important;
174 | }
--------------------------------------------------------------------------------
/install.ps1:
--------------------------------------------------------------------------------
1 | $logo = @"
2 | _____ _ __ ____ _
3 | | ___(_)_ __ ___ / _| _____ __| _ \| |_ _ ___
4 | | |_ | | '__/ _ \ |_ / _ \ \/ /| |_) | | | | / __|
5 | | _| | | | | __/ _| (_) > < | __/| | |_| \__ \
6 | |_| |_|_| \___|_| \___/_/\_\|_| |_|\__,_|___/
7 |
8 | Enjoy your enhanced browsing experience!
9 | https://github.com/amnweb/firefox-plus
10 |
11 | "@
12 | Clear-Host
13 |
14 | Write-Host ("{0}`n" -f ($logo -join "`n")) -ForegroundColor Blue
15 |
16 | $firefoxProfilesPath = Join-Path -Path "$env:APPDATA\Mozilla\Firefox\Profiles" -ChildPath "*.default-release"
17 | $user_script = "user.js"
18 | if (-not (Test-Path -Path $firefoxProfilesPath)) {
19 | Write-Host "We can't find the profile directory, try manual installation."
20 | }
21 |
22 | Get-ChildItem -Path $firefoxProfilesPath | ForEach-Object {
23 | Write-Host "Downloading latest release"
24 | Set-Location $firefoxProfilesPath
25 | Invoke-WebRequest -Uri "https://github.com/amnweb/firefox-plus/archive/refs/heads/main.zip" -OutFile "main.zip"
26 | Write-Host "Extracting Chrome folders"
27 | Expand-Archive -Path "main.zip" -DestinationPath . -Force
28 | Remove-Item -Path "main.zip"
29 | Set-Location "firefox-plus-main"
30 | Copy-Item -Path "chrome" -Destination .. -Recurse -Force
31 | Set-Location ..
32 | Remove-Item -Path "firefox-plus-main" -Recurse -Force
33 | Write-Host "Config user.js"
34 | $confirmAdd = {
35 | param($line)
36 | if ($line.type -eq "boolean") {
37 | do {
38 | Write-Host "$($line.desc)? (y/n) " -NoNewline
39 | $keyPress = [System.Console]::ReadKey()
40 |
41 | if ($keyPress.Key -ne [System.ConsoleKey]::Y -and $keyPress.Key -ne [System.ConsoleKey]::N) {
42 | Write-Host " Invalid response, please answer yes or no (y/n)" -ForegroundColor Red
43 | }else{
44 | Write-Host ""
45 | }
46 | }
47 | while ($keyPress.Key -ne [System.ConsoleKey]::Y -and $keyPress.Key -ne [System.ConsoleKey]::N)
48 |
49 | if ($keyPress.Key -eq [System.ConsoleKey]::Y) {
50 | return @($line, 'y')
51 | } else {
52 | return @($line, 'n')
53 | }
54 | }
55 | elseif ($line.type -eq "mixed") {
56 | do {
57 | Write-Host "$($line.desc)? (y/n) " -NoNewline
58 | $keyPress = [System.Console]::ReadKey()
59 | if ($keyPress.Key -ne [System.ConsoleKey]::Y -and $keyPress.Key -ne [System.ConsoleKey]::N) {
60 | Write-Host " Invalid response, please answer yes or no (y/n)" -ForegroundColor Red
61 | }else{
62 | Write-Host ""
63 | }
64 | }
65 | while ($keyPress.Key -ne [System.ConsoleKey]::Y -and $keyPress.Key -ne [System.ConsoleKey]::N)
66 | if ($keyPress.Key -eq [System.ConsoleKey]::Y) {
67 | return @($line, 'y')
68 | } else {
69 | return @($line, 'n')
70 | }
71 | }
72 | else {
73 | return @($line, 'default')
74 | }
75 | }
76 |
77 |
78 | $confirmAddLines = @(
79 | [PSCustomObject]@{
80 | "line" = "user_pref(`"fp.tweak.autohide-bookmarks`", true);"
81 | "desc" = "Enable autohide bookmarks"
82 | "type" = "boolean"
83 | },
84 | [PSCustomObject]@{
85 | "line" = "user_pref(`"fp.tweak.macos-button`", true);"
86 | "desc" = "Enable macos button"
87 | "type" = "boolean"
88 | },
89 | [PSCustomObject]@{
90 | "line" = "user_pref(`"fp.tweak.rounded-corners`", true);"
91 | "desc" = "Enable rounded corners"
92 | "type" = "boolean"
93 | },
94 | [PSCustomObject]@{
95 | "line" = "user_pref(`"fp.tweak.animation.tab-switch`", true);"
96 | "desc" = "Enable tab switch animation"
97 | "type" = "boolean"
98 | },
99 | [PSCustomObject]@{
100 | "line" = "user_pref(`"app.update.auto`", false);"
101 | "desc" = "Enable Firefox autoupdate"
102 | "type" = "boolean"
103 | },
104 | [PSCustomObject]@{
105 | "line" = "user_pref(`"toolkit.telemetry.enabled`", false);"
106 | "desc" = "Enable telemetry (disabled by default)"
107 | "type" = "boolean"
108 | },
109 | [PSCustomObject]@{
110 | "line" = "user_pref(`"gfx.font_rendering.cleartype_params.force_gdi_classic_for_families`", """");" +
111 | "`r`nuser_pref(`"gfx.font_rendering.cleartype_params.enhanced_contrast`", 50);"
112 | "desc" = "Enable better font rendering"
113 | "type" = "mixed"
114 | }
115 | )
116 | $fileContent = @"
117 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
118 | user_pref("svg.context-properties.content.enabled", true);
119 | user_pref("layout.css.color-mix.enabled", true);
120 | user_pref("layout.css.light-dark.enabled`", true);
121 | user_pref("browser.tabs.tabMinWidth", 66);
122 | user_pref("browser.tabs.tabClipWidth", 86);
123 | user_pref("browser.in-content.dark-mode", true);
124 | user_pref("ui.systemUsesDarkTheme", 1);`r`n
125 | "@
126 |
127 | foreach ($lineObj in $confirmAddLines) {
128 | $result = $confirmAdd.Invoke($lineObj)
129 | $line = $result[0]
130 | $answer = $result[1]
131 |
132 | if ($line.type -eq "boolean") {
133 | if ($answer -eq 'y') {
134 | $fileContent += $line.line + "`r`n"
135 | } else {
136 | $fileContent += $line.line.Replace('true','false') + "`r`n"
137 | }
138 | }
139 | elseif ($line.type -eq "mixed") {
140 | if ($answer -eq 'y') {
141 | $fileContent += $line.line + "`r`n"
142 | }
143 | }
144 | else {
145 | $fileContent += $line.line + "`r`n"
146 | }
147 | }
148 |
149 | [void](New-Item -Path $user_script -ItemType File -Force)
150 | Set-Content -Path $user_script -Value $fileContent
151 | Write-Host "`r`nDone, Restart Firefox" -ForegroundColor Green
152 | Write-Host "After restarting Firefox, you can delete the `"$user_script`" file from the profile directory`r`n" -ForegroundColor Green
153 | }
--------------------------------------------------------------------------------
/chrome/content/newtab.css:
--------------------------------------------------------------------------------
1 | /* colours */
2 | @-moz-document url-prefix("about:newtab"),
3 | url-prefix("about:home"),
4 | url-prefix("about:firefoxview") {
5 | :root:not([lwt-newtab], [lwt-newtab-brighttext]) {
6 | --newtab-background-color: #F7F7F7 !important;
7 | --newtab-background-color-secondary: #fff !important;
8 | --newtab-text-primary-color: #252525 !important;
9 | --newtab-primary-action-background: #0078D4 !important;
10 | --newtab-text-secondary-color: color-mix(in srgb, var(--newtab-text-primary-color) 80%, transparent) !important;
11 | --newtab-element-hover-color: color-mix(in srgb, var(--newtab-background-color) 95%, #000) !important;
12 | --newtab-element-active-color: color-mix(in srgb, var(--newtab-background-color) 90%, #000) !important;
13 | --newtab-element-secondary-color: color-mix(in srgb, currentColor 5%, transparent) !important;
14 | --newtab-element-secondary-hover-color: color-mix(in srgb, currentColor 12%, transparent) !important;
15 | --newtab-element-secondary-active-color: color-mix(in srgb, currentColor 25%, transparent) !important;
16 | --newtab-primary-element-hover-color: color-mix(in srgb, var(--newtab-primary-action-background) 90%, #000) !important;
17 | --newtab-primary-element-active-color: color-mix(in srgb, var(--newtab-primary-action-background) 80%, #000) !important;
18 | --newtab-primary-element-text-color: #fff !important;
19 | --newtab-primary-action-background-dimmed: color-mix(in srgb, var(--newtab-primary-action-background) 25%, transparent) !important;
20 | --newtab-border-color: color-mix(in srgb, var(--newtab-background-color) 75%, #000) !important;
21 | --newtab-wordmark-color: #737373 !important;
22 | --newtab-status-success: #50B080 !important;
23 | --newtab-status-error: #FF848A !important;
24 | --newtab-inner-box-shadow-color: rgb(0 0 0 / .1) !important;
25 | --newtab-overlay-color: color-mix(in srgb, var(--newtab-background-color) 85%, transparent) !important;
26 | --newtab-text-emphasis-background: #FFED32 !important;
27 | --newtab-text-emphasis-text-color: #000 !important;
28 | --newtab-textbox-focus-color: var(--newtab-primary-action-background) !important;
29 | --newtab-textbox-focus-boxshadow: 0 0 0 1px var(--newtab-primary-action-background), 0 0 0 4px rgba(var(--newtab-primary-action-background), 0.3) !important;
30 | --newtab-button-secondary-color: inherit !important;
31 | }
32 |
33 | :root:not([style*="color"])[lwt-newtab-brighttext] {
34 | --newtab-background-color: #252525 !important;
35 | --newtab-background-color-secondary: #4A4A4A !important;
36 | --newtab-text-primary-color: #fff !important;
37 | --newtab-primary-action-background: #75B6E8 !important;
38 | --newtab-element-hover-color: color-mix(in srgb, var(--newtab-background-color) 95%, #FFF) !important;
39 | --newtab-element-active-color: color-mix(in srgb, var(--newtab-background-color) 90%, #FFF) !important;
40 | --newtab-element-secondary-color: color-mix(in srgb, currentColor 10%, transparent) !important;
41 | --newtab-element-secondary-hover-color: color-mix(in srgb, currentColor 17%, transparent) !important;
42 | --newtab-element-secondary-active-color: color-mix(in srgb, currentColor 30%, transparent) !important;
43 | --newtab-border-color: color-mix(in srgb, var(--newtab-background-color) 75%, #FFF) !important;
44 | --newtab-primary-element-text-color: #252525 !important;
45 | --newtab-wordmark-color: #fff !important;
46 | --newtab-status-success: #50B080 !important;
47 | }
48 | }
49 |
50 | @-moz-document url-prefix("about:newtab"),
51 | url-prefix("about:home") {
52 | /* hide pin */
53 | .icon.icon-pin-small {
54 | display: none !important;
55 | }
56 |
57 | /* unpinned sites have lower opacity title */
58 | .top-site-button .title:not(.pinned) {
59 | opacity: 0.7 !important;
60 | }
61 |
62 | /* search bar */
63 | .search-wrapper .search-inner-wrapper {
64 | min-height: 44px !important;
65 | }
66 |
67 | .search-handoff-button {
68 | border-radius: 99px !important;
69 | background-position: 12px !important;
70 | padding-inline-start: 48px !important;
71 | white-space: nowrap !important;
72 | text-overflow: ellipsis !important;
73 | --elevation: 4;
74 | box-shadow: 0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / .11), 0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / .13) !important;
75 | }
76 |
77 | .search-handoff-button:hover {
78 | --elevation: 6;
79 | }
80 |
81 | .search-wrapper.fake-focus:not(.search.disabled) .search-handoff-button {
82 | border-color: transparent !important;
83 | outline: 1px solid #0078D4 !important;
84 | outline-offset: -1px !important;
85 | }
86 |
87 | .search-handoff-button .fake-caret {
88 | inset-inline-start: 48px !important;
89 | top: 13px !important;
90 | }
91 |
92 | .search-disabled .search-handoff-button {
93 | opacity: 0 !important;
94 | }
95 |
96 | /* top sites */
97 | .top-site-outer .tile {
98 | border-radius: 16px !important;
99 | height: 72px !important;
100 | width: 72px !important;
101 | box-shadow: none !important;
102 | }
103 |
104 |
105 | /* card */
106 | .card-outer,
107 | .card-outer .card,
108 | .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) {
109 | border-radius: 6px !important;
110 | }
111 |
112 | .card-outer .card,
113 | .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) {
114 | box-shadow: 0 1px 4px rgb(0 0 0 / .3) !important;
115 | }
116 |
117 | .card-outer .card-preview-image-outer,
118 | .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) .img-wrapper .img img {
119 | border-radius: 6px 6px 0 0 !important
120 | }
121 |
122 | .fake-textbox {
123 | overflow: hidden !important;
124 | text-overflow: ellipsis !important;
125 | }
126 |
127 | .outer-wrapper.only-search {
128 | display: flex !important;
129 | padding: 30px !important;
130 | }
131 |
132 | .top-sites-list:not(.dnd-active) .top-site-outer:is(.active, :focus, :hover){
133 | background-color: #3c3c47 !important;
134 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
135 | }
136 |
137 | }
138 |
139 | /* Private browsing new tab */
140 | @-moz-document url-prefix(about:privatebrowsing) {
141 | :root {
142 | --fp-wordmark-color: light-dark(#737373, #fff);
143 | --fp-background-color-secondary: light-dark(#fff, #4a4a4a);
144 |
145 | @media -moz-pref("browser.theme.dark-private-windows") {
146 | color-scheme: dark !important;
147 | }
148 | }
149 |
150 | .search-inner-wrapper {
151 | height: 44px !important;
152 | }
153 |
154 | .search-handoff-button,
155 | .search-handoff-button:active,
156 | .search-handoff-button:enabled:hover:active {
157 | background-color: var(--fp-background-color-secondary) !important;
158 | background-size: 24px;
159 | border: 0 !important;
160 | border-radius: 99px !important;
161 | padding-inline-start: 48px !important;
162 | --elevation: 4;
163 | box-shadow: 0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / .11), 0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / .13) !important;
164 | }
165 |
166 | .search-handoff-button:hover {
167 | --elevation: 6;
168 | }
169 |
170 | .search-handoff-button.focused:not(.disabled) {
171 | box-shadow: none !important;
172 | outline: 2px solid var(--in-content-focus-outline-color) !important;
173 | outline-offset: -1px !important;
174 | }
175 |
176 | .search-handoff-button.disabled {
177 | opacity: 0 !important;
178 | }
179 |
180 | .fake-textbox {
181 | color: var(--in-content-page-color) !important;
182 | }
183 |
184 | .wordmark {
185 | fill: var(--fp-wordmark-color) !important;
186 | }
187 |
188 | .info {
189 | background-color: var(--fp-background-color-secondary) !important;
190 | background-image: none !important;
191 | position: relative !important;
192 | }
193 |
194 | .info::before {
195 | content: "";
196 | position: absolute;
197 | left: 32px;
198 | top: 20px;
199 | height: 32px;
200 | aspect-ratio: 1 / 1;
201 | background: center / contain url("../icons/account-private.svg");
202 | border-radius: 99px;
203 | }
204 | }
205 |
--------------------------------------------------------------------------------
/chrome/toolbar/urlbar.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --urlbar-min-height: 30px !important;
3 | --urlbarView-item-inline-padding: 14px !important;
4 | --urlbar-icon-border-radius: calc(
5 | var(--toolbarbutton-border-radius) + 14px
6 | ) !important;
7 | --urlbar-icon-padding: calc(
8 | var(--toolbarbutton-inner-padding) - 2px
9 | ) !important;
10 | --fp-urlbar-icon-inline-padding: calc(
11 | var(--fp-toolbarbutton-inner-inline-padding) - 2px
12 | ) !important;
13 | --identity-box-margin-inline: 2px !important;
14 | --link-color: light-dark(#3672e4, #47cbff) !important;
15 | }
16 | :root[style*="--lwt-accent-color: rgb(240, 240, 244)"]
17 | #urlbar[focused="true"]:not([suppress-focus-border])
18 | > #urlbar-background,
19 | :root[style*="--lwt-accent-color: rgb(240, 240, 244)"] #searchbar:focus-within {
20 | outline-color: color-mix(
21 | in srgb,
22 | var(--toolbar-field-focus-border-color) 50%,
23 | transparent
24 | ) !important;
25 | }
26 |
27 | :root:not([lwtheme-brighttext="true"]) #urlbar-background {
28 | box-shadow: var(--fp-urlbar-shadow, none);
29 | }
30 |
31 | #urlbar[open] > #urlbar-background {
32 | border-color: transparent !important;
33 | box-shadow: 0 10px 16px #0005, 0 0 1px #0006 !important;
34 | }
35 |
36 | .urlbarView {
37 | margin-inline: 0 !important;
38 | width: 100% !important;
39 | border-inline: 0 !important;
40 | }
41 |
42 | .urlbarView-row {
43 | padding-block: 0 !important;
44 | }
45 |
46 | .urlbarView-row-inner {
47 | border-radius: 0 !important;
48 | padding-block: 8px !important;
49 | }
50 |
51 | .urlbarView-row:not([type="tip"], [type="dynamic"])[selected]
52 | > .urlbarView-row-inner,
53 | .urlbarView-row-inner[selected] {
54 | box-shadow: 3px 0 #47cbff inset !important;
55 | }
56 |
57 | #urlbar-anon-search-settings {
58 | margin-inline-end: 8px !important;
59 | }
60 |
61 | #urlbar .search-one-offs:not([hidden]) {
62 | padding-block: 8px 0 !important;
63 | }
64 |
65 |
66 | /* #urlbar[breakout][breakout-extend] {
67 | left: 0 !important;
68 | width: 100% !important;
69 | } */
70 |
71 | #urlbar[breakout][breakout-extend] > #urlbar-input-container {
72 | padding-inline: var(--urlbar-container-padding) !important;
73 | }
74 |
75 | .urlbarView-results {
76 | padding-block: 0 !important;
77 | }
78 |
79 | #urlbar[open] > .urlbarView > .urlbarView-body-outer > .urlbarView-body-inner,
80 | .urlbarView:not([noresults]) > .search-one-offs:not([hidden]) {
81 | border-top: 0 !important;
82 | }
83 |
84 | /* urlbar spacing */
85 | #urlbar-container {
86 | --urlbar-container-height: calc(
87 | 8px + 16px + var(--toolbarbutton-inner-padding) * 2
88 | ) !important;
89 | }
90 |
91 | #urlbar {
92 | --urlbar-toolbar-height: calc(
93 | 8px + 16px + var(--toolbarbutton-inner-padding) * 2
94 | ) !important;
95 | --urlbar-height: calc(
96 | 16px + var(--toolbarbutton-inner-padding) * 2
97 | ) !important;
98 | }
99 |
100 | #urlbar-container,
101 | #search-container {
102 | margin-inline: 6px !important;
103 | }
104 |
105 | .urlbar-page-action,
106 | #urlbar-go-button,
107 | .search-go-button,
108 | #tracking-protection-icon-container,
109 | #identity-icon-box {
110 | padding-inline: var(--fp-urlbar-icon-inline-padding) !important;
111 | width: calc(var(--fp-urlbar-icon-inline-padding) * 2 + 16px) !important;
112 | }
113 | .urlbar-page-action#translations-button[translationsactive="true"] {
114 | width: auto !important;
115 | }
116 | #translations-button-locale {
117 | border-radius: 12px !important;
118 | margin-inline: 4px -2px !important;
119 | }
120 | #identity-box[pageproxystate="valid"].notSecureText > .identity-box-button,
121 | #identity-box[pageproxystate="valid"].chromeUI > .identity-box-button,
122 | #identity-box[pageproxystate="valid"].extensionPage > .identity-box-button,
123 | #urlbar-label-box {
124 | width: unset !important;
125 | }
126 |
127 | #identity-icon-box,
128 | #identity-permission-box,
129 | .notification-anchor-icon {
130 | padding-inline: var(--fp-urlbar-icon-inline-padding) !important;
131 | }
132 |
133 | #urlbar-background,
134 | .urlbar-background,
135 | #searchbar {
136 | border-radius: var(--urlbar-icon-border-radius) !important;
137 | }
138 |
139 | #urlbar:hover:not([suppress-focus-border]) > #urlbar-background,
140 | #searchbar:hover {
141 | outline: 1.5px solid var(--urlbar-hover-highlight-color);
142 | }
143 | #urlbar[focused]:not([suppress-focus-border]) > #urlbar-background, #searchbar:focus {
144 |
145 | outline: 1.5px solid #0078d4 !important;
146 | }
147 |
148 | /* move tracking protection button */
149 | #tracking-protection-icon-container,
150 | #page-action-buttons {
151 | -moz-box-ordinal-group: 2 !important;
152 | order: 2 !important;
153 | }
154 |
155 |
156 | #searchbar {
157 | padding: 0 4px !important;
158 | }
159 |
160 | @media (max-width: 450px) {
161 | #urlbar-container:not(:hover) #pageActionButton {
162 | visibility: collapse !important;
163 | }
164 | }
165 |
166 | @media (max-width: 570px) {
167 | #urlbar-container {
168 | min-width: 206px !important;
169 | }
170 |
171 | #nav-bar-customization-target:not(:hover) #downloads-button:not([open]) {
172 | visibility: collapse !important;
173 | }
174 | }
175 | /*
176 | #urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background,
177 | #searchbar:focus-within {
178 | outline-offset: calc(var(--focus-outline-width) * -1 + 1px) !important;
179 | } */
180 |
181 | .urlbarView {
182 | padding-block-end: 8px !important;
183 | }
184 |
185 | .urlbarView-row[pinned]
186 | > .urlbarView-row-inner
187 | > .urlbarView-no-wrap
188 | > .urlbarView-type-icon {
189 | fill: var(--toolbar-field-color) !important;
190 | }
191 |
192 | #userContext-icons,
193 | #urlbar-zoom-button {
194 | padding-inline: var(--fp-urlbar-icon-inline-padding) !important;
195 | margin-block: 0 !important;
196 | margin-inline: 0 !important;
197 | }
198 |
199 | #urlbar-input::placeholder,
200 | .searchbar-textbox::placeholder {
201 | opacity: 0.6 !important;
202 | }
203 |
204 | :is(
205 | :root:not(:-moz-lwtheme),
206 | :root[style*="--lwt-accent-color: rgb(240, 240, 244)"]
207 | )
208 | #identity-icon-label {
209 | opacity: var(--urlbar-icon-fill-opacity) !important;
210 | }
211 |
212 | #notification-popup-box:hover {
213 | background-color: var(--urlbar-box-hover-bgcolor) !important;
214 | }
215 |
216 | #notification-popup-box:hover:active,
217 | #notification-popup-box[open] {
218 | background-color: var(--urlbar-box-active-bgcolor) !important;
219 | }
220 |
221 | /* remove background from urlbar box */
222 | #identity-box[pageproxystate="valid"].notSecureText
223 | > .identity-box-button:not(:hover, [open]),
224 | #identity-box[pageproxystate="valid"].chromeUI
225 | > .identity-box-button:not(:hover, [open]),
226 | #identity-box[pageproxystate="valid"].extensionPage
227 | > .identity-box-button:not(:hover, [open]) {
228 | background-color: transparent !important;
229 | }
230 |
231 | :is(
232 | :root:not(:-moz-lwtheme),
233 | :root[style*="--lwt-accent-color: rgb(240, 240, 244)"]
234 | #urlbar[focused="true"],
235 | :root[lwt-default-theme-in-dark-mode="true"],
236 | :root[style*="--lwt-accent-color: rgb(28, 27, 34)"]
237 | )
238 | #urlbar-search-mode-indicator {
239 | background-color: var(--urlbar-box-hover-bgcolor) !important;
240 | }
241 |
242 | /* increase space between icon and text */
243 | #identity-icon-label {
244 | padding-inline-start: 8px !important;
245 | }
246 |
247 | /* separator for urlbar box */
248 | #identity-box {
249 | position: relative;
250 | }
251 |
252 | :is(
253 | #identity-box[pageproxystate="valid"].notSecureText
254 | > .identity-box-button,
255 | #identity-box[pageproxystate="valid"].chromeUI > .identity-box-button,
256 | #identity-box[pageproxystate="valid"].extensionPage
257 | > .identity-box-button
258 | )::after {
259 | content: "";
260 | position: absolute;
261 | display: block;
262 | height: 16px;
263 | border-right: 1px solid currentColor;
264 | right: 0;
265 | top: calc(
266 | (var(--urlbar-height) / 2 - 1px - var(--urlbar-container-padding)) - 8px
267 | );
268 | opacity: 0;
269 | }
270 |
271 | @media not (prefers-reduced-motion) {
272 | :is(
273 | #identity-box[pageproxystate="valid"].notSecureText
274 | > .identity-box-button,
275 | #identity-box[pageproxystate="valid"].chromeUI
276 | > .identity-box-button,
277 | #identity-box[pageproxystate="valid"].extensionPage
278 | > .identity-box-button
279 | )::after {
280 | transition: opacity 0.2s ease;
281 | }
282 | }
283 |
284 | :is(
285 | #identity-box[pageproxystate="valid"].notSecureText
286 | > .identity-box-button:not(:hover, [open]),
287 | #identity-box[pageproxystate="valid"].chromeUI
288 | > .identity-box-button:not(:hover, [open]),
289 | #identity-box[pageproxystate="valid"].extensionPage
290 | > .identity-box-button:not(:hover, [open])
291 | )::after {
292 | opacity: 0.375;
293 | }
294 |
295 | #urlbar[open] .urlbarView,
296 | #urlbar[breakout][breakout-extend] > #urlbar-background {
297 | animation-name: fp-urlbar-animation !important;
298 | animation-duration: 400ms !important;
299 | transform-origin: top !important;
300 | animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1) !important;
301 | }
302 |
303 | @keyframes fp-urlbar-animation {
304 | from {
305 | opacity: 0;
306 | transform: scaleY(0);
307 | }
308 |
309 | to {
310 | opacity: 1;
311 | transform: scaleY(1);
312 | }
313 | }
--------------------------------------------------------------------------------
/chrome/icons/firefox-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/content/common.css:
--------------------------------------------------------------------------------
1 | /* colours */
2 | :root {
3 | --in-content-primary-button-text-color: rgb(255, 255, 255) !important;
4 | --in-content-primary-button-background: #0055D7 !important;
5 | --in-content-primary-button-background-hover: #0960e4 !important;
6 | --in-content-primary-button-background-active: #0751be !important;
7 | }
8 |
9 | @-moz-document url-prefix(about:) {
10 | :root {
11 |
12 | --newtab-primary-element-text-color: rgba(251, 251, 254, 1) !important;
13 | --in-content-page-color: light-dark(var(--newtab-background-color), #fff) !important;
14 | --in-content-page-background: light-dark(#f7f7f7, var(--newtab-background-color)) !important;
15 | --in-content-deemphasized-text: light-dark(#666, #bbb) !important;
16 | --in-content-box-background: light-dark(#fff, #333) !important;
17 | --in-content-box-background-odd: light-dark(rgb(0 0 0 / .05), rgb(255 255 255 / .05)) !important;
18 | --in-content-box-info-background: light-dark(#f7f7f7, rgb(255 255 255 / 0.15)) !important;
19 | --in-content-icon-color: light-dark(#666, #fff) !important;
20 | --in-content-accent-color: light-dark(#006CBE, #3c90ff) !important;
21 | --in-content-accent-color-active: light-dark(#1683D8, #4C98D1) !important;
22 | --in-content-border-hover: light-dark(rgb(0 0 0 / .5), rgb(255 255 255 / .3)) !important;
23 | --in-content-border-invalid: var(--red-50) !important;
24 | --in-content-border-color: light-dark(#bebebe, rgb(255 255 255 / .2)) !important;
25 | --in-content-error-text-color: light-dark(#FF848A, #FF9AA2) !important;
26 | --in-content-link-color: light-dark(#0078D4, #3c90ff) !important;
27 | /* --in-content-link-color-hover: light-dark(#006CBE, #63ADE5) !important; */
28 | --in-content-link-color-hover: light-dark(#006CBE, #0078d4) !important;
29 | --in-content-link-color-active: light-dark(#0749AC, #4C98D1) !important;
30 | --in-content-link-color-visited: light-dark(#0078D4, #3c90ff) !important;
31 | --link-color: var(--in-content-link-color) !important;
32 | --link-color-hover: var(--in-content-link-color-hover) !important;
33 | --link-color-active: var(--in-content-link-color-active) !important;
34 | --link-color-visited: var(--in-content-link-color-visited) !important;
35 | --in-content-button-text-color: var(--in-content-text-color) !important;
36 | --in-content-button-text-color-hover: var(--in-content-text-color) !important;
37 | --in-content-button-text-color-active: var(--in-content-button-text-color-hover) !important;
38 | --in-content-button-background: light-dark(#EDEDED, #3B3B3B) !important;
39 | --in-content-button-background-hover: light-dark(#e5e5e5, #545454) !important;
40 | --in-content-button-background-active: light-dark(#d5d5d5, #606060) !important;
41 | --in-content-primary-button-text-color: light-dark(#fff, #fff) !important;
42 | --in-content-danger-button-background: light-dark(#DF4951, #E12424) !important;
43 | --in-content-danger-button-background-hover: light-dark(#EA656C, #F94343) !important;
44 | --in-content-danger-button-background-active: light-dark(#BB353C, #AA1E1E) !important;
45 | /* --in-content-focus-outline-color: light-dark(rgb(0 85 215 / .5), #63ADE5) !important; */
46 | --in-content-focus-outline-color: light-dark(rgb(0 85 215 / .5), #0078d4) !important;
47 | --focus-outline-color: var(--in-content-focus-outline-color) !important;
48 | --in-content-table-background: light-dark(#f7f7f7, var(--newtab-background-color)) !important;
49 | --in-content-text-color: var(--in-content-page-color) !important;
50 | scrollbar-color: light-dark(rgb(37 37 37 / .4), rgb(255 255 255 / .4)) light-dark(#f7f7f7, var(--newtab-background-color)) !important;
51 | }
52 |
53 | #translations-manage-install-list,
54 | #handlersView,
55 | #handlersViewHeader,
56 | #engineList,
57 | .web-appearance-choice-image-container,
58 | treecol:not([hideheader="true"]),
59 | input:where([type="email"], [type="tel"], [type="text"], [type="password"], [type="url"], [type="number"]),
60 | textarea,
61 | search-textbox {
62 | background-color: transparent !important;
63 | }
64 |
65 | .customize-menu .close-button-wrapper {
66 | background-color: transparent !important;
67 | }
68 | @media (prefers-color-scheme: dark) {
69 |
70 | button:not(.ghost-button):not(.wallpapers-reset):not(.arrow-button):not(.enable-custom-image-input):not(.external-link):not(.context-menu-button.icon):not(.toggle-button):not(.category):not([role="menuitem"]):not(button[class*='devtools']):not(button[id*='toolbox']),
71 | menulist {
72 | border: 1px solid #44434f !important;
73 | background-color: light-dark(#EDEDED, #35343e) !important;
74 | }
75 |
76 | button:hover:not(.ghost-button):not(.wallpapers-reset):not(.arrow-button):not(.enable-custom-image-input):not(.external-link):not(.context-menu-button.icon):not(.toggle-button):not(.category):not([role="menuitem"]):not(button[class*='devtools']):not(button[id*='toolbox']),
77 | menulist {
78 | border: 1px solid #4c4b57 !important;
79 | background-color: light-dark(#EDEDED, #393842) !important;
80 | }
81 |
82 | button:hover:active:not(.ghost-button):not(.wallpapers-reset):not(.arrow-button):not(.enable-custom-image-input):not(.external-link):not(.context-menu-button.icon):not(.toggle-button):not(.category):not([role="menuitem"]):not(button[class*='devtools']):not(button[id*='toolbox']),
83 | menulist {
84 | border: 1px solid #4c4b57 !important;
85 | background-color: light-dark(#EDEDED, #403f49) !important;
86 | }
87 |
88 | button:active:not(.ghost-button):not(.wallpapers-reset):not(.arrow-button):not(.enable-custom-image-input):not(.external-link):not(.context-menu-button.icon):not(.toggle-button):not(.category):not([role="menuitem"]):not(button[class*='devtools']):not(button[id*='toolbox']),
89 | menulist {
90 | border: 1px solid #44434f !important;
91 | background-color: light-dark(#EDEDED, #2d2c35) !important;
92 | }
93 |
94 | .customize-menu {
95 | background-color:light-dark(#fff,rgb(28, 27, 34)) !important;
96 | }
97 | }
98 | }
99 |
100 |
101 | /* preferences */
102 | @-moz-document url-prefix("about:preferences"), url-prefix("about:preferences#"), url-prefix("about:addons"), url-prefix("about:config") {
103 | table#prefs {
104 | background: transparent !important;
105 | }
106 |
107 | .card {
108 | background: light-dark(#fff, #33333e) !important;
109 | }
110 |
111 | @media (prefers-color-scheme: dark) {
112 |
113 | .sticky-container,
114 | .table-shown #toolbar {
115 | background: #1c1b22 !important;
116 | }
117 | }
118 |
119 | @media (prefers-color-scheme: light) {
120 |
121 | .sticky-container,
122 | .table-shown #toolbar {
123 | background: #ffffff !important;
124 | }
125 | }
126 |
127 |
128 |
129 | .category[selected] {
130 | position: relative !important;
131 | border-radius: 4px !important;
132 | }
133 |
134 | .category[selected]:not(:hover, :active) {
135 | background-color: var(--in-content-button-background) !important;
136 | }
137 |
138 | .category[selected]::before {
139 | content: "";
140 | display: block;
141 | height: 24px;
142 | width: 3px;
143 | background-color: var(--in-content-accent-color);
144 | border-radius: 3px;
145 | position: absolute;
146 | left: 2px;
147 | top: 50%;
148 | translate: 0 -50%;
149 | }
150 |
151 | button.tab-button:hover {
152 | border-block-color: transparent var(--in-content-box-border-color) !important;
153 | }
154 |
155 | button.tab-button[selected],
156 | button.tab-button[selected]:hover {
157 | border-block-color: transparent currentColor !important;
158 | }
159 |
160 | }
161 |
162 | /* fix page flashes when loading some websites */
163 | @-moz-document url("about:newtab"), url("about:blank"), url("about:home") {
164 | body {
165 | background: var(--in-content-page-background);
166 | color: var(--in-content-page-color);
167 | }
168 | }
169 |
170 | @-moz-document url(about:newtab), url(about:home){
171 |
172 | /* Changes the logo on the about:home screen */
173 | .search-wrapper .logo-and-wordmark .logo {
174 | background: url('../icons/firefox-logo.svg') !important;
175 | }
176 |
177 | .search-wrapper .logo-and-wordmark::after {
178 | content: "plus";
179 | font-size: 16px;
180 | margin-top: -8px;
181 | margin-left: 4px;
182 | opacity: 0.8;
183 | }
184 |
185 | }
186 |
187 |
188 |
189 | @-moz-document url("about:home"), url("about:newtab") {
190 | body.activity-stream .outer-wrapper .top-sites-list .top-site-outer {
191 | padding: 14px 20px 4px !important;
192 | position: relative;
193 | margin-block-end:0 !important
194 | }
195 | body.darkWallpaper .outer-wrapper .top-sites-list .top-site-outer:after,
196 | body.lightWallpaper .outer-wrapper .top-sites-list .top-site-outer:after {
197 | content: "";
198 | background: rgba(255, 255, 255, 0.15);
199 | left: 0;
200 | top: 0;
201 | right: 0;
202 | bottom: 0;
203 | position: absolute;
204 | z-index: -1;
205 | margin: 10px;
206 | border-radius: 8px;
207 | backdrop-filter: blur(6px);
208 | box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3);
209 |
210 | }
211 | body.activity-stream .outer-wrapper .top-sites-list:not(.dnd-active) .top-site-outer:is(.active, :focus, :hover):after {
212 | background: rgba(255, 255, 255, 0)!important;
213 | box-shadow: none!important;
214 | backdrop-filter: blur(6px);
215 | margin: auto;
216 | }
217 | body.activity-stream .outer-wrapper .top-sites-list:not(.dnd-active) .top-site-outer:is(.active, :focus, :hover){
218 | background: rgba(255, 255, 255, 0.1) !important;
219 | }
220 |
221 | /* Firefox 124.0+ fix for homepage top-sites-list */
222 | #root .top-site-outer .top-site-inner > a {
223 | padding: 0 !important;
224 | }
225 | #root .top-site-outer .tile .icon-wrapper,
226 | #root .outer-wrapper .top-site-outer .top-site-inner,
227 | #root .outer-wrapper .top-site-outer .top-site-inner .tile {
228 | border-radius: 50% !important;
229 |
230 | }
231 | .layout-variant-b .top-sites-list {
232 | row-gap: var(--space-large) !important;
233 | }
234 | .top-site-outer .context-menu-button {
235 | transform: rotate(90deg);
236 | right: -20px !important;
237 | top: -8px !important;
238 | background-color: transparent !important;
239 | }
240 | .top-site-outer .context-menu-button:is(:active, :focus) {
241 | fill: light-dark(#000, #fff) !important
242 | }
243 | .outer-wrapper .body-wrapper .top-site-outer .top-site-inner .tile {
244 | /* border-bottom: 1px solid #ffffff12 !important; */
245 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.35) !important;
246 | }
247 | .layout-variant-b .top-site-outer {
248 | width: calc(var(--size-item-large) * 3.75) !important
249 | }
250 | #root .outer-wrapper .top-site-outer .default-icon {
251 | background-size: 48px !important;
252 | height: 72px !important;
253 | width: 72px !important;
254 | }
255 |
256 | #root .top-site-outer .tile .icon-wrapper {
257 | width: 72px !important;
258 | height: 72px !important;
259 | }
260 |
261 | .top-site-outer .tile .icon-wrapper.letter-fallback::before {
262 | font-size: 48px !important;
263 | top: -3px !important;
264 | }
265 | /* Wallpapers selector */
266 | .wallpaper-list {
267 | margin: 0 !important;
268 | }
269 | .wallpaper-list.category {
270 | background-color: rgba(66, 65, 77, 0.43) !important;
271 | height: 100%;
272 | inset-inline-start: 25px;
273 | position: absolute;
274 | top: 0;
275 | inset-inline-start:0 !important;
276 | left: 0;
277 | bottom: 0;
278 | right: 0;
279 | width: 100% !important;
280 | backdrop-filter: blur(12px);
281 | }
282 |
283 | }
--------------------------------------------------------------------------------
/chrome/toolbar/tabbar.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --lwt-selected-tab-background-color: unset !important;
3 | --tab-block-margin: 8px !important;
4 | --tab-selected-bgcolor: var(--toolbar-bgcolor) !important;
5 | & #TabsToolbar {
6 | --tab-min-height: 32px !important;
7 | --inline-tab-padding: 11px !important;
8 | --tab-border-radius: 8px !important;
9 |
10 | --fp-toolbarbutton-inner-padding: 6px !important;
11 | --toolbarbutton-border-radius: 4px !important;
12 | --toolbarbutton-tabsline-border-radius: 8px !important;
13 | --tabs-navbar-shadow-size: 0 !important;
14 | --tab-shadow-max-size: 0 !important;
15 | }
16 | }
17 | #tabbrowser-tabs {
18 | &[orient="horizontal"] {
19 | min-height: var(--tab-min-height) !important;
20 | }
21 | }
22 | .tabbrowser-tab .tab-stack {
23 | &::before,
24 | &::after {
25 | content: initial !important;
26 | }
27 | }
28 | .tabbrowser-tab .tab-close-button {
29 | visibility: hidden !important;
30 | }
31 | .tabbrowser-tab:hover .tab-close-button {
32 | visibility: visible !important;
33 | }
34 | .tabbrowser-tab:not([pinned]) {
35 | transition-property: min-width, max-width !important;
36 | transition-duration: 250ms !important;
37 | transition-timing-function: cubic-bezier(0, 0.75, 0.25, 1) !important;
38 | }
39 |
40 | #tabbrowser-tabs[movingtab]
41 | > #tabbrowser-arrowscrollbox
42 | > .tabbrowser-tab[fadein]:not([selected]):not([multiselected]),
43 | .tabbrowser-tab[tab-grouping],
44 | .tabbrowser-tab[tabdrop-samewindow] {
45 | transition: transform 300ms cubic-bezier(0, 0.75, 0.25, 1) !important;
46 | }
47 |
48 | /* :root:is([inFullscreen], :not([tabsintitlebar])) {
49 | --tab-block-margin: 0px !important;
50 | } */
51 |
52 | .tab-background {
53 | border-radius: var(--tab-border-radius);
54 | border-bottom-left-radius: 0 !important;
55 | border-bottom-right-radius: 0 !important;
56 | margin-block: 0 !important;
57 | border: 0 !important;
58 | position: relative !important;
59 | --fp-tab-corner-bg: transparent;
60 |
61 | /* Rounded bottom corners */
62 | &::before,
63 | &::after {
64 | content: "" !important;
65 | display: block !important;
66 | position: absolute !important;
67 | width: 8px !important;
68 | height: 8px !important;
69 | bottom: -0.01px !important;
70 | pointer-events: none !important;
71 | clip-path: inset(0);
72 | }
73 |
74 | &::before {
75 | border-bottom-right-radius: var(--tab-border-radius) !important;
76 | left: 0 !important;
77 | transform: translateX(-8px) !important;
78 | box-shadow: 4px 4px 0 4px var(--fp-tab-corner-bg) !important;
79 | }
80 |
81 | &::after {
82 | border-bottom-left-radius: var(--tab-border-radius) !important;
83 | right: 0 !important;
84 | transform: translateX(8px) !important;
85 | box-shadow: -4px 4px 0 4px var(--fp-tab-corner-bg) !important;
86 | }
87 | }
88 |
89 | .tab-background:is([selected], [multiselected]) {
90 | --fp-tab-corner-bg: var(
91 | --tab-selected-bgcolor,
92 | var(--lwt-selected-tab-background-color, var(--toolbar-bgcolor))
93 | );
94 | }
95 |
96 | .tabbrowser-tab:hover .tab-background:not([selected], [multiselected]) {
97 | background-color: color-mix(
98 | in srgb,
99 | currentColor 5%,
100 | transparent
101 | ) !important;
102 | --fp-tab-corner-bg: color-mix(
103 | in srgb,
104 | currentColor 5%,
105 | transparent
106 | ) !important;
107 | }
108 |
109 | .tab-background:is([selected], [multiselected]) {
110 | outline: none !important;
111 | }
112 |
113 | #tabbrowser-tabs .tab-background[multiselected]:not([selected]) {
114 | box-shadow: none !important;
115 | opacity: 0.7 !important;
116 | }
117 |
118 | /* #tabbrowser-tabs,
119 | #TabsToolbar #TabsToolbar-customization-target > .toolbarbutton-1 {
120 | margin-top: var(--tab-block-margin) !important;
121 | }
122 | #main-window[sizemode="maximized"] #tabbrowser-tabs,
123 | #main-window[sizemode="maximized"] #TabsToolbar #TabsToolbar-customization-target > .toolbarbutton-1 {
124 | margin-top: 0 !important;
125 | } */
126 | #TabsToolbar .toolbarbutton-1 {
127 | margin: 0 !important;
128 | }
129 |
130 | .tab-label-container:not([selected="true"], [multiselected]) {
131 | opacity: 1 !important;
132 | }
133 |
134 | #TabsToolbar .toolbarbutton-animatable-box,
135 | #TabsToolbar .toolbarbutton-1 {
136 | fill: currentColor !important;
137 | }
138 |
139 | .tabbrowser-tab[multiselected]:not(:-moz-lwtheme),
140 | .tabbrowser-tab[visuallyselected="true"]:not(:-moz-lwtheme) {
141 | color: var(--lwt-tab-text, var(--toolbar-color)) !important;
142 | }
143 |
144 | .tabbrowser-tab:is([selected], [multiselected]):-moz-lwtheme {
145 | z-index: 1;
146 | }
147 |
148 | .tabbrowser-tab:is([visuallyselected], [multiselected]):not([pinned]) {
149 | min-width: 200px !important;
150 | z-index: 1;
151 | }
152 |
153 | .tab-close-button {
154 | width: 16px !important;
155 | height: 16px !important;
156 | padding: 4px !important;
157 | border-radius: 4px !important;
158 | }
159 |
160 | .tab-throbber:not([pinned]),
161 | .tab-icon-pending:not([pinned]),
162 | .tab-icon-image:not([pinned]),
163 | .tab-sharing-icon-overlay:not([pinned]) {
164 | margin-inline-end: 10px !important;
165 | }
166 |
167 | .tab-secondary-label {
168 | display: none !important;
169 | }
170 |
171 | #tabbrowser-tabs:not([secondarytext-unsupported]) .tab-label-container {
172 | height: var(--tab-min-height) !important;
173 | }
174 |
175 | .tab-icon-stack:is([soundplaying], [muted], [activemedia-blocked])
176 | > .tab-icon-overlay,
177 | .tabbrowser-tab:hover
178 | .tab-icon-stack:not([pinned], [sharing], [crashed]):is(
179 | [soundplaying],
180 | [muted],
181 | [activemedia-blocked]
182 | )
183 | > :not(.tab-icon-overlay) {
184 | opacity: 1 !important;
185 | }
186 |
187 | #tabbrowser-tabs:not([closebuttons="activetab"])
188 | .tab-icon-overlay:not([pinned]) {
189 | margin-inline: 22px 6px !important;
190 | }
191 |
192 | .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned]) {
193 | margin-inline: 0px 6px !important;
194 | }
195 | .tab-icon-overlay:not([crashed]):is([pinned], [sharing]),
196 | #tabbrowser-tabs[closebuttons="activetab"] .tab-icon-overlay:not([crashed]) {
197 | top: -5.5px !important;
198 | inset-inline-end: -6px !important;
199 | }
200 |
201 | #tabbrowser-tabs[closebuttons="activetab"]
202 | :is(
203 | .tab-icon-overlay[soundplaying]:not([crashed]),
204 | .tab-icon-overlay[muted]:not([crashed]),
205 | .tab-icon-overlay[activemedia-blocked]:not([crashed])
206 | ) {
207 | stroke: var(--tab-icon-overlay-stroke, white) !important;
208 | color: var(--tab-icon-overlay-fill, black) !important;
209 | fill-opacity: 1 !important;
210 | }
211 |
212 | #TabsToolbar[brighttext]
213 | #tabbrowser-tabs[closebuttons="activetab"]
214 | :is(
215 | .tab-icon-overlay[soundplaying]:not([crashed]),
216 | .tab-icon-overlay[muted]:not([crashed]),
217 | .tab-icon-overlay[activemedia-blocked]:not([crashed])
218 | ) {
219 | stroke: var(--tab-icon-overlay-stroke, black) !important;
220 | color: var(--tab-icon-overlay-fill, white) !important;
221 | }
222 |
223 | #tabbrowser-tabs[closebuttons="activetab"]
224 | :is(
225 | .tab-icon-overlay:not([crashed])[soundplaying]:hover,
226 | .tab-icon-overlay:not([crashed])[muted]:hover,
227 | .tab-icon-overlay:not([crashed])[activemedia-blocked]:hover
228 | ) {
229 | background-color: var(--tab-icon-overlay-stroke, white) !important;
230 | }
231 |
232 | #TabsToolbar[brighttext]
233 | #tabbrowser-tabs[closebuttons="activetab"]
234 | :is(
235 | .tab-icon-overlay:not([crashed])[soundplaying]:hover,
236 | .tab-icon-overlay:not([crashed])[muted]:hover,
237 | .tab-icon-overlay:not([crashed])[activemedia-blocked]:hover
238 | ) {
239 | background-color: var(--tab-icon-overlay-stroke, black) !important;
240 | }
241 |
242 | .tab-icon-overlay[soundplaying]:not([crashed]),
243 | .tab-icon-overlay[muted]:not([crashed]),
244 | .tab-icon-overlay[activemedia-blocked]:not([crashed]) {
245 | border-radius: 4px !important;
246 | padding: 0 !important;
247 | }
248 |
249 | .tabbrowser-tab {
250 | font-size: 12px !important;
251 | padding-inline: 0 !important;
252 | overflow-clip-margin: 8px !important;
253 | padding-top: var(--tab-block-margin) !important;
254 | }
255 |
256 | #TabsToolbar .toolbarbutton-1 > .toolbarbutton-icon,
257 | #TabsToolbar .toolbarbutton-1 > .toolbarbutton-badge-stack {
258 | border-radius: var(--toolbarbutton-tabsline-border-radius) !important;
259 | padding: var(--fp-toolbarbutton-inner-padding)
260 | calc(var(--fp-toolbarbutton-inner-padding) + 2px) !important;
261 | }
262 |
263 | #tabbrowser-tabs .toolbarbutton-1 > .toolbarbutton-icon,
264 | #tabbrowser-tabs .toolbarbutton-1 > .toolbarbutton-badge-stack {
265 | border-radius: var(--toolbarbutton-tabsline-border-radius) !important;
266 | }
267 |
268 | #TabsToolbar .toolbarbutton-1 > .toolbarbutton-icon {
269 | width: calc(
270 | 2 * (var(--fp-toolbarbutton-inner-padding) + 2px) + 16px
271 | ) !important;
272 | height: calc(2 * var(--fp-toolbarbutton-inner-padding) + 16px) !important;
273 | }
274 |
275 | #TabsToolbar #tabs-newtab-button > .toolbarbutton-icon,
276 | #TabsToolbar #alltabs-button > .toolbarbutton-badge-stack,
277 | #TabsToolbar
278 | #tabbrowser-tabs[hasadjacentnewtabbutton][overflow="true"]
279 | ~ #new-tab-button
280 | > .toolbarbutton-icon {
281 | padding: var(--fp-toolbarbutton-inner-padding) !important;
282 | width: calc(2 * var(--fp-toolbarbutton-inner-padding) + 16px) !important;
283 | }
284 |
285 | #tabbrowser-tabs #tabs-newtab-button {
286 | margin-inline-start: 2px !important;
287 | padding-top: var(--tab-block-margin) !important;
288 | }
289 |
290 | .tab-content[pinned] {
291 | padding: 0 12px !important;
292 | }
293 |
294 | .tabbrowser-tab[usercontextid] .tab-background .tab-context-line {
295 | height: 2px !important;
296 | border-radius: 2px !important;
297 | margin: 2px 7px 0 !important;
298 | }
299 |
300 | .tabbrowser-tab[selected][usercontextid] .tab-background .tab-context-line {
301 | margin-inline: 9px !important;
302 | }
303 |
304 | .titlebar-spacer[type="post-tabs"] {
305 | display: flex !important;
306 | }
307 |
308 | .titlebar-spacer[type="pre-tabs"],
309 | .private-browsing-indicator {
310 | display: none !important;
311 | }
312 | /* Tasb groups */
313 |
314 | #pinned-tabs-container[orient="horizontal"] {
315 | margin-inline-start: 14px !important;
316 | margin-inline-end: 0 !important;
317 | }
318 | #tabbrowser-tabs:has(#pinned-tabs-container:empty) #tabbrowser-arrowscrollbox {
319 | margin-inline-start: 14px !important;
320 | }
321 |
322 | #tabbrowser-tabs:has(#pinned-tabs-container:not(:empty)) #tabbrowser-arrowscrollbox {
323 | margin-inline-start: 0 !important;
324 | }
325 |
326 | #tabbrowser-tabs>#tabbrowser-arrowscrollbox {
327 | margin-inline-end: 6px !important;
328 | }
329 | .tab-group-label {
330 | tab-group[collapsed] > .tab-group-label-container > & {
331 | opacity: 0.85 !important;
332 | }
333 | }
334 |
335 | .tab-group-label-container {
336 | @media not -moz-pref("sidebar.verticalTabs") {
337 | tab-group:not([collapsed]) > &::after {
338 | display: none !important;
339 | }
340 | }
341 | }
342 | .tab-group-label {
343 | tab-group[collapsed] > .tab-group-label-container > & {
344 | outline: none !important;
345 | }
346 | }
347 | .tab-group-label {
348 | margin-top: 14px !important;
349 | border-radius: 4px !important;
350 | padding-inline: 4px !important;
351 | font-size: 90% !important;
352 | }
353 | /* END:Tasb groups */
354 | toolbarbutton[part="scrollbutton-up"],
355 | toolbarbutton[part="scrollbutton-down"] {
356 | border-width: 2px !important;
357 | border-radius: calc(var(--toolbarbutton-border-radius) + 2px) !important;
358 | margin-inline: 2px !important;
359 | }
360 | :not(tab-group) > .tabbrowser-tab:not([pinned], [style*="max-width"])[fadein] {
361 | max-width: 240px !important;
362 | }
363 | .tabbrowser-tab .tab-stack {
364 | &::before,
365 | &::after {
366 | content: "";
367 | position: absolute;
368 | height: 20px;
369 | inset: 0 auto;
370 | margin-block: auto;
371 | border-left: 1px solid transparent;
372 | }
373 |
374 | &::before {
375 | left: 0;
376 | }
377 |
378 | &::after {
379 | right: 0;
380 | }
381 | }
382 |
383 | /* Set separator color */
384 | .tabbrowser-tab:not([selected], [multiselected], :hover) {
385 | & .tab-stack::before,
386 | &:last-of-type .tab-stack::after {
387 | border-color: color-mix(in srgb, currentColor 34%, transparent);
388 | }
389 | }
390 |
391 | .tabbrowser-tab:where([selected], [multiselected], :hover)
392 | + .tabbrowser-tab:not([selected], [multiselected], :hover)
393 | .tab-stack::before {
394 | border-color: transparent !important;
395 | }
396 |
397 | #TabsToolbar-customization-target
398 | > #tabbrowser-tabs:not(
399 | toolbarbutton:not(#fxa-toolbar-menu-button) + #tabbrowser-tabs
400 | )
401 | .tabbrowser-tab:first-of-type
402 | .tab-stack::before {
403 | border-color: transparent !important;
404 | }
405 |
406 | #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs])
407 | > #tabbrowser-arrowscrollbox
408 | > .tabbrowser-tab[first-visible-unpinned-tab] {
409 | margin-inline-start: 0 !important;
410 | }
411 |
412 | #scrollbutton-up[part="scrollbutton-up"]:not(.menupopup-scrollbutton),
413 | #scrollbutton-down[part="scrollbutton-down"]:not(.menupopup-scrollbutton) {
414 | border-block-width: 2px !important;
415 | padding-inline: calc(
416 | var(--fp-toolbarbutton-inner-padding) - 4px
417 | ) !important;
418 | padding-block: calc(var(--fp-toolbarbutton-inner-padding) - 0px) !important;
419 | }
420 |
421 | #TabsToolbar > .toolbar-items {
422 | margin-top: -2px !important;
423 | }
424 |
425 | .tabbrowser-tab,
426 | #TabsToolbar #tabs-newtab-button,
427 | #scrollbutton-up[part="scrollbutton-up"]:not(.menupopup-scrollbutton),
428 | #scrollbutton-down[part="scrollbutton-down"]:not(.menupopup-scrollbutton) {
429 | margin-top: 2px !important;
430 | }
431 |
432 | #TabsToolbar #TabsToolbar-customization-target > :not(#tabbrowser-tabs) {
433 | margin-top: var(--tab-block-margin) !important;
434 | }
435 |
436 | #tabbrowser-arrowscrollbox:not([overflowing]) .tabbrowser-tab:first-of-type {
437 | margin-inline-start: 6px !important;
438 | }
439 | #tabbrowser-arrowscrollbox:not([overflowing]) .tabbrowser-tab:last-of-type {
440 | margin-inline-end: 6px !important;
441 | }
442 | #tabbrowser-arrowscrollbox:not([overflowing]) tab-group[collapsed] .tabbrowser-tab:first-of-type {
443 | margin-inline-start: 0px !important;
444 | }
445 | #tabbrowser-arrowscrollbox:not([overflowing]) tab-group[collapsed] .tabbrowser-tab:last-of-type {
446 | margin-inline-end: 0px !important;
447 | }
448 |
449 | #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs])
450 | > #tabbrowser-arrowscrollbox
451 | > .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) {
452 | margin-inline-start: 0 !important;
453 | }
454 |
455 | #tabbrowser-tabs {
456 | margin-inline-start: -6px !important;
457 | border-inline: none !important;
458 | }
459 |
460 | #TabsToolbar {
461 | padding-inline-start: 6px !important;
462 | }
463 |
464 | #tabbrowser-tabs[positionpinnedtabs] > #tabbrowser-arrowscrollbox {
465 | margin-inline-start: 8px !important;
466 | }
467 |
468 | #tabbrowser-tabs[positionpinnedtabs]
469 | > #tabbrowser-arrowscrollbox
470 | > .tabbrowser-tab[pinned] {
471 | clip-path: inset(-8px -8px 0) !important;
472 | }
473 |
474 | :root {
475 | --fp-titlebar-shadow: 0 -3px 2px -3px rgb(0 0 0 / 0.2) inset;
476 | --fp-tab-shadow: 0 0 0 1px
477 | var(--lwt-tab-line-color, var(--lwt-tabs-border-color, transparent)),
478 | 0px 2px 4px rgb(0 0 0 / 0.2), 0 4px 8px rgb(0 0 0 / 0.1);
479 | }
480 |
481 | :root[lwtheme-brighttext="true"] {
482 | --fp-titlebar-shadow: 0 -3px 2px -3px rgb(0 0 0 / 0.75) inset inset;
483 | --fp-tab-shadow: 0 0 0 1px
484 | var(--lwt-tab-line-color, var(--lwt-tabs-border-color, transparent)),
485 | 0 2px 4px rgb(0 0 0 / 0.45), 0 0px 2px rgb(0 0 0 / 0.2);
486 | }
487 |
488 | #tabbrowser-tabs .tab-background:is([selected], [multiselected]),
489 | #TabsToolbar #firefox-view-button[open] > .toolbarbutton-icon {
490 | box-shadow: var(--fp-tab-shadow) !important;
491 | }
492 |
493 | #TabsToolbar {
494 | box-shadow: var(--fp-titlebar-shadow) !important;
495 | z-index: 1;
496 | }
497 |
498 | #tabbrowser-tabs[closebuttons="activetab"]
499 | .tabbrowser-tab
500 | .tab-label-container {
501 | --tab-label-mask-size: 1em !important;
502 | }
503 |
504 | /* .tab-content {
505 | padding-inline: var(--inline-tab-padding) 0 !important;
506 | } */
507 |
508 | /* new private browsing indicator */
509 | :root[privatebrowsingmode="temporary"] #TabsToolbar .toolbar-items,
510 | :root[privatebrowsingmode="temporary"]
511 | #TabsToolbar
512 | .titlebar-buttonbox-container {
513 | position: relative;
514 | z-index: 1;
515 | }
516 |
517 | :root[privatebrowsingmode="temporary"] .titlebar-spacer[type="post-tabs"] {
518 | display: none !important;
519 | }
520 |
521 | #private-browsing-indicator-with-label {
522 | position: relative !important;
523 | isolation: isolate;
524 | margin-inline: -16px -16px !important;
525 | padding-inline: 32px 24px !important;
526 | font-size: 12px;
527 | color: #fff !important;
528 | --fp-gradient-private: linear-gradient(90deg, rgba(118,171,250,0) 0%, rgba(0,85,215,1) 50%, rgba(118,171,250,0) 100%)
529 | }
530 |
531 | :root[tabsintitlebar]
532 | #toolbar-menubar:not([autohide="false"])
533 | ~ #TabsToolbar
534 | #private-browsing-indicator-with-label {
535 | background: var(--fp-gradient-private);
536 | }
537 |
538 | #private-browsing-indicator-with-label .private-browsing-indicator-icon {
539 | height: 24px !important;
540 | width: 24px !important;
541 | }
542 |
543 | :root,
544 | :root[lang^="en"] {
545 | --fp-string-private: "Private";
546 | }
547 |
548 | :root:is([lang^="en"]) #private-browsing-indicator-with-label > label {
549 | display: none !important;
550 | }
551 |
552 | :root:is([lang^="en"]) #private-browsing-indicator-with-label::after {
553 | content: var(--fp-string-private);
554 | margin-block: 1px 2px;
555 | margin-inline: 6px 5px;
556 | }
557 |
558 | #tabbrowser-tabs[secondarytext-unsupported]
559 | .tab-icon-stack[indicator-replaces-favicon]
560 | > :not(.tab-icon-overlay) {
561 | opacity: 1 !important;
562 | }
563 | .tab-icon-overlay {
564 | &:is([soundplaying], [muted], [activemedia-blocked]) {
565 | background-color:transparent !important;
566 | fill: white !important;
567 | }
568 | &:hover,
569 | &:hover:active {
570 | background-color:transparent !important;
571 | }
572 | }
573 | .tabbrowser-tab
574 | > .tab-stack
575 | > .tab-content[pinned][titlechanged]:not([selected]) {
576 | background-position: 4px 4px !important;
577 | }
578 | .titlebar-spacer[type="post-tabs"] {
579 | width: 0 !important;
580 | }
--------------------------------------------------------------------------------