├── 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 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/menu-bar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/back.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/media-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/media-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/win11-minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/checkmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/reader-mode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/search-glass.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/ext-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit-undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/account.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/icons/win11-maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/info.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/window.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit-redo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/bookmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/security.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/report.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit-copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/microphone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/win11-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/spell-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/close-all.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/security-broken.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/close-9px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/mail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/autoplay-media.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/customize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit-cut.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/move-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/screen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/win11-restore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/page-portrait.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/win11-close-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/chevron.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/midi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/media-pip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/downloads.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Layer 1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/icons/new-tab-image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/icons/pocket-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/source-code.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/help.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/inspect.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/permissions.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/reload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/tracking-protection.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/send-to-device.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/sidebars.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/canvas.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/duplicate-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/ungroupTab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/search-page.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/sidebars-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/geo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/desktop-notification.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/add-to-dictionary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/fullscreen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/developer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/manage.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/camera.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/moveTabToGroup.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/bookmark-hollow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/print.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit-paste.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/account-private.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /chrome/icons/microphone-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/history.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/privateBrowsing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/fullscreen-exit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/home.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/new-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/video-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/image-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/icons/image-copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/autoplay-media-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/media-mute.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/paste-and-go.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/edit-delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/pin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/passwords.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/security-warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/media-unmute.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/canvas-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/share.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/unpin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/audio-save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/geo-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/translations.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/edit-select-all.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/popup.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/desktop-notification-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/accessibility.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/media-loop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/tool-profiler.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 2 | 3 | 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 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/persistent-storage.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/xr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/forget.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/video-save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/zoom-control.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/private-window.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/container-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/media-speed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/image-save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/extension.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/screenshot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/persistent-storage-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/xr-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/loop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/extension-blocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/unloadTab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/mac-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /chrome/icons/mac-maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /chrome/icons/mac-minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /chrome/icons/mac-restore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 14 | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /chrome/icons/ask-chat.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /chrome/icons/settings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/reload-to-stop.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 | -------------------------------------------------------------------------------- /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 | screenshot 5 | screenshot 6 | screenshot 7 | 8 | # Rounded Corners 9 | screenshot 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 | Preview 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 | Buy Me a Coffee at ko-fi.com 47 | 48 | ***Enjoy your enhanced browsing experience!*** 49 | 50 | ## Star History 51 | 52 | ![Star History Chart](https://api.star-history.com/svg?repos=amnweb/firefox-plus&type=Date) 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 | } --------------------------------------------------------------------------------