├── .gitignore ├── chrome ├── icons │ ├── wallpaper │ │ └── acrylic-noise.png │ ├── window-controls │ │ ├── close.svg │ │ ├── maximize.svg │ │ ├── inactive.svg │ │ ├── minimize.svg │ │ ├── minimize-hover.svg │ │ ├── maximize-hover.svg │ │ ├── Yosemite │ │ │ ├── close-normal.svg │ │ │ ├── maximize-normal.svg │ │ │ ├── minimize-normal.svg │ │ │ ├── all-three-nofocus.svg │ │ │ ├── maximize-hover.svg │ │ │ ├── maximize-press.svg │ │ │ ├── maximize-restore.svg │ │ │ ├── maximize-restore-press.svg │ │ │ ├── minimize-hover.svg │ │ │ ├── minimize-press.svg │ │ │ ├── maximize-restore-flipped.svg │ │ │ ├── maximize-restore-press-flipped.svg │ │ │ ├── close-hover.svg │ │ │ ├── close-press.svg │ │ │ ├── maximize-hover-flipped.svg │ │ │ └── maximize-press-flipped.svg │ │ ├── maximize-restore.svg │ │ ├── close-hover.svg │ │ ├── maximize-hover-flipped.svg │ │ └── Yosemite-GTK │ │ │ ├── maximize_prelight_flipped.svg │ │ │ ├── maximize_pressed_flipped.svg │ │ │ ├── maximize_restore_pressed_flipped.svg │ │ │ ├── maximize_restore_prelight_flipped.svg │ │ │ ├── close.svg │ │ │ ├── min.svg │ │ │ ├── maximize.svg │ │ │ ├── dark.svg │ │ │ ├── maximize_prelight.svg │ │ │ ├── maximize_pressed.svg │ │ │ ├── maximize_restore_pressed.svg │ │ │ ├── maximize_restore_prelight.svg │ │ │ ├── min_prelight.svg │ │ │ ├── min_pressed.svg │ │ │ ├── light.svg │ │ │ ├── unfocused.svg │ │ │ ├── close_prelight.svg │ │ │ └── close_pressed.svg │ ├── menu │ │ ├── repeat.svg │ │ ├── gemini.svg │ │ ├── separator.svg │ │ ├── quit.svg │ │ ├── duplicate-tab.svg │ │ ├── restore-session.svg │ │ ├── mistral.svg │ │ ├── reopen-in-container.svg │ │ ├── container.svg │ │ ├── share-tab-url.svg │ │ ├── signout.svg │ │ ├── context-separate-split-view.svg │ │ ├── move-tab.svg │ │ ├── context-add-engine.svg │ │ ├── sendtab.svg │ │ ├── google-lens-logo.svg │ │ ├── close-tab.svg │ │ ├── select-all-tabs-rounded.svg │ │ ├── sort-alpha-down.svg │ │ ├── select-all-on.svg │ │ ├── calendar-agenda.svg │ │ ├── copilot.svg │ │ ├── redo.svg │ │ ├── password.svg │ │ ├── link.svg │ │ ├── google.svg │ │ ├── close-tab-photon.svg │ │ ├── context-move-tab-to-split-view.svg │ │ ├── bing.svg │ │ ├── password-hide.svg │ │ ├── close-duplicate-tabs-photon.svg │ │ ├── fingerprinters-disabled.svg │ │ ├── open-In-window.svg │ │ ├── ungroup-tab.svg │ │ ├── groups-view-show-more.svg │ │ ├── spellcheck.svg │ │ ├── move-tab-to-group.svg │ │ ├── context-preview-link.svg │ │ ├── new-group.svg │ │ ├── context-paste-no-formatting.svg │ │ ├── hugging-chat.svg │ │ ├── claude.svg │ │ ├── openai.svg │ │ ├── duckduckgo.svg │ │ └── context-add-note.svg │ ├── toolbarbutton │ │ ├── mozilla.org.svg │ │ ├── list-all-tabs.svg │ │ ├── firefox-custom.svg │ │ ├── flexfox.svg │ │ ├── firefox-newaita.svg │ │ └── firefox-newaita-mono.svg │ ├── findbar │ │ ├── hl.svg │ │ └── word.svg │ ├── bookmark │ │ ├── folder.svg │ │ ├── sub-folder-open.svg │ │ ├── folder-open.svg │ │ ├── sub-folder.svg │ │ ├── folder-8.svg │ │ ├── folder-6.svg │ │ ├── folder-9.svg │ │ ├── folder-10.svg │ │ ├── folder-3.svg │ │ ├── folder-2.svg │ │ ├── folder-4.svg │ │ ├── folder-5.svg │ │ ├── folder-1.svg │ │ ├── folder-7.svg │ │ ├── bookmark-empty.svg │ │ └── bookmark.svg │ ├── tab-group │ │ ├── tab-group-collapsed.svg │ │ └── tab-group-expanded.svg │ └── BIN.svg ├── userContent.css ├── content │ ├── uc-pdf.js.css │ ├── uc-aboutconfig.css │ ├── uc-common.css │ └── uc-newtab.css ├── userChrome.css └── components │ ├── uc-uni-extensions.css │ ├── uc-bookmarks.css │ └── uc-fullscreen.css ├── .github ├── FUNDING.yml └── workflows │ └── release.yml ├── LICENSE ├── Sidebery ├── sidebery-group-style.css └── sidebery-settings.json └── scripts ├── git-pull-chrome-only.sh ├── git-pull-chrome-only.ps1 ├── git-pull-chrome-only.bat └── extract-release-notes.js /.gitignore: -------------------------------------------------------------------------------- 1 | .sass-cache/ 2 | *.css.map 3 | *.sass.map 4 | *.scss.map 5 | -------------------------------------------------------------------------------- /chrome/icons/wallpaper/acrylic-noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuuqilin/FlexFox/HEAD/chrome/icons/wallpaper/acrylic-noise.png -------------------------------------------------------------------------------- /chrome/icons/window-controls/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/inactive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/repeat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/gemini.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/separator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/quit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/toolbarbutton/mozilla.org.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/duplicate-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/restore-session.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/findbar/hl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/minimize-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /chrome/icons/menu/mistral.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/reopen-in-container.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/toolbarbutton/list-all-tabs.svg: -------------------------------------------------------------------------------- 1 | List Filter Streamline Icon: https://streamlinehq.com -------------------------------------------------------------------------------- /chrome/icons/window-controls/maximize-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /chrome/icons/menu/container.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/close-normal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-normal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/minimize-normal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/all-three-nofocus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/share-tab-url.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/signout.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/maximize-restore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /chrome/icons/menu/context-separate-split-view.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/move-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/context-add-engine.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/menu/sendtab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/google-lens-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/sub-folder-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/close-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /chrome/icons/tab-group/tab-group-collapsed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-press.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-restore.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-restore-press.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/close-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/minimize-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/minimize-press.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/select-all-tabs-rounded.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /chrome/icons/menu/sort-alpha-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/menu/select-all-on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/maximize-hover-flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/icons/menu/calendar-agenda.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /chrome/icons/findbar/word.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/tab-group/tab-group-expanded.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/copilot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-restore-flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-restore-press-flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/close-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/close-press.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/sub-folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/userContent.css: -------------------------------------------------------------------------------- 1 | @import url(./content/uc-sidebery.css) not 2 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-sidebery.css")); 3 | @import url(./content/uc-newtab.css) not 4 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-newtab.css")); 5 | @import url(./content/uc-aboutconfig.css) not 6 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-aboutconfig.css")); 7 | @import url(./content/uc-pdf.js.css) not 8 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-pdf.js.css")); 9 | @import url(./content/uc-common.css) not 10 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-common.css")); 11 | @import url(./content/uc-custom-content.css); 12 | -------------------------------------------------------------------------------- /chrome/icons/menu/redo.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/icons/menu/password.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-8.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /chrome/icons/menu/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/menu/google.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/close-tab-photon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-9.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-10.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /.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: # 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: yuqilin # Replace with a single Buy Me a Coffee username 14 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 15 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-hover-flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite/maximize-press-flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /chrome/icons/menu/context-move-tab-to-split-view.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/bing.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/password-hide.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/icons/menu/close-duplicate-tabs-photon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Christol Yu, Ravindu Liyanapathirana, and yuuqilin 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 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_prelight_flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_pressed_flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_restore_pressed_flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_restore_prelight_flipped.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/icons/menu/fingerprinters-disabled.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/icons/menu/open-In-window.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/BIN.svg: -------------------------------------------------------------------------------- 1 | 2 | Made with Pixels to Svg https://codepen.io/shshaw/pen/XbxvNj 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /chrome/icons/menu/ungroup-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/groups-view-show-more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/spellcheck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/icons/menu/move-tab-to-group.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/context-preview-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/new-group.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Sidebery/sidebery-group-style.css: -------------------------------------------------------------------------------- 1 | /* For FlexFox >= v1.1.0 */ 2 | #body { 3 | --bg-size: 0px 0px; 4 | --bg-img: url(""); 5 | } 6 | 7 | body { 8 | --max-width: 75%; 9 | position: relative; 10 | display: flex; 11 | width: calc(100% - 16px); 12 | height: auto; 13 | min-height: 100%; 14 | font-family: sans-serif; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | opacity: 1; 18 | flex-direction: column; 19 | justify-content: space-between; 20 | align-items: center; 21 | padding: 0 8px; 22 | margin: 0; 23 | background-color: var(--toolbar-bg); 24 | } 25 | 26 | .title-box { 27 | position: relative; 28 | width: 100%; 29 | max-width: var(--max-width); 30 | margin: 24px 0 28px; 31 | } 32 | 33 | #root[data-toolbar-color-scheme="light"] { 34 | #title { 35 | color: hsl(0 73% 41%); 36 | text-align: center; 37 | } 38 | } 39 | 40 | #root[data-toolbar-color-scheme="dark"] { 41 | --toolbar-bg: #2b2a33; 42 | #title { 43 | background: linear-gradient(70deg, hsl(420 100% 62%), hsl(350 100% 59%)); 44 | -webkit-background-clip: text; 45 | -webkit-text-fill-color: transparent; 46 | text-align: center; 47 | } 48 | } 49 | 50 | body[data-layout="grid"] .tabs { 51 | grid-template-columns: 1fr 1fr 1fr 1fr; 52 | grid-gap: 12px; 53 | } 54 | 55 | #tabs .tab { 56 | height: 35vh; 57 | } 58 | 59 | #tabs .bg { 60 | height: 18.5vh; 61 | opacity: 1; 62 | position: unset; 63 | border-radius: 5.5px; 64 | } 65 | -------------------------------------------------------------------------------- /chrome/icons/menu/context-paste-no-formatting.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/icons/menu/hugging-chat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/claude.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/menu/openai.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/folder-7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | -------------------------------------------------------------------------------- /chrome/icons/toolbarbutton/firefox-custom.svg: -------------------------------------------------------------------------------- 1 | 3sat 2 | 5 | 6 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | 8 | permissions: 9 | contents: write 10 | 11 | jobs: 12 | release: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Checkout code 17 | uses: actions/checkout@v4 18 | 19 | - name: Set up Node.js 20 | uses: actions/setup-node@v4 21 | with: 22 | node-version: '20' 23 | 24 | - name: Extract version tag 25 | run: echo "RELEASE_TAG=${GITHUB_REF_NAME}" >> $GITHUB_ENV 26 | 27 | - name: Extract release notes 28 | run: node scripts/extract-release-notes.js 29 | env: 30 | RELEASE_TAG: ${{ env.RELEASE_TAG }} 31 | 32 | - name: Create release package 33 | run: | 34 | mkdir -p package 35 | zip -r package/FlexFox-${{ env.RELEASE_TAG }}.zip \ 36 | chrome \ 37 | scripts \ 38 | Sidebery/sidebery-settings.json \ 39 | Sidebery/sidebery-styles.json \ 40 | deploy-userchrome.ps1 \ 41 | -x "scripts/extract-release-notes.js" 42 | 43 | - name: Check if release notes exist 44 | id: check_notes 45 | run: | 46 | if [ -f ".github/release-notes/${RELEASE_TAG}.md" ]; then 47 | echo "NOTES_EXIST=true" >> $GITHUB_OUTPUT 48 | else 49 | echo "NOTES_EXIST=false" >> $GITHUB_OUTPUT 50 | fi 51 | 52 | - name: Upload release (with or without notes) 53 | uses: softprops/action-gh-release@v2 54 | with: 55 | tag_name: ${{ env.RELEASE_TAG }} 56 | name: FlexFox ${{ env.RELEASE_TAG }} 57 | files: package/FlexFox-${{ env.RELEASE_TAG }}.zip 58 | body_path: ${{ steps.check_notes.outputs.NOTES_EXIST == 'true' && format('.github/release-notes/{0}.md', env.RELEASE_TAG) || '' }} 59 | env: 60 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 61 | -------------------------------------------------------------------------------- /chrome/icons/menu/duckduckgo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/bookmark-empty.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 41 | 51 | 52 | -------------------------------------------------------------------------------- /chrome/icons/bookmark/bookmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 41 | 51 | 52 | -------------------------------------------------------------------------------- /chrome/icons/menu/context-add-note.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/content/uc-pdf.js.css: -------------------------------------------------------------------------------- 1 | /* 2 | @-moz-document regexp(".*\\.pdf$") 3 | */ 4 | html[mozdisallowselectionprint]:has(head link:nth-of-type(1)[href^="resource://pdf.js"]) 5 | { 6 | /* https://github.com/mozilla/pdf.js/issues/2784#issuecomment-366480669 */ 7 | .toolbar { 8 | opacity: 0; 9 | transition: opacity 48ms ease-out 200ms; 10 | } 11 | .toolbar:is( 12 | :hover, 13 | :has(.toolbarButtonWithContainer > .toggled, #secondaryToolbarToggleButton.toggled) 14 | ) { 15 | opacity: 1; 16 | } 17 | 18 | #viewerContainer { 19 | top: 0 !important; /* move doc up into empty bar space */ 20 | } 21 | 22 | #toolbarContainer { 23 | height: 43px !important; 24 | } 25 | 26 | #sidebarContainer { 27 | inset-block: 0 0 !important; 28 | width: calc(var(--sidebar-width) + 8px) !important; 29 | #toolbarSidebar { 30 | height: 42.5px !important; 31 | box-shadow: var(--toolbar-box-shadow) !important; 32 | } 33 | #sidebarContent { 34 | inset-block: 43.5px 0 !important; 35 | } 36 | } 37 | 38 | #outerContainer.sidebarOpen #mainContainer { 39 | margin-inline-start: calc(var(--sidebar-width) + 8px) !important; 40 | #viewerContainer { 41 | left: 0 !important; 42 | } 43 | } 44 | 45 | @media -moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica"), 46 | -moz-pref("uc.flex.browser-wallpaper-enabled") { 47 | @media -moz-pref("browser.tabs.allow_transparent_browser") { 48 | body { 49 | background-color: transparent !important; 50 | } 51 | #toolbarSidebar { 52 | background-color: color-mix(in srgb, var(--sidebar-toolbar-bg-color) 65%, transparent) !important; 53 | } 54 | #sidebarContent { 55 | background-color: color-mix(in srgb, var(--body-bg-color) 65%, transparent); 56 | } 57 | #outerContainer #mainContainer div.toolbar { 58 | backdrop-filter: blur(26px) saturate(140%); 59 | } 60 | #toolbarContainer { 61 | background-color: color-mix(in srgb, var(--toolbar-bg-color) 80%, transparent) !important; 62 | } 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /chrome/icons/toolbarbutton/flexfox.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scripts/git-pull-chrome-only.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Ensure script stops on error 4 | set -e 5 | 6 | # Save the current location 7 | originalLocation=$(pwd) 8 | 9 | # Set profile path based on OS 10 | if [[ "$OSTYPE" == "darwin"* ]]; then 11 | # macOS 12 | profilePath="$HOME/Library/Application Support/Firefox/Profiles" 13 | else 14 | # Linux 15 | profilePath="$HOME/.mozilla/firefox" 16 | fi 17 | 18 | # Function for colored output 19 | print_yellow() { 20 | echo -e "\e[33m$1\e[0m" 21 | } 22 | 23 | print_green() { 24 | echo -e "\e[32m$1\e[0m" 25 | } 26 | 27 | print_red() { 28 | echo -e "\e[31m$1\e[0m" 29 | } 30 | 31 | # 1. Search for the local Firefox default user profile directory 32 | print_yellow "Searching for Firefox default profile..." 33 | defaultProfile=$(find "$profilePath" -maxdepth 1 -type d -name "*.default-release" | head -n 1) 34 | 35 | if [ -z "$defaultProfile" ]; then 36 | print_red "Could not find a default-release profile." 37 | cd "$originalLocation" 38 | exit 1 39 | fi 40 | 41 | print_green "Found default profile at: $defaultProfile" 42 | cd "$defaultProfile" 43 | 44 | # 2. Check if it's a Git managed directory, initialize and set up if not 45 | if [ ! -d ".git" ]; then 46 | print_yellow "Initializing Git repository..." 47 | git init 48 | git remote add origin https://github.com/yuuqilin/FlexFox.git 49 | git sparse-checkout init --no-cone 50 | git sparse-checkout set /chrome 51 | git fetch origin 52 | git checkout -b main origin/main 53 | print_green "Git repository initialized and 'chrome' directory checked out." 54 | else 55 | print_green "Git repository already initialized." 56 | 57 | # 3. Check if a remote repository address is being tracked, add if not 58 | if ! git remote | grep -q "origin"; then 59 | print_yellow "Adding remote origin..." 60 | git remote add origin https://github.com/yuuqilin/FlexFox.git 61 | print_green "Remote 'origin' added." 62 | else 63 | print_green "Remote 'origin' already exists." 64 | fi 65 | 66 | # 4. Pull the chrome directory from the remote repository 67 | print_yellow "Fetching latest changes for 'chrome' directory..." 68 | git fetch origin 69 | git checkout main # Ensure on the main branch 70 | git merge origin/main --allow-unrelated-histories || { 71 | print_red "Git pull failed." 72 | cd "$originalLocation" 73 | exit 1 74 | } 75 | print_green "'chrome' directory updated." 76 | fi 77 | 78 | # Return to original location 79 | cd "$originalLocation" 80 | print_green "Script completed." -------------------------------------------------------------------------------- /chrome/userChrome.css: -------------------------------------------------------------------------------- 1 | /* FlexFox v5.7.5 */ 2 | /* ____ _ ____ */ 3 | /* / __/ /__ _ __/ __/___ _ __ */ 4 | /* / /_/ / _ \| |/_/ /_/ __ \| |/_/ */ 5 | /* / __/ / __/> < */ 6 | /* /_/ \__\___/_/|_|_/ \____/_/|_| */ 7 | /* __________________________________ */ 8 | @import url(./components/uc-variables.css) not 9 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-variables.css")); 10 | @import url(./components/uc-icons.css) not 11 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-icons.css")); 12 | @import url(./components/uc-menu-icons.css) not 13 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-menu-icons.css")); 14 | @import url(./components/uc-uni-extensions.css) not 15 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-uni-extensions.css")); 16 | @import url(./components/uc-misc.css) not 17 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-misc.css")); 18 | @import url(./components/uc-tabs-bar.css) not 19 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-tabs-bar.css")); 20 | @import url(./components/uc-urlbar.css) not 21 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-urlbar.css")); 22 | @import url(./components/uc-navbar.css) not 23 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-navbar.css")); 24 | @import url(./components/uc-fullscreen.css) not 25 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-fullscreen.css")); 26 | @import url(./components/uc-bookmarks.css) not 27 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-bookmarks.css")); 28 | @import url(./components/uc-sidebar.css) not 29 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-sidebar.css")); 30 | @import url(./components/uc-findbar.css) not 31 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-findbar.css")); 32 | @import url(./components/uc-window-controls.css) not 33 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-window-controls.css")); 34 | @import url(./components/uc-verticalfox.css) not 35 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-verticalfox.css")); 36 | @import url(./components/uc-browser.css) not 37 | (-moz-pref("uc.flex.disable-flexfox") or -moz-pref("uc.flex.skip-loading-uc-browser.css")); 38 | @import url(./components/uc-user-settings.css); 39 | -------------------------------------------------------------------------------- /scripts/git-pull-chrome-only.ps1: -------------------------------------------------------------------------------- 1 | # Ensure script stops on error 2 | $ErrorActionPreference = "Stop" 3 | 4 | # Save the current location 5 | $originalLocation = Get-Location 6 | 7 | # Set profile path 8 | $profilePath = "$env:APPDATA\Mozilla\Firefox\Profiles" 9 | 10 | # 1. Search for the local Firefox default user profile directory 11 | Write-Host "Searching for Firefox default profile..." -ForegroundColor Yellow 12 | $defaultProfile = Get-ChildItem $profilePath -Directory | Where-Object { $_.Name -like '*.default-release' } | Select-Object -First 1 13 | 14 | if (-not $defaultProfile) { 15 | Write-Host "Could not find a default-release profile." -ForegroundColor Red 16 | Set-Location $originalLocation 17 | exit 1 18 | } 19 | 20 | $profileDir = Join-Path $profilePath $defaultProfile.Name 21 | Write-Host "Found default profile at: $($profileDir)" -ForegroundColor Green 22 | Set-Location $profileDir 23 | 24 | # 2. Check if it's a Git managed directory, initialize and set up if not 25 | if (-not (Test-Path .git)) { 26 | Write-Host "Initializing Git repository..." -ForegroundColor Yellow 27 | git init 28 | git remote add origin https://github.com/yuuqilin/FlexFox.git 29 | git sparse-checkout init --no-cone 30 | git sparse-checkout set /chrome 31 | git fetch origin 32 | git checkout -b main origin/main 33 | Write-Host "Git repository initialized and 'chrome' directory checked out." -ForegroundColor Green 34 | } else { 35 | Write-Host "Git repository already initialized." -ForegroundColor Green 36 | # 3. Check if a remote repository address is being tracked, add if not 37 | $remoteExists = git remote | Select-String -Pattern "origin" 38 | if (-not $remoteExists) { 39 | Write-Host "Adding remote origin..." -ForegroundColor Yellow 40 | git remote add origin https://github.com/yuuqilin/FlexFox.git 41 | Write-Host "Remote 'origin' added." -ForegroundColor Green 42 | } else { 43 | Write-Host "Remote 'origin' already exists." -ForegroundColor Green 44 | } 45 | 46 | # 4. Pull the chrome directory from the remote repository 47 | Write-Host "Fetching latest changes for 'chrome' directory..." -ForegroundColor Yellow 48 | git fetch origin 49 | git checkout main # Ensure on the main branch 50 | git merge origin/main --allow-unrelated-histories 51 | if ($LASTEXITCODE -ne 0) { 52 | Write-Host "Git pull failed." -ForegroundColor Red 53 | Set-Location $originalLocation 54 | exit 1 55 | } 56 | Write-Host "'chrome' directory updated." -ForegroundColor Green 57 | } 58 | 59 | # Return to original location 60 | Set-Location $originalLocation 61 | Write-Host "Script completed." -ForegroundColor Green -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/min.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /scripts/git-pull-chrome-only.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal EnableDelayedExpansion 3 | 4 | :: Save the current location 5 | set "originalLocation=%CD%" 6 | 7 | :: Set profile path 8 | set "profilePath=%APPDATA%\Mozilla\Firefox\Profiles" 9 | 10 | :: 1. Search for the local Firefox default user profile directory 11 | powershell -Command "Write-Host 'Searching for Firefox default profile...' -ForegroundColor Yellow" 12 | 13 | set "defaultProfile=" 14 | for /d %%D in ("%profilePath%\*.default-release") do ( 15 | set "defaultProfile=%%~nxD" 16 | goto :found_profile 17 | ) 18 | 19 | :found_profile 20 | if not defined defaultProfile ( 21 | powershell -Command "Write-Host 'Could not find a default-release profile.' -ForegroundColor Red" 22 | cd /d "%originalLocation%" 23 | exit /b 1 24 | ) 25 | 26 | set "profileDir=%profilePath%\%defaultProfile%" 27 | powershell -Command "Write-Host 'Found default profile at: %profileDir%' -ForegroundColor Green" 28 | cd /d "%profileDir%" 29 | 30 | :: 2. Check if it's a Git managed directory, initialize and set up if not 31 | if not exist ".git" ( 32 | powershell -Command "Write-Host 'Initializing Git repository...' -ForegroundColor Yellow" 33 | git init 34 | git remote add origin https://github.com/yuuqilin/FlexFox.git 35 | git sparse-checkout init --no-cone 36 | git sparse-checkout set /chrome 37 | git fetch origin 38 | git checkout -b main origin/main 39 | powershell -Command "Write-Host 'Git repository initialized and ''chrome'' directory checked out.' -ForegroundColor Green" 40 | ) else ( 41 | powershell -Command "Write-Host 'Git repository already initialized.' -ForegroundColor Green" 42 | 43 | :: 3. Check if a remote repository address is being tracked, add if not 44 | git remote | findstr "origin" > nul 45 | if errorlevel 1 ( 46 | powershell -Command "Write-Host 'Adding remote origin...' -ForegroundColor Yellow" 47 | git remote add origin https://github.com/yuuqilin/FlexFox.git 48 | powershell -Command "Write-Host 'Remote ''origin'' added.' -ForegroundColor Green" 49 | ) else ( 50 | powershell -Command "Write-Host 'Remote ''origin'' already exists.' -ForegroundColor Green" 51 | ) 52 | 53 | :: 4. Pull the chrome directory from the remote repository 54 | powershell -Command "Write-Host 'Fetching latest changes for ''chrome'' directory...' -ForegroundColor Yellow" 55 | git fetch origin 56 | git checkout main 57 | git merge origin/main --allow-unrelated-histories 58 | 59 | if errorlevel 1 ( 60 | powershell -Command "Write-Host 'Git pull failed.' -ForegroundColor Red" 61 | cd /d "%originalLocation%" 62 | exit /b 1 63 | ) 64 | 65 | powershell -Command "Write-Host '''chrome'' directory updated.' -ForegroundColor Green" 66 | ) 67 | 68 | :: Return to original location 69 | cd /d "%originalLocation%" 70 | powershell -Command "Write-Host 'Script completed.' -ForegroundColor Green" 71 | 72 | endlocal -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_prelight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_restore_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/maximize_restore_prelight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/min_prelight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/min_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 71 | 74 | 79 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/unfocused.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 71 | 74 | 79 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/close_prelight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 78 | 83 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /chrome/icons/window-controls/Yosemite-GTK/close_pressed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 64 | 74 | 78 | 83 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /scripts/extract-release-notes.js: -------------------------------------------------------------------------------- 1 | // scripts/extract-release-notes.js 2 | 3 | const fs = require('fs'); 4 | const path = require('path'); 5 | const readline = require('readline'); 6 | 7 | const releaseTag = process.env.RELEASE_TAG; 8 | if (!releaseTag) { 9 | console.error('RELEASE_TAG not defined.'); 10 | process.exit(1); 11 | } 12 | 13 | const readmePath = path.resolve('README.md'); 14 | const outputDir = path.resolve('.github/release-notes'); 15 | const outputPath = path.join(outputDir, `${releaseTag}.md`); 16 | 17 | /** 18 | * Reads a file line by line and extracts defined sections in sequence. 19 | * @param {Array} sections - An array of section descriptors. 20 | * @returns {Promise} - Object mapping section names to extracted content. 21 | */ 22 | async function extractSectionsSequentially(sections) { 23 | const stream = fs.createReadStream(readmePath, 'utf-8'); 24 | const rl = readline.createInterface({ input: stream, crlfDelay: Infinity }); 25 | 26 | let currentSection = null; 27 | let results = {}; 28 | let collecting = false; 29 | 30 | for await (const line of rl) { 31 | // Start of new section 32 | if (!currentSection) { 33 | for (const section of sections) { 34 | if (line.includes(section.start)) { 35 | currentSection = section; 36 | results[section.name] = []; 37 | collecting = true; 38 | break; 39 | } 40 | } 41 | continue; 42 | } 43 | 44 | if (collecting) { 45 | // Abort condition (only for some sections like history) 46 | if (currentSection.abortOn && line.includes(currentSection.abortOn)) { 47 | results[currentSection.name] = ''; 48 | currentSection = null; 49 | collecting = false; 50 | continue; 51 | } 52 | 53 | // End of section 54 | if (line.includes(currentSection.end)) { 55 | results[currentSection.name] = results[currentSection.name].join('\n').trim(); 56 | currentSection = null; 57 | collecting = false; 58 | continue; 59 | } 60 | 61 | results[currentSection.name].push(line); 62 | } 63 | } 64 | 65 | // Finalize any section still being collected (e.g. no end marker) 66 | for (const section of sections) { 67 | if (Array.isArray(results[section.name])) { 68 | results[section.name] = results[section.name].join('\n').trim(); 69 | } 70 | } 71 | 72 | return results; 73 | } 74 | 75 | (async () => { 76 | try { 77 | // Define the two sections to extract, in order 78 | const sections = [ 79 | { 80 | name: 'whatsNew', 81 | start: '## 🆕 What\'s New', 82 | end: '' 83 | }, 84 | { 85 | name: 'history', 86 | start: '💬 Previous Updates', 87 | end: '', 88 | abortOn: '⏫ Back to the beginning of updates' 89 | } 90 | ]; 91 | 92 | const { whatsNew, history } = await extractSectionsSequentially(sections); 93 | 94 | if (!whatsNew) { 95 | console.log('No "What\'s New" section found, skipping release notes generation.'); 96 | process.exit(0); // Fallback to GitHub auto-generated release notes 97 | } 98 | 99 | // Combine sections 100 | let combined = whatsNew; 101 | if (history) { 102 | combined += '\n\n' + history; 103 | } 104 | 105 | // Write to file 106 | await fs.promises.mkdir(outputDir, { recursive: true }); 107 | await fs.promises.writeFile(outputPath, combined, 'utf8'); 108 | console.log(`✅ Release notes written to ${outputPath}`); 109 | } catch (err) { 110 | console.error('❌ Error extracting release notes:', err); 111 | process.exit(1); 112 | } 113 | })(); 114 | -------------------------------------------------------------------------------- /chrome/icons/toolbarbutton/firefox-newaita.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chrome/components/uc-uni-extensions.css: -------------------------------------------------------------------------------- 1 | /* Modified from https://github.com/KiKaraage/ArcWTF/blob/main/tweaks/extensions.css */ 2 | /* fe9b962 */ 3 | /* Clean and tight extensions menu */ 4 | @media not -moz-pref("uc.flex.switch-to-alternate-condensed-panel") { 5 | /* Move dropdown menu to display on the right side of the button */ 6 | #unified-extensions-panel { 7 | margin-inline-end: calc( 8 | -2 * var(--uc-uei-icon-size) * var(--uc-number-of-extensions-in-a-row) + 10px 9 | ) !important; 10 | } 11 | 12 | /* Automatically adjust panel width based on the number of icons per row */ 13 | #unified-extensions-panel #unified-extensions-view { 14 | width: calc(2 * var(--uc-uei-icon-size) * var(--uc-number-of-extensions-in-a-row) + 20px) !important; 15 | } 16 | 17 | #unified-extensions-view { 18 | --uei-icon-size: var(--uc-uei-icon-size); 19 | } 20 | 21 | /* 22 | #unified-extensions-view:before { 23 | content: "Extensions"; 24 | text-align: left !important; 25 | font-weight: bold !important; 26 | padding-top: 9px !important; 27 | padding-bottom: 4px !important; 28 | padding-left: 14px !important; 29 | } 30 | */ 31 | 32 | #unified-extensions-view .panel-header, 33 | #unified-extensions-view .panel-header .panel-header-icon, 34 | #unified-extensions-view .panel-header + toolbarseparator, 35 | #unified-extensions-view .panel-subview-body + toolbarseparator, 36 | #unified-extensions-view #unified-extensions-manage-extensions .toolbarbutton-icon, 37 | #unified-extensions-view .unified-extensions-item-menu-button.subviewbutton, 38 | #unified-extensions-view .unified-extensions-item-action-button .unified-extensions-item-contents { 39 | visibility: collapse !important; 40 | } 41 | 42 | #unified-extensions-view #unified-extensions-manage-extensions .toolbarbutton-text { 43 | margin: 0 !important; 44 | padding: 0 !important; 45 | text-align: center !important; 46 | } 47 | 48 | #unified-extensions-view .panel-subview-body { 49 | padding: 4px !important; 50 | /* 51 | padding-left: 4px !important; 52 | */ 53 | } 54 | 55 | #unified-extensions-view .unified-extensions-item .unified-extensions-item-icon, 56 | #unified-extensions-view .unified-extensions-item .toolbarbutton-badge-stack { 57 | margin-inline-end: 0px !important; 58 | } 59 | 60 | #unified-extensions-view #overflowed-extensions-list, 61 | #unified-extensions-view #unified-extensions-area, 62 | #unified-extensions-view .unified-extensions-list { 63 | display: grid !important; 64 | grid-template-columns: repeat( 65 | var(--uc-number-of-extensions-in-a-row), 66 | calc(100% / var(--uc-number-of-extensions-in-a-row)) 67 | ); 68 | justify-items: center !important; 69 | /* 70 | align-items: center !important; 71 | */ 72 | } 73 | 74 | /* 75 | #unified-extensions-view .unified-extensions-list .unified-extensions-item, 76 | #unified-extensions-view .unified-extensions-list { 77 | max-width: max-content; 78 | max-height: max-content; 79 | } 80 | */ 81 | 82 | #unified-extensions-view #unified-extensions-area { 83 | padding-top: 3px !important; 84 | padding-bottom: 3px !important; 85 | border-bottom: 1px solid var(--panel-separator-color) !important; 86 | } 87 | 88 | #unified-extensions-view .unified-extensions-list { 89 | padding-top: 3px; 90 | /* 91 | border-top: 1px solid #aeaeae33 !important; 92 | */ 93 | } 94 | 95 | /* 96 | #wrapper-edit-controls:is([place="palette"], [place="panel"]) > #edit-controls, 97 | #wrapper-zoom-controls:is([place="palette"], [place="panel"]) > #zoom-controls, 98 | */ 99 | #unified-extensions-view .toolbaritem-combined-buttons { 100 | margin: 5px !important; 101 | } 102 | } 103 | 104 | /* Modified from https://gist.github.com/qaz69wsx/1739d185cff0a15929ac04c3f277a525 */ 105 | @media -moz-pref("uc.flex.switch-to-alternate-condensed-panel") { 106 | #unified-extensions-view { 107 | --uei-icon-size: 16px; 108 | } 109 | #unified-extensions-view > .panel-header { 110 | display: none !important; 111 | } 112 | #unified-extensions-view > .panel-header + toolbarseparator { 113 | border: none !important; 114 | margin: 0 0 var(--arrowpanel-menuitem-margin-inline) !important; 115 | } 116 | #unified-extensions-view .unified-extensions-item { 117 | margin-block: 0 !important; 118 | } 119 | #unified-extensions-view .unified-extensions-item-message-deck { 120 | display: none; 121 | } 122 | #unified-extensions-view .unified-extensions-item-menu-button { 123 | list-style-image: url("chrome://global/skin/icons/more.svg") !important; 124 | padding: 0 0 0 var(--arrowpanel-menuitem-margin-inline) !important; 125 | } 126 | #unified-extensions-view .unified-extensions-item-menu-button > .toolbarbutton-icon { 127 | border: none !important; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /chrome/icons/toolbarbutton/firefox-newaita-mono.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 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /chrome/content/uc-aboutconfig.css: -------------------------------------------------------------------------------- 1 | @-moz-document url("about:config") { 2 | /* Display FlexFox installation message */ 3 | @media not -moz-pref("uc.flex.show-flexfox-version-info-in-about-config", false) { 4 | body:lang(ja) { 5 | &::before { 6 | content: "🎉 FlexFox v5.7.5 のインストールが完了しました。 \A 📝 オプションを調整するには、検索バーに `uc.flex` と入力してください。"; 7 | } 8 | } 9 | body:lang(zh-CN) { 10 | &::before { 11 | content: "🎉 FlexFox v5.7.5 已成功安装。 \A 📝 如需调整选项,请在搜索栏中输入 `uc.flex`。"; 12 | } 13 | } 14 | body:lang(zh-tw) { 15 | &::before { 16 | content: "🎉 FlexFox v5.7.5 已成功安裝。 \A 📝 若需要調整選項,請在搜尋欄中輸入 `uc.flex`。"; 17 | } 18 | } 19 | 20 | body::before { 21 | content: "🎉 FlexFox v5.7.5 has been successfully installed. \A 📝 To adjust options, type `uc.flex` in the search bar."; 22 | /* !-- End of version info -- */ 23 | display: block; 24 | margin: 10px 10px 0px 10px; 25 | padding: 12px 30px; 26 | color: var(--in-content-text-color); 27 | background-color: var(--table-row-background-color); 28 | border: var(--prefs-table-border); 29 | border-radius: 4px; 30 | white-space: pre-line; 31 | line-height: 1.6; 32 | font-family: monospace; 33 | font-size: var(--font-size-root); 34 | } 35 | } 36 | 37 | /* Highlight preferences that have been modified by the user */ 38 | #prefs 39 | .has-user-value:has( 40 | .cell-value 41 | > span[data-l10n-id="about-config-pref-accessible-value-custom"]:not( 42 | [data-l10n-args='{"value":"false"}'], 43 | [data-l10n-args='{"value":"0"}'], 44 | [data-l10n-args='{"value":"top-right"}'], 45 | [data-l10n-args='{"value":"small"}'] 46 | ) 47 | ) { 48 | --uc-pref-custom-bg: light-dark(#ea4c895e, #9059ff80); 49 | background-color: color-mix( 50 | in srgb, 51 | var(--uc-pref-custom-bg) 25%, 52 | var(--table-row-background-color) 53 | ) !important; 54 | 55 | &:is(.odd) { 56 | background-color: color-mix( 57 | in srgb, 58 | var(--uc-pref-custom-bg) 25%, 59 | var(--table-row-background-color-alternate) 60 | ) !important; 61 | } 62 | &:hover { 63 | background-color: color-mix(in srgb, var(--uc-pref-custom-bg) 20%, var(--in-content-item-hover)) !important; 64 | } 65 | th[scope="row"]::before { 66 | content: "🟢"; 67 | position: absolute; 68 | left: 16px; 69 | } 70 | } 71 | 72 | /* If sidebar visibility is set to 'expand-on-hover', show a hint message above the search field */ 73 | #toolbar { 74 | display: flex; 75 | flex-direction: row; 76 | flex-wrap: wrap; 77 | } 78 | 79 | #toolbar::before { 80 | position: relative; 81 | /* z-index: 100; */ 82 | top: 0; 83 | /* left: 50%; 84 | transform: translateX(-50%); */ 85 | width: 100%; 86 | max-width: 100%; 87 | min-width: 200px; 88 | max-height: 200px; 89 | padding: 12px 32px; 90 | color: var(--in-content-text-color); 91 | background: var(--table-row-background-color); 92 | /* 93 | box-shadow: 94 | 0px 2px 4px 0px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.4)), 95 | 0px 8px 15px 5px light-dark(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.6)); 96 | */ 97 | border: 2px solid light-dark(#ea4c89, #9059ff); 98 | border-radius: 8px; 99 | white-space: pre-line; 100 | line-height: 1.4; 101 | font-family: monospace; 102 | font-size: 1.2em; 103 | overflow: hidden; 104 | display: none; 105 | opacity: 0; 106 | pointer-events: none; 107 | } 108 | 109 | @media -moz-pref("sidebar.visibility", "expand-on-hover") { 110 | #toolbar:lang(ja) { 111 | &::before { 112 | content: "💡 サイドバーは「カーソルを合わせた時にサイドバーを展開する」に設定されています。FlexFox の垂直タブ最適化は無効です。使用するには、この設定をオフにするか、`sidebar.visibility` を `always-show` にリセットしてください。"; 113 | } 114 | } 115 | #toolbar:lang(zh-CN) { 116 | &::before { 117 | content: "💡 侧栏设置为“悬停时展开侧栏”。FlexFox 的垂直标签页功能已停用。如需启用,请取消此选项或将 `sidebar.visibility` 重置为 `always-show`。"; 118 | } 119 | } 120 | #toolbar:lang(zh-tw) { 121 | &::before { 122 | content: "💡 側邊欄設定為「在滑鼠移到上方時展開」。FlexFox 的垂直分頁功能已停用。如要啟用,請取消此選項或將 `sidebar.visibility` 重設為 `always-show`。"; 123 | } 124 | } 125 | 126 | #toolbar::before { 127 | content: "💡 Sidebar set to 'Expand sidebar on hover'. FlexFox's vertical tab tweaks are disabled in this mode. To use them, uncheck the option or reset `sidebar.visibility` to `always-show`."; 128 | margin-bottom: 8px; 129 | display: block; 130 | opacity: 1; 131 | pointer-events: auto; 132 | animation: messageFadeOut 12s linear forwards; 133 | } 134 | 135 | /** 136 | * Pause the fade-out animation of the message when hovering over the search field or message. 137 | * Pointer events are disabled after pausing to allow text input in the search field. 138 | * Since the message now appears above the search field, the pointer-events property can be removed. 139 | */ 140 | #toolbar:hover::before { 141 | animation-play-state: paused; 142 | opacity: 1; 143 | pointer-events: none; 144 | } 145 | } 146 | } 147 | 148 | @keyframes messageFadeOut { 149 | 0%, 150 | 96% { 151 | max-height: 200px; 152 | padding: 12px 32px; 153 | margin-bottom: 8px; 154 | border-width: 2px; 155 | opacity: 1; 156 | visibility: visible; 157 | } 158 | 99.99% { 159 | padding: 0px 32px; 160 | margin-bottom: 0; 161 | border-width: 0px 2px; 162 | } 163 | 164 | 100% { 165 | max-height: 0; 166 | padding: 0; 167 | margin-bottom: 0; 168 | border-width: 0; 169 | opacity: 0; 170 | visibility: collapse; 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /chrome/components/uc-bookmarks.css: -------------------------------------------------------------------------------- 1 | /* Source file https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/autohide_bookmarks_toolbar.css */ 2 | /* 2ea55cb */ 3 | 4 | @media not (-moz-pref("uc.flex.disable-bookmarks-autohide") or -moz-pref("uc.flex.fully-hide-toolbox")) { 5 | :root:not([inFullscreen], [titlepreface*="\200b "], [titlepreface*="\200d "]) { 6 | #PersonalToolbar { 7 | /* 0deg = "show" ; 90deg = "hide" ; Set the following to control when bookmarks are shown */ 8 | --uc-autohide-toolbar-focus-rotation: 0deg; /* urlbar is focused */ 9 | --uc-autohide-toolbar-hover-rotation: 0deg; /* cursor is over the toolbar area */ 10 | } 11 | 12 | #PersonalToolbar:not([customizing]) { 13 | position: relative; 14 | margin-bottom: calc(0px - var(--uc-bm-height) - 2 * var(--uc-bm-padding)); 15 | transform: rotateX(90deg); 16 | transform-origin: top; 17 | transition: var(--uc-autohide-personal-toolbar-transition) !important; 18 | z-index: 1; 19 | /* The following properties should allow the themes with trasparent toolbars to work */ 20 | background-color: transparent !important; 21 | background-repeat: no-repeat, no-repeat, var(--lwt-background-tiling); 22 | /* y position will be wrong if menubar is enabled... */ 23 | --uc-bg-y: calc( 24 | -2 * 25 | ( 26 | var(--tab-block-margin) + var(--toolbarbutton-inner-padding) + 27 | var(--toolbarbutton-outer-padding) 28 | ) - 29 | var(--tab-min-height) + var(--uc-theme-bg-y-clip) - var(--bookmark-block-padding) 30 | ); 31 | background-position: 32 | top left, 33 | top left, 34 | var(--lwt-background-alignment, top left); 35 | background-position-y: top, top, var(--uc-bg-y), var(--uc-bg-y), var(--uc-bg-y); 36 | @media not (-moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica")) { 37 | @media not -moz-pref("uc.flex.browser-wallpaper-enabled") { 38 | background-image: 39 | var(--toolbar-bgimage, linear-gradient(transparent, transparent)), 40 | linear-gradient(var(--toolbar-bgcolor), var(--toolbar-bgcolor)), 41 | var(--lwt-header-image, var(--lwt-additional-images)) !important; 42 | } 43 | } 44 | 45 | /* Adjust the background image offset */ 46 | @media not -moz-pref("uc.flex.fully-hide-sidebery") { 47 | :root:not([titlepreface*="\200c "], [titlepreface*="\200d "]) & { 48 | background-position-x: 49 | left, 50 | left, 51 | right var(--uc-theme-bg-x-right-end), 52 | left var(--uc-theme-bg-x-left-start), 53 | right; 54 | } 55 | } 56 | } 57 | 58 | @media -moz-pref("sidebar.verticalTabs") { 59 | &:where([lwtheme-image], [style*="--lwt-additional-images"]) { 60 | #PersonalToolbar { 61 | --toolbar-bgcolor: transparent; 62 | } 63 | } 64 | 65 | #PersonalToolbar:not([customizing]) { 66 | background-color: inherit !important; 67 | margin-bottom: calc(0px - var(--uc-bm-height) - 2 * var(--uc-bm-padding)); 68 | --uc-bg-y: calc( 69 | 0px - (2 * var(--toolbarbutton-inner-padding) + var(--toolbarbutton-outer-padding)) - 70 | var(--uc-theme-bg-y-clip) - var(--bookmark-block-padding) 71 | ); 72 | } 73 | } 74 | 75 | &[uidensity="compact"] #PersonalToolbar { 76 | --toolbarbutton-outer-padding: 1px !important; 77 | } 78 | #PlacesToolbarItems > .bookmark-item, 79 | #OtherBookmarks, 80 | #PersonalToolbar > #import-button { 81 | padding-block: var(--uc-bm-padding) !important; 82 | } 83 | 84 | #nav-bar:focus-within + #PersonalToolbar { 85 | /* 86 | transition-delay: var(--uc-hover-toolbar-delay) !important; 87 | */ 88 | transition: var(--uc-hover-personal-toolbar-transition) !important; 89 | transform: rotateX(var(--uc-autohide-toolbar-focus-rotation, 0)); 90 | } 91 | #navigator-toolbox:is(:hover, :focus-within) { 92 | border-bottom-color: transparent !important; 93 | } 94 | #mainPopupSet:has( 95 | > [panelopen]:not( 96 | #ask-chat-shortcuts, 97 | #selection-shortcut-action-panel, 98 | #chat-shortcuts-options-panel, 99 | #tab-preview-panel, 100 | #tabgroup-preview-panel 101 | ), 102 | > #tab-group-editor > [panelopen] 103 | ) 104 | ~ #navigator-toolbox 105 | > #PersonalToolbar, 106 | #navigator-toolbox:hover > #PersonalToolbar { 107 | /* 108 | transition-delay: var(--uc-hover-toolbar-delay) !important; 109 | */ 110 | transition: var(--uc-hover-personal-toolbar-transition) !important; 111 | transform: rotateX(var(--uc-autohide-toolbar-hover-rotation, 0)); 112 | } 113 | @media not -moz-pref("sidebar.verticalTabs") { 114 | #mainPopupSet:has(> #tab-group-editor > [panelopen], > #tabgroup-preview-panel[panelopen]) 115 | ~ #navigator-toolbox 116 | > #PersonalToolbar { 117 | transform: rotateX(var(--uc-autohide-toolbar-focus-rotation, 0)); 118 | } 119 | } 120 | 121 | #navigator-toolbox:hover > #nav-bar:focus-within + #PersonalToolbar { 122 | transform: rotateX(0); 123 | } 124 | 125 | /** 126 | * Raise the z-index of #navigator-toolbox on hover 127 | * so its child bookmarks toolbar can appear above #tabbrowser-tabbox. 128 | * When not hovering, keep the z-index low so the tab box shadow stays on top. 129 | */ 130 | #navigator-toolbox { 131 | --browser-area-z-index-toolbox: var(--uc-navigator-z-index); 132 | transition: var(--uc-autohide-navigator-transition) !important; 133 | } 134 | #navigator-toolbox:hover { 135 | --browser-area-z-index-toolbox: 5; 136 | transition: var(--uc-hover-navigator-transition) /* calc(var(--uc-hover-toolbar-delay) - 10ms) */ !important; 137 | } 138 | 139 | /* Since the tabs toolbar and navigator can lose hover state at the same time, 140 | and the tabs toolbar uses hover transition timing even when not hovered, 141 | the navigator in its non-hover state must also use hover transition timing to keep both animations synchronized. */ 142 | @media -moz-pref("uc.flex.auto-hide-horizontal-tabs-and-keep-navbar", 3) and (not -moz-pref("sidebar.verticalTabs")) { 143 | &:not([taskbartab]) { 144 | #PersonalToolbar:not([customizing]) { 145 | transition: var(--uc-hover-personal-toolbar-transition) !important; 146 | } 147 | #navigator-toolbox { 148 | transition: var(--uc-hover-navigator-transition) !important; 149 | } 150 | } 151 | } 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /chrome/content/uc-common.css: -------------------------------------------------------------------------------- 1 | @media -moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica") and -moz-pref("browser.tabs.allow_transparent_browser"), 2 | -moz-pref("uc.flex.browser-wallpaper-enabled") and -moz-pref("browser.tabs.allow_transparent_browser") { 3 | /* 4 | @-moz-document url-prefix("http") { 5 | :root { 6 | color-scheme: light dark; 7 | background-color: light-dark(#f9f9fb, #2b2a33); 8 | @media (-moz-content-prefers-color-scheme: light) { 9 | background-color: #f9f9fb; 10 | } 11 | @media (-moz-content-prefers-color-scheme: dark) { 12 | background-color: #2b2a33; 13 | } 14 | } 15 | } 16 | */ 17 | 18 | @-moz-document url-prefix("about:newtab"), 19 | url-prefix("about:privatebrowsing"), 20 | url-prefix("about:home") { 21 | body { 22 | background-color: transparent !important; 23 | } 24 | .customize-menu { 25 | height: auto !important; 26 | border-radius: 5px !important; 27 | margin: 6px !important; 28 | } 29 | .customize-menu .close-button-wrapper { 30 | background-color: transparent !important; 31 | } 32 | .personalize-button:not(:hover) { 33 | opacity: 0.2 !important; 34 | } 35 | } 36 | 37 | @-moz-document url-prefix("about:preferences"), 38 | url-prefix("about:addons"), 39 | url-prefix("about:debugging"), 40 | url-prefix("about:config"), 41 | url-prefix("about:support"), 42 | url-prefix("about:profiles"), 43 | url-prefix("about:newtab"), 44 | url-prefix("about:privatebrowsing"), 45 | url-prefix("about:home") { 46 | :root { 47 | /* v143 [Bug 1980414] */ 48 | background-color: transparent !important; 49 | /* --background-color-canvas: transparent !important; */ 50 | --in-content-page-background: transparent !important; 51 | --in-content-table-background: transparent !important; 52 | --in-content-background-color: transparent !important; 53 | --in-content-box-info-background: color-mix( 54 | in srgb, 55 | var(--background-color-box) 40%, 56 | transparent 57 | ) !important; 58 | } 59 | .card { 60 | background: color-mix(in srgb, var(--background-color-box) 80%, transparent) !important; 61 | border: none !important; 62 | } 63 | } 64 | 65 | @-moz-document url-prefix("about:preferences") { 66 | #translations-manage-install-list, 67 | #downloadFolder, 68 | #input, 69 | #handlersViewHeader, 70 | #handlersView, 71 | #engineList { 72 | --table-row-background-color: transparent !important; 73 | --table-row-background-color-alternate: transparent !important; 74 | background-color: color-mix(in srgb, var(--background-color-box) 80%, transparent) !important; 75 | } 76 | @media not (forced-colors) { 77 | .privacy-detailedoption:not(.selected) { 78 | background-color: var(--in-content-box-info-background) !important; 79 | } 80 | } 81 | .sync-info-box, 82 | .featureGate { 83 | background-color: var(--in-content-box-info-background) !important; 84 | border: none !important; 85 | } 86 | .sticky-container { 87 | background-color: transparent !important; 88 | } 89 | } 90 | 91 | @-moz-document url-prefix("about:addons") { 92 | .sticky-container { 93 | margin: 16px 0 0 27px; 94 | width: calc(var(--page-main-content-width) + 1px) !important; 95 | height: auto; 96 | background: var(--background-color-box) !important; 97 | border-radius: 4px; 98 | box-shadow: var(--box-shadow-card); 99 | 100 | .header-name { 101 | margin: auto !important; 102 | font-size: 1.367rem !important; 103 | } 104 | .more-options-button { 105 | margin: auto !important; 106 | } 107 | .main-search { 108 | margin: auto !important; 109 | padding-inline-start: 10px !important; 110 | } 111 | 112 | /* Source file made available under Mozilla Public License v. 2.0 See the main repository for updates as well as full license text. 113 | https://github.com/Godiesc/firefox-gx */ 114 | 115 | /* Header */ 116 | display: grid !important; 117 | grid-template-rows: 1 !important; 118 | grid-template-columns: auto auto !important; 119 | 120 | /* Left part */ 121 | .main-heading { 122 | grid-column: 1; 123 | grid-row: 1; 124 | padding-block: 20px !important; 125 | margin-inline-start: 22px !important; 126 | background: var(--background-color-box) !important; 127 | 128 | .spacer { 129 | max-width: 20px !important; 130 | } 131 | } 132 | 133 | /* Right part */ 134 | .main-search { 135 | justify-content: center !important; 136 | display: grid !important; 137 | grid-column: 2; 138 | grid-row: 1; 139 | padding-block: 20px !important; 140 | background: var(--background-color-box) !important; 141 | 142 | .search-label { 143 | display: none !important; 144 | } 145 | } 146 | 147 | /* Stycky head Style in small width resolution */ 148 | @media (max-width: 830px) { 149 | /* Remove header label */ 150 | margin-inline-start: 15px !important; 151 | .main-heading > .header-name { 152 | display: none !important; 153 | } 154 | } 155 | } 156 | } 157 | 158 | @-moz-document url-prefix("about:config") { 159 | :root { 160 | --table-row-background-color: transparent !important; 161 | --table-row-background-color-alternate: transparent !important; 162 | } 163 | 164 | @media not -moz-pref("uc.flex.show-flexfox-version-info-in-about-config", false) { 165 | body::before, 166 | #toolbar::before { 167 | background: color-mix(in srgb, var(--background-color-box) 80%, transparent); 168 | } 169 | } 170 | 171 | #toolbar { 172 | background-color: transparent !important; 173 | } 174 | 175 | #prefs { 176 | background: color-mix(in srgb, var(--background-color-box) 80%, transparent) !important; 177 | } 178 | #prefs[has-visible-prefs] > .add { 179 | & > th, 180 | & > td { 181 | padding-top: 0 !important; 182 | } 183 | 184 | & > th::before, 185 | & > td::before { 186 | display: none !important; 187 | } 188 | } 189 | } 190 | } 191 | 192 | /* Restore corner radius values used before v145 */ 193 | @media -moz-pref("uc.flex.revert-to-original-flat-corner-style", 2) or -moz-pref("uc.flex.revert-to-original-flat-corner-style", 3) { 194 | @-moz-document url-prefix("about:"), url-prefix("chrome:") { 195 | :root { 196 | --border-radius-medium: 4px !important; 197 | } 198 | } 199 | 200 | @-moz-document url(about:newtab), url(about:home) { 201 | .top-site-outer .tile { 202 | border-radius: 8px !important; 203 | } 204 | } 205 | } 206 | 207 | /* Force "uc-common.css" to show up in DevTools by using an unsupported property */ 208 | :root { 209 | -webkit-locale: show-in-devtools; 210 | } 211 | -------------------------------------------------------------------------------- /Sidebery/sidebery-settings.json: -------------------------------------------------------------------------------- 1 | {"settings":{"nativeScrollbars":false,"nativeScrollbarsThin":true,"nativeScrollbarsLeft":false,"selWinScreenshots":false,"updateSidebarTitle":false,"markWindow":false,"markWindowPreface":"[Sidebery] ","ctxMenuNative":false,"ctxMenuRenderInact":true,"ctxMenuRenderIcons":true,"ctxMenuIgnoreContainers":"","navBarLayout":"horizontal","navBarInline":false,"navBarSide":"left","hideAddBtn":false,"hideSettingsBtn":false,"navBtnCount":true,"hideEmptyPanels":false,"hideDiscardedTabPanels":false,"navActTabsPanelLeftClickAction":"none","navActBookmarksPanelLeftClickAction":"none","navTabsPanelMidClickAction":"discard","navBookmarksPanelMidClickAction":"none","navSwitchPanelsWheel":true,"subPanelRecentlyClosedBar":true,"subPanelBookmarks":true,"subPanelHistory":true,"subPanelSync":false,"groupLayout":"grid","containersSortByName":false,"skipEmptyPanels":false,"dndTabAct":true,"dndTabActDelay":750,"dndTabActMod":"none","dndExp":"pointer","dndExpDelay":750,"dndExpMod":"none","dndOutside":"win","dndActTabFromLink":true,"dndActSearchTab":true,"dndMoveTabs":false,"dndMoveBookmarks":false,"searchBarMode":"dynamic","searchPanelSwitch":"same_type","searchBookmarksShortcut":"","searchHistoryShortcut":"","warnOnMultiTabClose":"collapsed","activateLastTabOnPanelSwitching":true,"activateLastTabOnPanelSwitchingLoadedOnly":true,"switchPanelAfterSwitchingTab":"always","tabRmBtn":"hover","activateAfterClosing":"prev_act","activateAfterClosingStayInPanel":false,"activateAfterClosingGlobal":false,"activateAfterClosingNoFolded":true,"activateAfterClosingNoDiscarded":true,"askNewBookmarkPlace":true,"tabsRmUndoNote":true,"tabsUnreadMark":false,"tabsUpdateMark":"all","tabsUpdateMarkFirst":true,"tabsReloadLimit":5,"tabsReloadLimitNotif":true,"showNewTabBtns":true,"newTabBarPosition":"after_tabs","tabsPanelSwitchActMove":false,"tabsPanelSwitchActMoveAuto":true,"tabsUrlInTooltip":"full","newTabCtxReopen":false,"tabWarmupOnHover":true,"tabSwitchDelay":0,"forceDiscard":true,"moveNewTabPin":"start","moveNewTabParent":"first_child","moveNewTabParentActPanel":false,"moveNewTab":"after","moveNewTabActivePin":"start","pinnedTabsPosition":"panel","pinnedTabsList":false,"pinnedAutoGroup":false,"pinnedNoUnload":false,"pinnedForcedDiscard":false,"tabsTree":true,"groupOnOpen":true,"tabsTreeLimit":2,"autoFoldTabs":false,"autoFoldTabsExcept":"none","autoExpandTabs":false,"autoExpandTabsOnNew":false,"rmChildTabs":"folded","tabsLvlDots":true,"discardFolded":false,"discardFoldedDelay":0,"discardFoldedDelayUnit":"sec","tabsTreeBookmarks":true,"treeRmOutdent":"branch","autoGroupOnClose":false,"autoGroupOnClose0Lvl":false,"autoGroupOnCloseMouseOnly":false,"ignoreFoldedParent":false,"showNewGroupConf":true,"sortGroupsFirst":true,"colorizeTabs":false,"colorizeTabsSrc":"domain","colorizeTabsBranches":false,"colorizeTabsBranchesSrc":"url","inheritCustomColor":true,"previewTabs":false,"previewTabsMode":"i","previewTabsPageModeFallback":"w","previewTabsInlineHeight":70,"previewTabsPopupWidth":280,"previewTabsTitle":2,"previewTabsUrl":1,"previewTabsSide":"right","previewTabsDelay":500,"previewTabsFollowMouse":true,"previewTabsWinOffsetY":36,"previewTabsWinOffsetX":6,"previewTabsInPageOffsetY":0,"previewTabsInPageOffsetX":0,"previewTabsCropRight":0,"hideInact":false,"hideFoldedTabs":false,"hideFoldedParent":"none","nativeHighlight":false,"warnOnMultiBookmarkDelete":"collapsed","autoCloseBookmarks":false,"autoRemoveOther":false,"highlightOpenBookmarks":false,"activateOpenBookmarkTab":false,"showBookmarkLen":true,"bookmarksRmUndoNote":true,"loadBookmarksOnDemand":true,"pinOpenedBookmarksFolder":true,"oldBookmarksAfterSave":"ask","loadHistoryOnDemand":true,"fontSize":"m","animations":true,"animationSpeed":"norm","theme":"proton","density":"default","colorScheme":"ff","snapNotify":true,"snapExcludePrivate":false,"snapInterval":0,"snapIntervalUnit":"min","snapLimit":0,"snapLimitUnit":"snap","snapAutoExport":false,"snapAutoExportType":"json","snapAutoExportPath":"Sidebery/snapshot-%Y.%M.%D-%h.%m.%s","snapMdFullTree":false,"hScrollAction":"none","onePanelSwitchPerScroll":false,"wheelAccumulationX":true,"wheelAccumulationY":true,"navSwitchPanelsDelay":128,"scrollThroughTabs":"none","scrollThroughVisibleTabs":true,"scrollThroughTabsSkipDiscarded":true,"scrollThroughTabsExceptOverflow":true,"scrollThroughTabsCyclic":false,"scrollThroughTabsScrollArea":0,"autoMenuMultiSel":true,"multipleMiddleClose":false,"longClickDelay":500,"wheelThreshold":false,"wheelThresholdX":10,"wheelThresholdY":60,"tabDoubleClick":"close","tabsSecondClickActPrev":false,"tabsSecondClickActPrevPanelOnly":false,"tabsSecondClickActPrevNoUnload":false,"shiftSelAct":true,"activateOnMouseUp":true,"tabLongLeftClick":"none","tabLongRightClick":"none","tabMiddleClick":"close","tabPinnedMiddleClick":"discard","tabMiddleClickCtrl":"discard","tabMiddleClickShift":"duplicate","tabCloseMiddleClick":"close","tabsPanelLeftClickAction":"none","tabsPanelDoubleClickAction":"tab","tabsPanelRightClickAction":"menu","tabsPanelMiddleClickAction":"undo","newTabMiddleClickAction":"new_child","bookmarksLeftClickAction":"open_in_act","bookmarksLeftClickActivate":false,"bookmarksLeftClickPos":"default","bookmarksMidClickAction":"open_in_new","bookmarksMidClickActivate":false,"bookmarksMidClickRemove":false,"bookmarksMidClickPos":"default","historyLeftClickAction":"open_in_act","historyLeftClickActivate":false,"historyLeftClickPos":"default","historyMidClickAction":"open_in_new","historyMidClickActivate":false,"historyMidClickPos":"default","syncName":"","syncUseFirefox":true,"syncUseGoogleDrive":false,"syncUseGoogleDriveApi":false,"syncUseGoogleDriveApiClientId":"","syncSaveSettings":false,"syncSaveCtxMenu":false,"syncSaveStyles":false,"syncSaveKeybindings":false,"selectActiveTabFirst":true,"selectCyclic":false},"sidebar":{"nav":["VT6k6tBe4T7B","FZh11rkzLci1","add_tp","sp-0","search","settings"],"panels":{"FZh11rkzLci1":{"type":2,"id":"FZh11rkzLci1","name":"分頁","color":"toolbar","iconSVG":"icon_tabs","iconIMGSrc":"","iconIMG":"","lockedPanel":false,"skipOnSwitching":false,"noEmpty":false,"newTabCtx":"none","dropTabCtx":"none","moveRules":[],"moveExcludedTo":-1,"bookmarksFolderId":-1,"newTabBtns":[],"srcPanelConfig":null},"VT6k6tBe4T7B":{"type":2,"id":"VT6k6tBe4T7B","name":"Tabs","color":"toolbar","iconSVG":"icon_tabs","iconIMGSrc":"","iconIMG":"","lockedPanel":false,"skipOnSwitching":false,"noEmpty":false,"newTabCtx":"none","dropTabCtx":"none","moveRules":[],"moveExcludedTo":-1,"bookmarksFolderId":-1,"newTabBtns":[],"srcPanelConfig":null}}},"contextMenu":{"tabs":[{"opts":["reload","mute","discard","undoRmTab","bookmark"]},"separator-1",{"name":"","opts":["pin","group","flatten","close"]},"separator-3",{"name":"","opts":["moveToPanel","moveToNewPanel","moveToNewWin","moveToWin"]},"separator-5",{"name":"","opts":["reopenInCtr"]},{"name":"%menu.tab.reopen_in_sub_menu_name","opts":["reopenInNewCtr","separator-6","reopenInNewWin","reopenInWin"]},{"name":"%menu.tab.colorize_","opts":["colorizeTab"]},{"name":"%menu.tab.sort_sub_menu_name","opts":["sortTabsByTitleAscending","sortTabsByTitleDescending","sortTabsByUrlAscending","sortTabsByUrlDescending","sortTabsByAccessTimeAscending","sortTabsByAccessTimeDescending","separator-45654","sortTabsTreeByTitleAscending","sortTabsTreeByTitleDescending","sortTabsTreeByUrlAscending","sortTabsTreeByUrlDescending","sortTabsTreeByAccessTimeAscending","sortTabsTreeByAccessTimeDescending"]},"separator-2",{"name":"","opts":["duplicate","copyTabsUrls","copyTabsTitles","editTabTitle"]},"separator-4","urlConf","clearCookies"],"tabsPanel":[{"opts":["undoRmTab","muteAllAudibleTabs","reloadTabs","discardTabs"]},"separator-1224",{"name":"%menu.tabs_panel.sort_all_sub_menu_name","opts":["sortAllTabsByTitleAscending","sortAllTabsByTitleDescending","sortAllTabsByUrlAscending","sortAllTabsByUrlDescending","sortAllTabsByAccessTimeAscending","sortAllTabsByAccessTimeDescending"]},"separator-7","selectAllTabs","collapseInactiveBranches","closeTabsDuplicates","closeTabs","separator-8","bookmarkTabsPanel","restoreFromBookmarks","convertToBookmarksPanel","separator-9","openPanelConfig","hidePanel","removePanel"],"bookmarks":[{"name":"%menu.bookmark.open_in_sub_menu_name","opts":["openInNewWin","openInNewPrivWin","separator-9","openInPanel","openInNewPanel","separator-10","openInCtr"]},{"name":"%menu.bookmark.sort_sub_menu_name","opts":["sortByNameAscending","sortByNameDescending","sortByLinkAscending","sortByLinkDescending","sortByTimeAscending","sortByTimeDescending"]},"separator-5","createBookmark","createFolder","createSeparator","separator-8","openAsBookmarksPanel","openAsTabsPanel","separator-7","copyBookmarksUrls","copyBookmarksTitles","moveBookmarksTo","edit","delete"],"bookmarksPanel":["collapseAllFolders","switchViewMode","convertToTabsPanel","separator-9","unloadPanelType","openPanelConfig","hidePanel","removePanel"]},"ver":"5.3.3"} -------------------------------------------------------------------------------- /chrome/content/uc-newtab.css: -------------------------------------------------------------------------------- 1 | /* Modified from https://raw.githubusercontent.com/bmFtZQ/edge-frfox/main/chrome/content/newtab.css */ 2 | @-moz-document url-prefix("about:newtab"), 3 | url-prefix("about:home") { 4 | :root { 5 | @media not -moz-pref("uc.flex.revert-to-original-flat-corner-style"), 6 | -moz-pref("uc.flex.revert-to-original-flat-corner-style", 3) { 7 | --uc-search-wrapper-radius: 99px; 8 | } 9 | } 10 | /* Search bar. */ 11 | .search-wrapper { 12 | & .search-handoff-button { 13 | border-radius: var(--uc-search-wrapper-radius, var(--border-radius-medium)) !important; 14 | background-position: 12px !important; 15 | padding-inline-start: 48px !important; 16 | white-space: nowrap !important; 17 | text-overflow: ellipsis !important; 18 | --elevation: 4; 19 | box-shadow: 20 | 0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / 0.11), 21 | 0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / 0.13) !important; 22 | 23 | &:hover { 24 | --elevation: 6; 25 | } 26 | } 27 | 28 | & .search-inner-wrapper { 29 | min-height: 44px !important; 30 | } 31 | 32 | &.fake-focus:not(.search.disabled) .search-handoff-button { 33 | border-color: transparent !important; 34 | outline: 2px solid var(--newtab-primary-action-background) !important; 35 | outline-offset: -1px !important; 36 | } 37 | 38 | &.search-disabled .search-handoff-button { 39 | opacity: 0 !important; 40 | } 41 | 42 | .search-handoff-button .fake-caret { 43 | inset-inline-start: 48px !important; 44 | top: 13px !important; 45 | } 46 | 47 | @media (height > 700px) { 48 | .fixed-search & { 49 | padding: 15px 0 !important; 50 | min-height: auto !important; 51 | border-bottom: none !important; 52 | } 53 | } 54 | } 55 | 56 | .fake-textbox { 57 | overflow: hidden !important; 58 | text-overflow: ellipsis !important; 59 | } 60 | 61 | .outer-wrapper.only-search { 62 | display: flex !important; 63 | padding: 30px !important; 64 | } 65 | 66 | /* Recent activity / Pocket cards */ 67 | .card-outer { 68 | --uc-border-radius: 8px; 69 | 70 | &, 71 | & .card, 72 | & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) { 73 | border-radius: var(--uc-border-radius) !important; 74 | } 75 | 76 | & .card, 77 | & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) { 78 | box-shadow: 79 | rgb(0 0 0 / 0.14) 0px 1px 2px, 80 | rgb(0 0 0 / 0.12) 0px 0px 2px !important; 81 | } 82 | 83 | & .card-preview-image-outer, 84 | & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) .img-wrapper .img img { 85 | border-radius: var(--uc-border-radius) var(--uc-border-radius) 0 0 !important; 86 | } 87 | } 88 | 89 | /* Add background & adjust padding for Recent activity & Pocket section. */ 90 | .collapsible-section:not(.top-sites) { 91 | background-color: var(--newtab-background-color) !important; 92 | border-radius: 12px !important; 93 | padding: 10px 20px 20px !important; 94 | 95 | & .section-list { 96 | gap: 12px !important; 97 | } 98 | } 99 | } 100 | 101 | /* private browsing newtab */ 102 | @-moz-document url-prefix(about:privatebrowsing) { 103 | :root { 104 | --uc-wordmark-color: light-dark(#737373, #fff); 105 | --uc-background-color-secondary: light-dark(#fff, #4a4a4a); 106 | 107 | @media -moz-pref("browser.theme.dark-private-windows") { 108 | color-scheme: dark !important; 109 | } 110 | @media not -moz-pref("uc.flex.revert-to-original-flat-corner-style"), 111 | -moz-pref("uc.flex.revert-to-original-flat-corner-style", 3) { 112 | --uc-search-wrapper-radius: 99px; 113 | } 114 | } 115 | 116 | /* Private browsing search bar. */ 117 | .search-inner-wrapper { 118 | height: 44px !important; 119 | 120 | .search-handoff-button, 121 | .search-handoff-button:active, 122 | .search-handoff-button:enabled:hover:active { 123 | background-color: var(--uc-background-color-secondary) !important; 124 | border: 0 !important; 125 | border-radius: var(--uc-search-wrapper-radius, var(--border-radius-medium)) !important; 126 | padding-inline-start: 48px !important; 127 | --elevation: 4; 128 | box-shadow: 129 | 0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / 0.11), 130 | 0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / 0.13) !important; 131 | 132 | &:hover { 133 | --elevation: 6; 134 | } 135 | 136 | &.focused:not(.disabled) { 137 | box-shadow: none !important; 138 | outline: 2px solid var(--in-content-focus-outline-color) !important; 139 | outline-offset: -1px !important; 140 | } 141 | 142 | &.disabled { 143 | opacity: 0 !important; 144 | } 145 | 146 | & .fake-textbox { 147 | color: var(--in-content-page-color) !important; 148 | } 149 | } 150 | } 151 | 152 | .wordmark { 153 | fill: var(--uc-wordmark-color) !important; 154 | } 155 | } 156 | 157 | @media -moz-pref("uc.flex.newtab-background") { 158 | @-moz-document url(about:newtab), 159 | url(about:home), 160 | url(about:privatebrowsing) { 161 | body { 162 | /* Specify both jpg and png file extensions, but jpg images will always 163 | * have a higher priority. */ 164 | --bg-0: url(../background-0.jpg), url(../background-0.png); 165 | --bg-1: url(../background-1.jpg), url(../background-1.png); 166 | --newtab-element-hover-color: rgb(239 239 239 / 0.3) !important; 167 | --newtab-element-active-color: rgb(239 239 239 / 0.45) !important; 168 | --text-shadow: 0 1px 2px #000; 169 | --icon-shadow: drop-shadow(0 0.3px 0.6px #000); 170 | background-color: #252525 !important; 171 | background-image: var(--bg-0) !important; 172 | background-position: center !important; 173 | background-size: cover !important; 174 | background-attachment: fixed !important; 175 | 176 | :root[lwt-newtab-brighttext] &, 177 | :root.private & { 178 | background-image: var(--bg-1), var(--bg-0) !important; 179 | --newtab-element-hover-color: rgb(66 66 66 / 0.4) !important; 180 | --newtab-element-active-color: rgb(66 66 66 / 0.55) !important; 181 | } 182 | 183 | @media not -moz-pref("browser.theme.dark-private-windows") { 184 | :root.private & { 185 | background-image: var(--bg-0) !important; 186 | 187 | @media (prefers-color-scheme: dark) { 188 | background-image: var(--bg-1), var(--bg-0) !important; 189 | } 190 | } 191 | } 192 | } 193 | 194 | /* Change text colour & add backgrounds to text over the background. */ 195 | .top-site-outer .title { 196 | text-shadow: var(--text-shadow) !important; 197 | color: #fff !important; 198 | -moz-osx-font-smoothing: auto !important; 199 | } 200 | 201 | .wordmark, 202 | .icon-settings, 203 | .top-site-outer .context-menu-button { 204 | filter: var(--icon-shadow) !important; 205 | color: #fff !important; 206 | fill: currentColor !important; 207 | } 208 | 209 | .top-site-outer .title .sponsored-label { 210 | color: #eee !important; 211 | } 212 | 213 | /* Add transparent sticky search header. */ 214 | @media (height > 700px) { 215 | .fixed-search .search-wrapper { 216 | border-bottom: 0 !important; 217 | background: transparent linear-gradient(#0004, transparent) !important; 218 | } 219 | } 220 | } 221 | } 222 | -------------------------------------------------------------------------------- /chrome/components/uc-fullscreen.css: -------------------------------------------------------------------------------- 1 | /*Full Screen Warning*/ 2 | 3 | #fullscreen-warning { 4 | background-color: var(--uc-fullscreen-warn) !important; 5 | border-color: var(--uc-fullscreen-warn) !important; 6 | max-width: 500px !important; 7 | max-height: 50px !important; 8 | border-radius: 50px !important; 9 | font-size: 12px !important; 10 | opacity: 0.8 !important; 11 | } 12 | 13 | .pointerlockfswarning-generic-text, 14 | .pointerlockfswarning-domain-text { 15 | font-size: 15px !important; 16 | color: rgb(255, 255, 255) !important; 17 | text-shadow: none !important; 18 | } 19 | 20 | /* Enable bookmarks toolbar in full-screen mode */ 21 | :root[inFullscreen] #navigator-toolbox #PersonalToolbar { 22 | visibility: unset !important; 23 | } 24 | 25 | /* Full screen Address bar overlap instead of push */ 26 | /* Modified from https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/autohide_toolbox.css */ 27 | /* 2f30a22 */ 28 | 29 | :root[sizemode="fullscreen"], 30 | :root[sizemode="fullscreen"] #navigator-toolbox { 31 | margin-top: 0 !important; 32 | } 33 | 34 | :root[inFullscreen] { 35 | #navigator-toolbox { 36 | --browser-area-z-index-toolbox: 3; 37 | position: fixed !important; 38 | /* 39 | background-color: var(--lwt-accent-color, black) !important; 40 | */ 41 | background-color: var(--toolbox-bgcolor) !important; 42 | transition: var(--uc-autohide-navbar-transition) !important; 43 | /* 44 | transition: 45 | transform 82ms linear, 46 | opacity 82ms linear !important; 47 | transition-delay: var(--uc-autohide-toolbox-delay) !important; 48 | @media -moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica"), 49 | -moz-pref("uc.flex.sidebery-apply-expand-speed-to-toolbars"), 50 | -moz-pref("uc.flex.browser-wallpaper-enabled") { 51 | transition: 52 | transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) 53 | var(--uc-autohide-sidebar-delay), 54 | opacity var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) 55 | var(--uc-autohide-sidebar-delay) !important; 56 | } 57 | */ 58 | transform-origin: top; 59 | transform: rotateX(var(--uc-toolbox-rotation)); 60 | opacity: 0; 61 | line-height: 0; 62 | z-index: 1; 63 | pointer-events: none; 64 | width: 100vw; 65 | } 66 | 67 | &[sessionrestored] #urlbar[popover] { 68 | pointer-events: none; 69 | opacity: 0; 70 | /* Use !important to override the transition styles in Nightly (v135) */ 71 | transition: var(--uc-autohide-urlbar-transition) !important; 72 | /* 73 | transition: 74 | transform 82ms linear var(--uc-autohide-toolbox-delay), 75 | opacity 0ms calc(var(--uc-autohide-toolbox-delay) + 82ms), 76 | box-shadow 0.3s ease-out, 77 | left 0.3s ease, 78 | width 0.3s ease, 79 | translate 0.3s ease !important; 80 | @media -moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica"), 81 | -moz-pref("uc.flex.sidebery-apply-expand-speed-to-toolbars"), 82 | -moz-pref("uc.flex.browser-wallpaper-enabled") { 83 | transition: 84 | transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) 85 | var(--uc-autohide-sidebar-delay), 86 | opacity 0ms var(--uc-autohide-transition-type) 87 | calc(var(--uc-autohide-sidebar-delay) + var(--uc-autohide-transition-duration)) !important; 88 | } 89 | */ 90 | transform-origin: 0px calc(0px - var(--tab-min-height) - var(--tab-block-margin) * 2); 91 | transform: rotateX(89.9deg); 92 | } 93 | 94 | :root[window-modal-open] #urlbar[popover], 95 | #mainPopupSet:has( 96 | > [panelopen]:not( 97 | #ask-chat-shortcuts, 98 | #selection-shortcut-action-panel, 99 | #chat-shortcuts-options-panel, 100 | #tab-preview-panel, 101 | #tabgroup-preview-panel 102 | ), 103 | > #tab-group-editor > [panelopen] 104 | ) 105 | ~ toolbox 106 | #urlbar[popover], 107 | #navigator-toolbox:is(:hover, :focus-within, [movingtab]) #urlbar[popover], 108 | #urlbar-container > #urlbar[popover]:is([focused], [open]) { 109 | pointer-events: auto; 110 | opacity: 1; 111 | /* Use !important to override the transition styles in Nightly (v135) */ 112 | /* 113 | transition-delay: 33ms !important; 114 | */ 115 | transition: var(--uc-hover-urlbar-transition) !important; 116 | /* 117 | transition: 118 | transform 82ms linear 33ms, 119 | opacity 0ms 33ms, 120 | box-shadow 0.3s ease-out, 121 | left 0.3s ease, 122 | width 0.3s ease, 123 | translate 0.3s ease !important; 124 | @media -moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica"), 125 | -moz-pref("uc.flex.sidebery-apply-expand-speed-to-toolbars"), 126 | -moz-pref("uc.flex.browser-wallpaper-enabled") { 127 | transition: 128 | transform var(--uc-hover-transition-duration) var(--uc-autohide-transition-type) 129 | var(--uc-hover-sidebar-delay), 130 | opacity var(--uc-hover-transition-duration) var(--uc-autohide-transition-type) 131 | var(--uc-hover-sidebar-delay), 132 | box-shadow 0.3s ease-out, 133 | left 0.3s ease, 134 | width 0.3s ease, 135 | translate 0.3s ease !important; 136 | } 137 | */ 138 | transform: rotateX(0deg); 139 | } 140 | @media not -moz-pref("sidebar.verticalTabs") { 141 | #mainPopupSet:has(> #tab-group-editor > [panelopen], > #tabgroup-preview-panel[panelopen]) 142 | ~ toolbox 143 | #urlbar[popover] { 144 | pointer-events: auto; 145 | opacity: 1; 146 | transition: var(--uc-hover-urlbar-transition) !important; 147 | transform: rotateX(0deg); 148 | } 149 | } 150 | 151 | :root[window-modal-open] #navigator-toolbox, 152 | #mainPopupSet:has( 153 | > [panelopen]:not( 154 | #ask-chat-shortcuts, 155 | #selection-shortcut-action-panel, 156 | #chat-shortcuts-options-panel, 157 | #tab-preview-panel, 158 | #tabgroup-preview-panel 159 | ), 160 | > #tab-group-editor > [panelopen] 161 | ) 162 | ~ toolbox, 163 | #navigator-toolbox:has(#urlbar:is([open], [focus-within])), 164 | #navigator-toolbox:is(:hover, :focus-within, [movingtab]) { 165 | transition: var(--uc-hover-navbar-transition) !important; 166 | /* 167 | transition-delay: 33ms !important; 168 | @media -moz-pref("extensions.activeThemeID", "default-theme@mozilla.org") and -moz-pref("widget.windows.mica"), 169 | -moz-pref("uc.flex.sidebery-apply-expand-speed-to-toolbars"), 170 | -moz-pref("uc.flex.browser-wallpaper-enabled") { 171 | transition: 172 | transform var(--uc-hover-transition-duration) var(--uc-autohide-transition-type) 173 | var(--uc-hover-sidebar-delay), 174 | opacity var(--uc-hover-transition-duration) var(--uc-autohide-transition-type) 175 | var(--uc-hover-sidebar-delay) !important; 176 | } 177 | */ 178 | transform: rotateX(0); 179 | opacity: 1; 180 | } 181 | @media not -moz-pref("sidebar.verticalTabs") { 182 | #mainPopupSet:has(> #tab-group-editor > [panelopen], > #tabgroup-preview-panel[panelopen]) 183 | ~ #navigator-toolbox { 184 | transition: var(--uc-hover-navbar-transition) !important; 185 | transform: rotateX(0); 186 | opacity: 1; 187 | } 188 | } 189 | 190 | #navigator-toolbox > * { 191 | line-height: normal; 192 | pointer-events: auto; 193 | } 194 | 195 | /* This is a bit hacky fix for an issue that will make urlbar zero pixels tall after you enter customize mode */ 196 | #urlbar[breakout][breakout-extend] > .urlbar-input-container { 197 | padding-block: calc( 198 | min(4px, (var(--urlbar-container-height) - var(--urlbar-height)) / 2) + var(--urlbar-container-padding) 199 | ) !important; 200 | } 201 | } 202 | --------------------------------------------------------------------------------