├── .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 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/maximize.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/inactive.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/minimize.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/repeat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/gemini.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/separator.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/chrome/icons/menu/mistral.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/reopen-in-container.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/toolbarbutton/list-all-tabs.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/maximize-hover.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/chrome/icons/menu/context-separate-split-view.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/move-tab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/context-add-engine.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/sendtab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/google-lens-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/sub-folder-open.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/close-hover.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/tab-group/tab-group-collapsed.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/chrome/icons/menu/sort-alpha-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/select-all-on.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/maximize-hover-flipped.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/menu/calendar-agenda.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/findbar/word.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/tab-group/tab-group-expanded.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-open.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/copilot.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite/maximize-restore-flipped.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite/maximize-restore-press-flipped.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
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 |
--------------------------------------------------------------------------------
/chrome/icons/menu/password.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-8.svg:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/chrome/icons/menu/link.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/chrome/icons/menu/google.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/close-tab-photon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-6.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-9.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-10.svg:
--------------------------------------------------------------------------------
1 |
2 |
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 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite/maximize-hover-flipped.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite/maximize-press-flipped.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-2.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-4.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-5.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/folder-1.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/chrome/icons/menu/context-move-tab-to-split-view.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/bing.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/password-hide.svg:
--------------------------------------------------------------------------------
1 |
4 |
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 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize_pressed_flipped.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize_restore_pressed_flipped.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize_restore_prelight_flipped.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/chrome/icons/menu/fingerprinters-disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
9 |
--------------------------------------------------------------------------------
/chrome/icons/menu/open-In-window.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/BIN.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/ungroup-tab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/groups-view-show-more.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/spellcheck.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/move-tab-to-group.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/context-preview-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/chrome/icons/menu/new-group.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
20 |
--------------------------------------------------------------------------------
/chrome/icons/toolbarbutton/firefox-custom.svg:
--------------------------------------------------------------------------------
1 |
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 |
52 |
--------------------------------------------------------------------------------
/chrome/icons/bookmark/bookmark.svg:
--------------------------------------------------------------------------------
1 |
2 |
52 |
--------------------------------------------------------------------------------
/chrome/icons/menu/context-add-note.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
73 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/min.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
73 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
73 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 |
82 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
82 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize_restore_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
82 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/maximize_restore_prelight.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
82 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/min_prelight.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
82 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/min_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
82 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
87 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/unfocused.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
87 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/close_prelight.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
92 |
--------------------------------------------------------------------------------
/chrome/icons/window-controls/Yosemite-GTK/close_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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