Compare commits
312 Commits
1.0.0-a.23
...
1.0.0-a.35
Author | SHA1 | Date | |
---|---|---|---|
![]() |
37adddc0ed | ||
![]() |
7ef180fe7e | ||
![]() |
80e99b649d | ||
![]() |
762b18ff1e | ||
![]() |
9f3b50d84a | ||
![]() |
a132748dc2 | ||
![]() |
69d2696666 | ||
![]() |
4d6c2c3650 | ||
![]() |
3ce32d6516 | ||
![]() |
1590ea7944 | ||
![]() |
acf057acc5 | ||
![]() |
54395acd2a | ||
![]() |
0fe51f1a73 | ||
![]() |
379e74b8b1 | ||
![]() |
18baa341fc | ||
![]() |
dd86acde88 | ||
![]() |
cda31c11e9 | ||
![]() |
753a34eebf | ||
![]() |
13b78a8fc1 | ||
![]() |
a374ab186a | ||
![]() |
74e3407a42 | ||
![]() |
3e5742be0d | ||
![]() |
881f556534 | ||
![]() |
5ce28c0136 | ||
![]() |
74f304ef18 | ||
![]() |
467b444535 | ||
![]() |
0fc27c755e | ||
![]() |
cf9b266bca | ||
![]() |
ced7d3c4a6 | ||
![]() |
e78fa3f544 | ||
![]() |
dfa316831f | ||
![]() |
668124e1d0 | ||
![]() |
9eb70c3b79 | ||
![]() |
94463e9fa5 | ||
![]() |
1522afd6ca | ||
![]() |
01e8d7f495 | ||
![]() |
d8db68a92d | ||
![]() |
2dc6b1109e | ||
![]() |
200d74d14c | ||
![]() |
fa601a6aaa | ||
![]() |
1cf4458cd9 | ||
![]() |
385a275337 | ||
![]() |
b1be94a29d | ||
![]() |
7ca9ba00b5 | ||
![]() |
8f909cf418 | ||
![]() |
76c84c605d | ||
![]() |
2195a9804e | ||
![]() |
ba289ca71f | ||
![]() |
604ac5dd49 | ||
![]() |
98b2c582f2 | ||
![]() |
2ab5f5f9d9 | ||
![]() |
85b97d790a | ||
![]() |
b07f2ebbd6 | ||
![]() |
2cbf882258 | ||
![]() |
27d0d6805f | ||
![]() |
649bc32b1f | ||
![]() |
504737f4ea | ||
![]() |
10eae96486 | ||
![]() |
dd9124a99a | ||
![]() |
7b836d1232 | ||
![]() |
00e0892c31 | ||
![]() |
c44b844770 | ||
![]() |
2cdb14c184 | ||
![]() |
912aeba7b4 | ||
![]() |
10aad8c6ed | ||
![]() |
296cb9c44f | ||
![]() |
619d54ddc6 | ||
![]() |
c0923fbe0a | ||
![]() |
689789f2e9 | ||
![]() |
2eaf348eda | ||
![]() |
1f25a3c502 | ||
![]() |
4d9d8be4a4 | ||
![]() |
7bf5aa2015 | ||
![]() |
c2762c4eb9 | ||
![]() |
f5f3792165 | ||
![]() |
212e6e4bf8 | ||
![]() |
ca6f7c0b3a | ||
![]() |
70df8829fb | ||
![]() |
b586880d44 | ||
![]() |
758a5cc44a | ||
![]() |
985a3f433c | ||
![]() |
95545dcec9 | ||
![]() |
541d2f7baa | ||
![]() |
b5566038e2 | ||
![]() |
bcf8b190d7 | ||
![]() |
3ad9874ded | ||
![]() |
32ef547349 | ||
![]() |
9ad90e7298 | ||
![]() |
f2a8c3665d | ||
![]() |
98e97585e1 | ||
![]() |
fcb95175de | ||
![]() |
63bf09bc3c | ||
![]() |
b39570d9e5 | ||
![]() |
d83908bcff | ||
![]() |
a7f6a1ef4f | ||
![]() |
f849bc0a1a | ||
![]() |
dd5d8dce77 | ||
![]() |
82f933af93 | ||
![]() |
52485459a9 | ||
![]() |
6a4e81d1a1 | ||
![]() |
9b3afb58cd | ||
![]() |
802a7300e0 | ||
![]() |
87ca7d2d73 | ||
![]() |
1cdb0404fd | ||
![]() |
09b3197aa4 | ||
![]() |
4fe83e8f25 | ||
![]() |
b8361cc8ea | ||
![]() |
ac37939c6e | ||
![]() |
81a2b5b874 | ||
![]() |
094295ba93 | ||
![]() |
7bea297965 | ||
![]() |
378ea1cab1 | ||
![]() |
f22e1f6503 | ||
![]() |
0345322c06 | ||
![]() |
61cf75f84c | ||
![]() |
866b9d74ef | ||
![]() |
d5bbcd0617 | ||
![]() |
78fa236bec | ||
![]() |
35fb5f510e | ||
![]() |
cc340432ba | ||
![]() |
d87315da49 | ||
![]() |
bf4e47f8fb | ||
![]() |
162a98fd1b | ||
![]() |
a6aeafa668 | ||
![]() |
31bd7b14dd | ||
![]() |
ab793ff424 | ||
![]() |
043755c1a0 | ||
![]() |
42a0140d8d | ||
![]() |
ed923b73cc | ||
![]() |
06adcdbcb6 | ||
![]() |
7f4265dfe4 | ||
![]() |
cd3a09d26b | ||
![]() |
09585654ee | ||
![]() |
67bc214cc9 | ||
![]() |
4cef2dd304 | ||
![]() |
c313c95c81 | ||
![]() |
7427fa0017 | ||
![]() |
10c10523f1 | ||
![]() |
21c537f000 | ||
![]() |
4920433736 | ||
![]() |
57e2c4af0a | ||
![]() |
9652725e84 | ||
![]() |
21635d9d63 | ||
![]() |
c7845a8e8f | ||
![]() |
c0aa1664cb | ||
![]() |
f72e38fd54 | ||
![]() |
d39ae862d6 | ||
![]() |
00d0eb8fc8 | ||
![]() |
80866de5fe | ||
![]() |
3dbb8a9bc2 | ||
![]() |
a47edaefaa | ||
![]() |
0c7dbbc2c6 | ||
![]() |
45515149e0 | ||
![]() |
b8da76745d | ||
![]() |
7d55d670ee | ||
![]() |
a74ec9650c | ||
![]() |
fdb5627da6 | ||
![]() |
60687d6b03 | ||
![]() |
dd68add538 | ||
![]() |
ea34bec55a | ||
![]() |
3def55d48b | ||
![]() |
5c4c3e6fb2 | ||
![]() |
c0d101aef0 | ||
![]() |
cc022ddd2f | ||
![]() |
511ca88aec | ||
![]() |
9217e32439 | ||
![]() |
2444bb04fc | ||
![]() |
c502719bd7 | ||
![]() |
d3a9ec4b3c | ||
![]() |
8a646bcc95 | ||
![]() |
92959769df | ||
![]() |
e4d56fd7d9 | ||
![]() |
b77f864668 | ||
![]() |
e02a44b20b | ||
![]() |
eb2d91256f | ||
![]() |
ff9876ebac | ||
![]() |
d6ddb542e9 | ||
![]() |
8ba6ba14e8 | ||
![]() |
6c58c9d61c | ||
![]() |
6f0609dd8c | ||
![]() |
ebba41c735 | ||
![]() |
65e040d987 | ||
![]() |
29a85db998 | ||
![]() |
d50a745e95 | ||
![]() |
a5854174c7 | ||
![]() |
5ef37aa079 | ||
![]() |
4c622d1429 | ||
![]() |
5593e7c437 | ||
![]() |
940bbae367 | ||
![]() |
4d8558929c | ||
![]() |
c05547248f | ||
![]() |
1a5e788476 | ||
![]() |
0af7b8b5b6 | ||
![]() |
95e444c31c | ||
![]() |
b011ad3de9 | ||
![]() |
ff188e0e1c | ||
![]() |
5ef88531d2 | ||
![]() |
410c875151 | ||
![]() |
bbad093d64 | ||
![]() |
e7103f1d87 | ||
![]() |
d9c3973b9d | ||
![]() |
d65681505d | ||
![]() |
739eff84f2 | ||
![]() |
d5e7d0c36f | ||
![]() |
90ca6ea99a | ||
![]() |
fdb4696066 | ||
![]() |
22a5dcddf3 | ||
![]() |
47ba86f211 | ||
![]() |
e2e7756649 | ||
![]() |
85b605db14 | ||
![]() |
cf48a52949 | ||
![]() |
dfde0f4baa | ||
![]() |
31b41329f2 | ||
![]() |
f856d9db6d | ||
![]() |
4187e20fbc | ||
![]() |
54b4f6e932 | ||
![]() |
bcabada80e | ||
![]() |
5c1decc77b | ||
![]() |
04af43909e | ||
![]() |
e808443631 | ||
![]() |
a47023e0f3 | ||
![]() |
ae9c99c7bc | ||
![]() |
187688e6ea | ||
![]() |
7854e26823 | ||
![]() |
d38eb962de | ||
![]() |
b2c2a134b0 | ||
![]() |
4874b4a1cd | ||
![]() |
983e85033f | ||
![]() |
38e6f075f4 | ||
![]() |
4146ad0936 | ||
![]() |
cf2435081a | ||
![]() |
e6f8eede34 | ||
![]() |
72f76608b6 | ||
![]() |
4eb07c762a | ||
![]() |
bbb4b64940 | ||
![]() |
cac80a2985 | ||
![]() |
ca1a63dbf1 | ||
![]() |
31fb9296c7 | ||
![]() |
7dd3e08409 | ||
![]() |
b537e5566a | ||
![]() |
5dd2a90f46 | ||
![]() |
034f351ac6 | ||
![]() |
195b215f5b | ||
![]() |
74d1385566 | ||
![]() |
957fe60a3d | ||
![]() |
5ac6cf4465 | ||
![]() |
29d9c85923 | ||
![]() |
78729d44de | ||
![]() |
483bee452e | ||
![]() |
8a87e3a0af | ||
![]() |
07283e1050 | ||
![]() |
1eaf6e49ef | ||
![]() |
c40d56b3b8 | ||
![]() |
ed7ad501b7 | ||
![]() |
964e0733b1 | ||
![]() |
c319a83d58 | ||
![]() |
4589c543da | ||
![]() |
0c3930425a | ||
![]() |
2f790586b2 | ||
![]() |
7d3b47f4f6 | ||
![]() |
69a1e0f1b9 | ||
![]() |
f78ad97710 | ||
![]() |
984e29f4cd | ||
![]() |
72c535b039 | ||
![]() |
000c41038d | ||
![]() |
776c9f69d5 | ||
![]() |
b38acdd8be | ||
![]() |
c8ad6cb70e | ||
![]() |
bb6113f221 | ||
![]() |
83d91ea38c | ||
![]() |
481687bdab | ||
![]() |
47f91322f6 | ||
![]() |
4549ac3671 | ||
![]() |
7ec8523c95 | ||
![]() |
1bd8f37381 | ||
![]() |
fa7a0ac661 | ||
![]() |
8f800f5134 | ||
![]() |
9cdfc864b3 | ||
![]() |
b2b3fb0b07 | ||
![]() |
c92931e005 | ||
![]() |
7c82ce5c23 | ||
![]() |
f36613e7e8 | ||
![]() |
71c131032b | ||
![]() |
81a8715b7b | ||
![]() |
5599000d33 | ||
![]() |
8cdf09daa0 | ||
![]() |
fc6a70162b | ||
![]() |
bc109d33c8 | ||
![]() |
9f10b74af5 | ||
![]() |
a65753d9a0 | ||
![]() |
234f116964 | ||
![]() |
6b34aa9d3d | ||
![]() |
3939aa8809 | ||
![]() |
de5f73a9e6 | ||
![]() |
26a9e255c1 | ||
![]() |
b50ed3a2d5 | ||
![]() |
0900c27d2b | ||
![]() |
ae723290d7 | ||
![]() |
1834fe2177 | ||
![]() |
3d6707fe21 | ||
![]() |
7e3eba280b | ||
![]() |
cba262e090 | ||
![]() |
b187c9383b | ||
![]() |
e7013c4db4 | ||
![]() |
1b5881c0fb | ||
![]() |
66d8d4bd71 | ||
![]() |
552a3c3cac | ||
![]() |
fb58c42938 | ||
![]() |
7a4a7681b9 | ||
![]() |
5a3a383cde | ||
![]() |
5943be1b39 | ||
![]() |
136993f203 |
34
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,10 +1,25 @@
|
||||
name: Bug Report Or Feature Request
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
labels: [Triage]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for filing a bug report.
|
||||
|
||||
## Important
|
||||
- Please search existing issues to avoid creating duplicates.
|
||||
- For enhancement requests, please use GitHub Discussions.
|
||||
- Please fill out the template below to the best of your ability.
|
||||
- type: checkboxes
|
||||
id: captchas
|
||||
attributes:
|
||||
label: Captchas
|
||||
description: Just making sure you did actually read the instructions.
|
||||
options:
|
||||
- label: I have read the instructions.
|
||||
- label: I have searched existing issues and avoided creating duplicates.
|
||||
- label: I am not filing an enhancement request.
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
@@ -19,7 +34,7 @@ body:
|
||||
label: Reproducible?
|
||||
description: Is this issue reproducible on Firefox?
|
||||
options:
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
@@ -28,21 +43,6 @@ body:
|
||||
placeholder: 1.0.0
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: severity
|
||||
attributes:
|
||||
label: Severity impact
|
||||
description: See label descriptions for more information.
|
||||
options:
|
||||
- Low
|
||||
- Medium
|
||||
- High
|
||||
- Critical
|
||||
- Enhancement
|
||||
multiple: true
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: platform
|
||||
attributes:
|
||||
|
32
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,32 +0,0 @@
|
||||
name: Feature Request
|
||||
description: File a feature request
|
||||
labels:
|
||||
- "kind: enhancement"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for filing a feature request.
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What feature would you like to see?
|
||||
description: Please describe the feature you would like to see.
|
||||
placeholder: Tell us what you would like to see!
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: platform
|
||||
attributes:
|
||||
label: What platform are you seeing the problem on?
|
||||
options:
|
||||
- Linux
|
||||
- macOS
|
||||
- Windows
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the feature request here.
|
18
.github/advanced-issue-labeler.yml
vendored
@@ -1,18 +0,0 @@
|
||||
---
|
||||
# Keep up to date with workflows/issue-create.yml !!!
|
||||
|
||||
policy:
|
||||
- section:
|
||||
- id: [severity]
|
||||
label:
|
||||
- name: 'kind: low severity'
|
||||
keys: ['Low']
|
||||
- name: 'kind: medium severity'
|
||||
keys: ['Medium']
|
||||
- name: 'kind: high severity'
|
||||
keys: ['High']
|
||||
- name: 'kind: critical severity'
|
||||
keys: ['Critical']
|
||||
- name: 'kind: enhancement'
|
||||
keys: ['Enhancement']
|
||||
|
148
.github/workflows/alpha.yml
vendored
@@ -186,28 +186,28 @@ jobs:
|
||||
name: zen.source.tar.gz
|
||||
path: ./zen.source.tar.gz
|
||||
|
||||
#windows-step-1:
|
||||
# name: Windows build step 1 (PGO build)
|
||||
# uses: ./.github/workflows/windows-alpha-build.yml
|
||||
# needs: [build-data]
|
||||
# permissions:
|
||||
# contents: write
|
||||
# secrets: inherit
|
||||
# with:
|
||||
# build-version: ${{ needs.build-data.outputs.version }}
|
||||
# generate-gpo: true
|
||||
# profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||
windows-step-1:
|
||||
name: Windows build step 1 (PGO build)
|
||||
uses: ./.github/workflows/windows-alpha-build.yml
|
||||
needs: [build-data]
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
generate-gpo: true
|
||||
profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||
|
||||
#windows-step-2:
|
||||
# name: Windows build step 2 (Generate profile data)
|
||||
# uses: ./.github/workflows/windows-profile-build.yml
|
||||
# permissions:
|
||||
# contents: write
|
||||
# secrets: inherit
|
||||
# needs: [windows-step-1, build-data]
|
||||
# with:
|
||||
# build-version: ${{ needs.build-data.outputs.version }}
|
||||
# profile-data-path-archive: zen.win64-pgo-stage-1.zip
|
||||
windows-step-2:
|
||||
name: Windows build step 2 (Generate profile data)
|
||||
uses: ./.github/workflows/windows-profile-build.yml
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [windows-step-1, build-data]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
profile-data-path-archive: zen.win64-pgo-stage-1.zip
|
||||
|
||||
windows-step-3:
|
||||
name: Windows build step 3 (build with profile data)
|
||||
@@ -215,7 +215,7 @@ jobs:
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [build-data]
|
||||
needs: [build-data, windows-step-2]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
generate-gpo: false
|
||||
@@ -382,11 +382,68 @@ jobs:
|
||||
zen.macos-x64.dmg
|
||||
zen.macos-aarch64.dmg
|
||||
|
||||
prepare-flatpak:
|
||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||
permissions: write-all
|
||||
name: Prepare Flatpak
|
||||
needs: [release, linux, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Clone flatpak repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zen-browser/release-utils
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
npm install
|
||||
|
||||
- name: Generate new flatpak release
|
||||
run: |
|
||||
npm run build-flatpak -- \
|
||||
--version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: 🚀 Update releases for flatpak
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
|
||||
- name: Clone flatpak repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zen-browser/flatpak
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
path: flatpak
|
||||
|
||||
- name: Move releases.xml
|
||||
run: |
|
||||
pwd
|
||||
ls .
|
||||
ls ..
|
||||
mv releases.xml ./flatpak/io.github.zen_browser.zen.metainfo.xml
|
||||
# output the version to the file
|
||||
echo -n ${{ needs.build-data.outputs.version }} > ./flatpak/version
|
||||
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[release]: Update flatpak manifest'
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
repository: ./flatpak
|
||||
|
||||
- name: Wait 4 minutes for the flatpak repo to update
|
||||
run: sleep 240
|
||||
|
||||
release-flatpak:
|
||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||
permissions: write-all
|
||||
name: Release Flatpak
|
||||
needs: [release, linux, build-data]
|
||||
needs: [prepare-flatpak]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -454,10 +511,53 @@ jobs:
|
||||
body: |
|
||||
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
|
||||
|
||||
@mauro-balades
|
||||
@${{ github.actor }} please review and merge this PR.
|
||||
branch: update-to-${{ needs.build-data.outputs.version }}
|
||||
base: master
|
||||
git-token: ${{ secrets.DEPLOY_KEY }}
|
||||
delete-branch: true
|
||||
|
||||
release-homebrew:
|
||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||
permissions: write-all
|
||||
name: Homebrew release
|
||||
needs: [release, mac, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Clone flatpak repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: flathub/io.github.zen_browser.zen
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Download macOS ARM build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.macos-aarch64.dmg
|
||||
|
||||
- name: Download macOS x64 build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.macos-x64.dmg
|
||||
|
||||
- name: Update zen-browser Cask
|
||||
run: sh .github/workflows/src/update-homebrew.sh
|
||||
|
||||
- name: Clean up
|
||||
run: |
|
||||
rm -rf zen.macos-x64.dmg
|
||||
rm -rf zen.macos-aarch64.dmg
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
if: ${{ github.event.inputs.update_version == 'true' }}
|
||||
with:
|
||||
commit_message: 🔖 Update version to ${{ steps.data.outputs.version }} for homebrew!
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
|
||||
|
35
.github/workflows/issue-create.yml
vendored
@@ -1,35 +0,0 @@
|
||||
name: Issue labeler
|
||||
on:
|
||||
issues:
|
||||
types: [ opened ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
label-component:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
# required for all workflows
|
||||
issues: write
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Parse issue form
|
||||
uses: stefanbuck/github-issue-parser@v3
|
||||
id: issue-parser
|
||||
with:
|
||||
template-path: .github/ISSUE_TEMPLATE/bug_report.yml
|
||||
|
||||
- name: Set labels based on severity field
|
||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
|
||||
with:
|
||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
section: severity
|
3
.github/workflows/linux-alpha-build.yml
vendored
@@ -97,6 +97,9 @@ jobs:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import
|
||||
|
||||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
|
64
.github/workflows/macos-alpha-build.yml
vendored
@@ -45,6 +45,30 @@ jobs:
|
||||
brew install cairo sccache gnu-tar mercurial
|
||||
sudo pip install setuptools
|
||||
|
||||
# completly uninstall python3 and python3.12
|
||||
brew uninstall --ignore-dependencies python3.12 -f
|
||||
|
||||
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||
python3 -m pip install --user mercurial
|
||||
|
||||
rm '/usr/local/bin/2to3-3.11' # fix Could not symlink bin/2to3-3.11
|
||||
rm '/usr/local/bin/2to3-3.12' # fix Could not symlink bin/2to3-3.12
|
||||
rm /usr/local/bin/2to3 # fix Could not symlink bin/2to3
|
||||
rm '/usr/local/bin/idle3.11' #fix Could not symlink bin/idle3.11
|
||||
rm '/usr/local/bin/idle3.12' # fix Could not symlink bin/idle3.12
|
||||
rm '/usr/local/bin/idle3' # fix Could not symlink bin/idle3
|
||||
rm '/usr/local/bin/pydoc3.11' # fix Could not symlink bin/pydoc3.11
|
||||
rm '/usr/local/bin/pydoc3.12' # fix Could not symlink bin/pydoc3.12
|
||||
rm '/usr/local/bin/pydoc3' # fix Could not symlink bin/pydoc3
|
||||
rm '/usr/local/bin/python3.11' # fix Could not symlink bin/python3.11
|
||||
rm '/usr/local/bin/python3.12' # fix Could not symlink bin/python3.12
|
||||
rm '/usr/local/bin/python3' # fix Could not symlink bin/python3
|
||||
rm '/usr/local/bin/python3.11-config' # fix Could not symlink bin/python3.11-config
|
||||
rm '/usr/local/bin/python3.12-config' # fix Could not symlink bin/python3.12-config
|
||||
rm '/usr/local/bin/python3-config' # fix Could not symlink bin/python3-config
|
||||
|
||||
brew install watchman
|
||||
|
||||
- name: Force usage fo gnu-tar
|
||||
run: |
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
|
||||
@@ -68,17 +92,21 @@ jobs:
|
||||
- name: Download firefox source and dependancies
|
||||
run: pnpm surfer download
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||
./mach --no-interactive bootstrap --application-choice browser --no-system-changes
|
||||
cd ..
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
run: |
|
||||
pnpm surfer import
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
pnpm surfer import --verbose
|
||||
|
||||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- name: build Zen
|
||||
env:
|
||||
@@ -93,6 +121,24 @@ jobs:
|
||||
if: failure()
|
||||
run: sh .github/workflows/src/alpha-build.sh
|
||||
|
||||
- name: import APPLE DEVELOPER ID CERTIFICATE for .app
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}
|
||||
p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}
|
||||
|
||||
- name: Sign to .app 🖋️
|
||||
run: |
|
||||
ls engine
|
||||
ls engine/obj-${{ matrix.arch == 'x64' && 'x86_64' || 'aarch64' }}-apple-darwin
|
||||
ls engine/obj-${{ matrix.arch == 'x64' && 'x86_64' || 'aarch64' }}-apple-darwin/dist
|
||||
chmod +x ./build/codesign/sign.bash
|
||||
./build/codesign/sign.bash \
|
||||
-a "./engine/obj-${{ matrix.arch == 'x64' && 'x86_64' || 'aarch64' }}-apple-darwin/dist/Zen Browser.app" \
|
||||
-i "${{ secrets.macOS_AppleDeveloperId }}" \
|
||||
-b "./build/codesign/browser.developer.entitlements.xml" \
|
||||
-p "./build/codesign/plugin-container.developer.entitlements.xml"
|
||||
|
||||
- name: Package
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
@@ -103,6 +149,10 @@ jobs:
|
||||
mv ./dist/*.dmg "zen.macos-${{ matrix.arch }}.dmg"
|
||||
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
|
||||
|
||||
- name: Sign to .dmg
|
||||
run: |
|
||||
codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-${{ matrix.arch }}.dmg
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
7
.github/workflows/src/update-homebrew.sh
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
latest_version=$(git describe --tags --abbrev=0)
|
||||
sed -i "s/version(.*)/version('${latest_version}')/" ./Casks/zen-browser.rb
|
||||
|
||||
sha_x64=$(shasum -a 256 zen.macos-x64.dmg)
|
||||
sha_arm=$(shasum -a 256 zen.macos-aarch64.dmg)
|
||||
|
||||
sed -i "s/sha256(.*)/sha256(arm:'${sha_arm}', intel:'${sha_x64}')/" ./Casks/zen-browser.rb
|
29
.github/workflows/windows-alpha-build.yml
vendored
@@ -118,7 +118,7 @@ jobs:
|
||||
run: |
|
||||
cd engine/
|
||||
# Install a rust version compatible with 17
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.76
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||
source $HOME/.cargo/env
|
||||
|
||||
rustup target add x86_64-pc-windows-msvc
|
||||
@@ -130,16 +130,30 @@ jobs:
|
||||
echo "" >> ../configs/common/mozconfig
|
||||
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import --verbose
|
||||
|
||||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
name: Download artifact if use profdata
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
with:
|
||||
path: ~/artifact
|
||||
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import --verbose
|
||||
- name: Show artifact info
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
run: |
|
||||
ls ~/artifact
|
||||
ls ~/artifact/en-US.log
|
||||
ls ~/artifact/merged.profdata
|
||||
|
||||
chmod +x ~/artifact/en-US.log
|
||||
chmod +x ~/artifact/merged.profdata
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
@@ -165,6 +179,11 @@ jobs:
|
||||
ls ./dist
|
||||
ls .
|
||||
|
||||
- name: 🐛 Debug Session
|
||||
if: ${{ failure() }}
|
||||
uses: Warpbuilds/gha-debug@v1.3
|
||||
timeout-minutes: 15
|
||||
|
||||
- name: Move package for PGO upload
|
||||
if: ${{ inputs.generate-gpo }}
|
||||
run: |
|
||||
|
18
.github/workflows/windows-profile-build.yml
vendored
@@ -72,17 +72,23 @@ jobs:
|
||||
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> mozilla-build-run.sh
|
||||
echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh
|
||||
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
|
||||
|
||||
- name: 🐛 Debug Session
|
||||
if: ${{ failure() }}
|
||||
uses: Warpbuilds/gha-debug@v1.3
|
||||
timeout-minutes: 15
|
||||
|
||||
- name: Publish merged.profdata
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: merged-${{ matrix.generic == true && 'generic' || 'specific' }}.profdata
|
||||
- name: Move profile data
|
||||
run: |
|
||||
dir
|
||||
dir engine
|
||||
mv engine/merged.profdata merged.profdata
|
||||
mv engine/en-US.log en-US.log
|
||||
|
||||
- name: Publish en-US.log
|
||||
- name: Publish artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log
|
||||
path: |
|
||||
merged.profdata
|
||||
en-US.log
|
||||
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
3
.gitmodules
vendored
@@ -1,3 +1,6 @@
|
||||
[submodule "src/browser/base/content/zen-components"]
|
||||
path = src/browser/base/content/zen-components
|
||||
url = https://github.com/zen-browser/components
|
||||
[submodule "l10n"]
|
||||
path = l10n
|
||||
url = https://github.com/zen-browser/l10n-packs
|
||||
|
@@ -5,4 +5,4 @@
|
||||
"ManualAppUpdateOnly": true,
|
||||
"BackgroundAppUpdate": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Name=Zen Browser
|
||||
Comment=Experience tranquillity while browsing the web without people tracking you!
|
||||
Exec=zen %u
|
||||
Icon=zen
|
||||
Type=Application
|
||||
|
26
Casks/zen-browser.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
cask("zen-browser") do
|
||||
arch(arm: "aarch64", intel: "x64")
|
||||
version("1.0.0-a.34")
|
||||
sha256(arm: "6cc6e72c4a6a11d0139489d438ccf811715e170eebc01da739da32ace2580747", intel: "b9cb48f21a4ee39f3f3ae2361b9b0a55ae7219638cf798e1483c0eb8cf4660a6")
|
||||
|
||||
url("https://github.com/zen-browser/desktop/releases/download/#{version}/zen.macos-#{arch}.dmg")
|
||||
name("Zen Browser")
|
||||
desc("Beautifully designed, privacy-focused browser packed with awesome features")
|
||||
homepage("https://zen-browser.app/")
|
||||
|
||||
livecheck do
|
||||
url(:stable)
|
||||
regex(/[0-9].*-a.[0-9]*/i)
|
||||
end
|
||||
|
||||
zap trash: [
|
||||
"~/Library/Preferences/org.mozilla.com.zen.browser.plist",
|
||||
"~/Library/Saved Application State/org.mozilla.com.zen.browser.savedState"
|
||||
]
|
||||
|
||||
app("Zen Browser.app")
|
||||
|
||||
postflight do
|
||||
system("xattr -c '/Applications/Zen Browser.app/'")
|
||||
end
|
||||
end
|
58
README.md
@@ -1,5 +1,11 @@
|
||||
|
||||
# 🌀 Zen Browser
|
||||
<div align="center">
|
||||
<picture>
|
||||
<img src="./zen-black.svg" width="128px">
|
||||
</picture>
|
||||
</div>
|
||||
<h1 align="center">
|
||||
Zen Browser
|
||||
</h1>
|
||||
|
||||
Experience tranquillity while browsing the web without people tracking you!
|
||||
|
||||
@@ -7,29 +13,46 @@ Experience tranquillity while browsing the web without people tracking you!
|
||||
* [Download](https://www.zen-browser.app/download)
|
||||
* [Release Notes](https://www.zen-browser.app/release-notes/latest)
|
||||
|
||||
[](https://ko-fi.com/K3K111FH7H)
|
||||
<a href='https://flathub.org/apps/io.github.zen_browser.zen'>
|
||||
<img width='220' alt='Get it on Flathub' src='https://flathub.org/api/badge?locale=en'/>
|
||||
</a>
|
||||
[](https://crowdin.com/project/zen-browser)
|
||||
|
||||
[](https://flathub.org/apps/io.github.zen_browser.zen)
|
||||
|
||||
[](https://www.patreon.com/zen_browser)
|
||||
|
||||
[](https://ko-fi.com/zen_browser)
|
||||
|
||||
# Compatibility
|
||||
|
||||
Zen is currently built using firefox version `129.0.1`!
|
||||
Zen is currently built using firefox version `130.0`!
|
||||
|
||||
* Checkout the latest [releases notes](https://www.zen-browser.app/release-notes)!
|
||||
* Check out the latest [release notes](https://www.zen-browser.app/release-notes)!
|
||||
|
||||
# Performance
|
||||
|
||||
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible!
|
||||
|
||||
* Checkout the latest [performance benchmarks](./docs/performance.md)!
|
||||
* Checkout the latest [performance benchmarks](https://docs.zen-browser.app/benchmarks)!
|
||||
|
||||
# Installation
|
||||
|
||||
## MacOS
|
||||
You can install the Zen Browser using Homebrew:
|
||||
|
||||
```
|
||||
brew tap zen-browser/browser https://github.com/zen-browser/desktop.git
|
||||
brew install zen-browser
|
||||
```
|
||||
|
||||
# Core Components
|
||||
|
||||
Some components used by @zen-browser as an attempt to make firefox forks a better place. You can find them [here](https://github.com/zen-browser/components).
|
||||
|
||||
## 🚀 Run Locally
|
||||
|
||||
Clone the project
|
||||
|
||||
```bash
|
||||
git clone https://github.com/zen-browser/desktop.git
|
||||
git clone https://github.com/zen-browser/desktop.git --recurse-submodules
|
||||
cd desktop
|
||||
```
|
||||
|
||||
@@ -62,14 +85,25 @@ npm start
|
||||
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
|
||||
- [Donno 🐒](https://www.onnno.nl/) (For making the logo)
|
||||
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
|
||||
- [nitro](https://github.com/n7itro) (For the amazing work on the browser)
|
||||
|
||||
## Third Party Code
|
||||
|
||||
Zen coudn't be in its current state without the help of these amazing projects!
|
||||
Zen couldn't be in its current state without the help of these amazing projects!
|
||||
|
||||
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
||||
|
||||
## License
|
||||
|
||||
[MPL LICENSE](/LICENSE)
|
||||
[MPL LICENSE](./LICENSE)
|
||||
|
||||
## Star History
|
||||
|
||||
<a href="https://star-history.com/#zen-browser/desktop&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
|
32
build/codesign/browser.developer.entitlements.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!--
|
||||
Entitlements to apply to the main browser process executable during
|
||||
codesigning of production channel builds.
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||
|
||||
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||
|
||||
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||
<key>com.apple.security.device.audio-input</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||
<key>com.apple.security.device.camera</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the location on sites the user allows -->
|
||||
<key>com.apple.security.personal-information.location</key><true/>
|
||||
|
||||
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||
for native messaging webextension helper applications launched by
|
||||
Firefox which rely on Apple Events to signal other processes. -->
|
||||
<key>com.apple.security.automation.apple-events</key><true/>
|
||||
</dict>
|
||||
</plist>
|
32
build/codesign/plugin-container.developer.entitlements.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!--
|
||||
Entitlements to apply to the plugin-container.app bundle during
|
||||
codesigning of production channel builds.
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||
|
||||
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||
|
||||
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||
<key>com.apple.security.device.audio-input</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||
<key>com.apple.security.device.camera</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the location on sites the user allows -->
|
||||
<key>com.apple.security.personal-information.location</key><true/>
|
||||
|
||||
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||
for native messaging webextension helper applications launched by
|
||||
Firefox which rely on Apple Events to signal other processes. -->
|
||||
<key>com.apple.security.automation.apple-events</key><true/>
|
||||
</dict>
|
||||
</plist>
|
155
build/codesign/sign.bash
Normal file
@@ -0,0 +1,155 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# Runs codesign commands to codesign a Firefox .app bundle and enable macOS
|
||||
# Hardened Runtime. Intended to be manually run by developers working on macOS
|
||||
# 10.14+ who want to enable Hardened Runtime for manual testing. This is
|
||||
# provided as a stop-gap until automated build tooling is available that signs
|
||||
# binaries with a certificate generated during builds (bug 1522409). This
|
||||
# script requires macOS 10.14 because Hardened Runtime is only available for
|
||||
# applications running on 10.14 despite support for the codesign "-o runtime"
|
||||
# option being available in 10.13.6 and newer.
|
||||
#
|
||||
# The script requires an identity string (-i option) from an Apple Developer
|
||||
# ID certificate. This can be found in the macOS KeyChain after configuring an
|
||||
# Apple Developer ID certificate.
|
||||
#
|
||||
# Example usage on macOS 10.14:
|
||||
#
|
||||
# $ ./mach build
|
||||
# $ ./mach build package
|
||||
# $ open </PATH/TO/DMG/FILE.dmg>
|
||||
# <Drag Nightly.app to ~>
|
||||
# $ ./security/mac/hardenedruntime/codesign.bash \
|
||||
# -a ~/Nightly.app \
|
||||
# -i <MY-IDENTITY-STRING> \
|
||||
# -b security/mac/hardenedruntime/browser.developer.entitlements.xml
|
||||
# -p security/mac/hardenedruntime/plugin-container.developer.entitlements.xml
|
||||
# $ open ~/Nightly.app
|
||||
#
|
||||
|
||||
set -x
|
||||
|
||||
usage ()
|
||||
{
|
||||
echo "Usage: $0 "
|
||||
echo " -a <PATH-TO-BROWSER.app>"
|
||||
echo " -i <IDENTITY>"
|
||||
echo " -b <ENTITLEMENTS-FILE>"
|
||||
echo " -p <CHILD-ENTITLEMENTS-FILE>"
|
||||
echo " [-o <OUTPUT-DMG-FILE>]"
|
||||
exit -1
|
||||
}
|
||||
|
||||
# Make sure we are running on macOS with the sw_vers command available.
|
||||
SWVERS=/usr/bin/sw_vers
|
||||
if [ ! -x ${SWVERS} ]; then
|
||||
echo "ERROR: macOS 10.14 or later is required"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Require macOS 10.14 or newer.
|
||||
OSVERSION=`${SWVERS} -productVersion|sed -En 's/[0-9]+\.([0-9]+)\.[0-9]+/\1/p'`;
|
||||
if [ ${OSVERSION} \< 14 ]; then
|
||||
echo "ERROR: macOS 10.14 or later is required"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
while getopts "a:i:b:o:p:" opt; do
|
||||
case ${opt} in
|
||||
a ) BUNDLE=$OPTARG ;;
|
||||
i ) IDENTITY=$OPTARG ;;
|
||||
b ) BROWSER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||
p ) PLUGINCONTAINER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||
o ) OUTPUT_DMG_FILE=$OPTARG ;;
|
||||
\? ) usage; exit -1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "${BUNDLE}" ] ||
|
||||
[ -z "${IDENTITY}" ] ||
|
||||
[ -z "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ] ||
|
||||
[ -z "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ ! -d "${BUNDLE}" ]; then
|
||||
echo "Invalid bundle. Bundle should be a .app directory"
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ ! -e "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ]; then
|
||||
echo "Invalid entitlements file"
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ ! -e "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||
echo "Invalid entitlements file"
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# DMG file output flag is optional
|
||||
if [ ! -z "${OUTPUT_DMG_FILE}" ] &&
|
||||
[ -e "${OUTPUT_DMG_FILE}" ]; then
|
||||
echo "Output dmg file ${OUTPUT_DMG_FILE} exists. Please delete it first."
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
echo "-------------------------------------------------------------------------"
|
||||
echo "bundle: $BUNDLE"
|
||||
echo "identity: $IDENTITY"
|
||||
echo "browser entitlements file: $BROWSER_ENTITLEMENTS_FILE"
|
||||
echo "plugin-container entitlements file: $PLUGINCONTAINER_ENTITLEMENTS_FILE"
|
||||
echo "output dmg file (optional): $OUTPUT_DMG_FILE"
|
||||
echo "-------------------------------------------------------------------------"
|
||||
|
||||
# Clear extended attributes which cause codesign to fail
|
||||
xattr -cr "${BUNDLE}"
|
||||
|
||||
# Sign these binaries first. Signing of some binaries has an ordering
|
||||
# requirement where other binaries must be signed first.
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||
"${BUNDLE}/Contents/Library/LaunchServices/org.mozilla.updater" \
|
||||
"${BUNDLE}/Contents/MacOS/XUL" \
|
||||
"${BUNDLE}/Contents/MacOS/pingsender" \
|
||||
"${BUNDLE}/Contents/MacOS/minidump-analyzer" \
|
||||
"${BUNDLE}/Contents/MacOS/*.dylib" \
|
||||
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
"${BUNDLE}"/Contents/MacOS/crashreporter.app
|
||||
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
"${BUNDLE}"/Contents/MacOS/updater.app
|
||||
|
||||
# Sign zen main executable
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
--entitlements ${BROWSER_ENTITLEMENTS_FILE} \
|
||||
"${BUNDLE}"/Contents/MacOS/zen
|
||||
|
||||
# Sign Library/LaunchServices
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
"${BUNDLE}"/Contents/Library/LaunchServices/org.mozilla.updater
|
||||
|
||||
# Sign gmp-clearkey files
|
||||
find "${BUNDLE}"/Contents/Resources/gmp-clearkey -type f -exec \
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" {} \;
|
||||
|
||||
# Sign the main bundle
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||
--entitlements ${BROWSER_ENTITLEMENTS_FILE} "${BUNDLE}"
|
||||
|
||||
# Sign the plugin-container bundle with deep
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
--entitlements ${PLUGINCONTAINER_ENTITLEMENTS_FILE} \
|
||||
"${BUNDLE}"/Contents/MacOS/plugin-container.app
|
||||
|
||||
# Validate
|
||||
codesign -vvv --verbose=4 --deep "${BUNDLE}"
|
@@ -1,4 +1 @@
|
||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
||||
Sorry, your browser does not support inline SVG.
|
||||
</svg>
|
||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />Sorry, your browser does not support inline SVG.</svg>
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 219 B |
BIN
configs/branding/alpha/PrivateBrowsing_150.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
configs/branding/alpha/PrivateBrowsing_70.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
configs/branding/alpha/VisualElements_150.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
configs/branding/alpha/VisualElements_70.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
configs/branding/alpha/content/about-logo-private.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
1
configs/branding/alpha/content/about-logo-private.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="d"><rect class="h" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="f"><path class="i" d="M165.9156,146.3156c-15.6016,0-28.6656,11.0055-31.8813,25.6562h-12.0687c-3.2156-14.6508-16.2797-25.6562-31.8813-25.6562-18.0063,0-32.6562,14.65-32.6562,32.6562s14.65,32.6562,32.6562,32.6562c15.6016,0,28.6656-11.0055,31.8813-25.6562h12.0687c3.2156,14.6508,16.2797,25.6562,31.8813,25.6562,18.0063,0,32.6562-14.65,32.6562-32.6562s-14.65-32.6562-32.6562-32.6562ZM90.0844,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562ZM165.9156,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562Z"/><path class="i" d="M214.4,115.6812h-21.8391l-9.2422-65.2906c-.3031-2.1406-1.5813-4.0219-3.4594-5.0969-1.8781-1.0719-4.1469-1.2188-6.1469-.3906l-45.7125,18.8906-45.7125-18.8906c-2-.8281-4.2688-.6813-6.1469.3906-1.8781,1.075-3.1562,2.9562-3.4594,5.0969l-9.2422,65.2906h-21.8391c-3.8656,0-7,3.1344-7,7s3.1344,7,7,7h172.8c3.8656,0,7-3.1344,7-7s-3.1344-7-7-7ZM85.2781,61.2875l40.0469,16.55c1.7125.7063,3.6375.7063,5.35,0l40.0469-16.55,7.6984,54.3937h-100.8406l7.6984-54.3937Z"/></g></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
configs/branding/alpha/content/about-logo-private@2x.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
configs/branding/alpha/content/about-logo.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
1
configs/branding/alpha/content/about-logo.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="d" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.f{fill:#000;}.f,.g,.h{stroke-width:0px;}.g{fill:url(#e);}.h{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><rect class="f" width="256" height="256" rx="58.4" ry="58.4"/><rect class="g" width="256" height="256" rx="58.4" ry="58.4"/><path class="h" d="M202.9973,184.5702c-.1715,10.2808-8.7737,18.4298-19.0559,18.4298h-77.2885c-3.0056,0-5.0458-3.0553-3.894-5.8314l.0262-.0632c5.0822-12.2707,13.3289-22.6249,23.8591-30.1785,1.3098-.9395,2.8903-1.4269,4.5023-1.4269h53.1034c10.462,0,18.9225,8.5681,18.7473,19.0702Z"/><path class="h" d="M149.3471,53c3.0056,0,5.0458,3.0553,3.894,5.8314l-.0262.0631c-5.0822,12.2708-13.3289,22.6249-23.8591,30.1785-1.3098.9396-2.8903,1.427-4.5023,1.427h-52.7949c-10.2822,0-18.8844-8.149-19.0559-18.4298-.1752-10.5021,8.2853-19.0702,18.7473-19.0702h77.5971Z"/><path class="h" d="M71.7465,203c-2.3913,0-4.8207-.46-7.1673-1.4319-9.5666-3.9624-14.1096-14.9301-10.1472-24.4964,6.0943-14.7127,14.8294-27.9027,25.9634-39.2034,11.5341-11.7073,25.1364-20.8551,40.4297-27.1898,21.021-8.7076,37.393-25.0792,46.0995-46.0995,3.9624-9.567,14.9305-14.1093,24.4964-10.1472,9.5666,3.9624,14.1096,14.9301,10.1472,24.4964-6.0943,14.7127-14.8294,27.9027-25.9634,39.2034-11.5341,11.7073-25.1364,20.8551-40.4297,27.1898-21.021,8.7076-37.393,25.0792-46.0995,46.0995-2.9905,7.22-9.9725,11.5791-17.329,11.5791Z"/></svg>
|
After Width: | Height: | Size: 1.6 KiB |
BIN
configs/branding/alpha/content/about-logo@2x.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
1
configs/branding/alpha/content/about-wordmark.svg
Normal file
After Width: | Height: | Size: 6.4 KiB |
1
configs/branding/alpha/content/firefox-wordmark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 56"><defs><style>.b{fill:context-fill #20123a;}</style></defs><path class="b" d="M11.2896,37.6632h15.1928v5.2919H3.2415v-3.8076l15.1487-21.2557H3.2126v-5.2919h23.2393v3.811l-15.1622,21.2523ZM50.8649,26.3765c.5434,1.4469.8151,3.1418.8151,5.0778v1.7322h-15.5019v.017c0,1.1243.2089,2.0991.6301,2.9176.4195.822,1.0139,1.4537,1.7849,1.8987s1.6847.6657,2.7427.6657c.7014,0,1.3433-.0984,1.9258-.2955.5842-.197,1.0818-.4925,1.4979-.8899.4144-.394.7303-.8797.9476-1.4503l5.8404.3838c-.2972,1.4028-.9018,2.6255-1.8154,3.6683-.9137,1.0428-2.0906,1.8511-3.5273,2.4319-1.4385.5774-3.0959.8661-4.9726.8661-2.3419,0-4.3561-.4755-6.0408-1.43-1.6847-.9544-2.9805-2.3063-3.8907-4.0623-.9086-1.7526-1.362-3.8314-1.362-6.2327,0-2.3402.4534-4.3951,1.362-6.1647.9103-1.7696,2.1925-3.1486,3.8466-4.1336,1.6558-.9884,3.5986-1.4843,5.8318-1.4843,1.503,0,2.9024.2411,4.2032.7201,1.2992.4789,2.4354,1.199,3.4084,2.1568.9731.9578,1.7306,2.1602,2.274,3.6072ZM45.7378,29.2737c0-.9069-.1987-1.7119-.5927-2.4149-.3957-.6997-.9409-1.2534-1.6388-1.6508-.6964-.4008-1.503-.6012-2.4235-.6012-.9578,0-1.8053.2208-2.5406.6589-.7371.4382-1.3127,1.0292-1.7271,1.7628-.3818.679-.5853,1.4304-.6228,2.2451h9.5455ZM73.0682,20.9318c-1.1769-.6929-2.5543-1.0394-4.1353-1.0394-1.6898,0-3.1265.3872-4.3137,1.165-1.1854.7744-2.0294,1.824-2.5338,3.1486h-.2667v-4.0181h-6.017v22.7672h6.3125v-13.1617c.0102-.9782.1953-1.8138.557-2.5135.36-.6963.8644-1.2261,1.5115-1.593.647-.3635,1.396-.5469,2.2451-.5469,1.2653,0,2.257.394,2.9788,1.1786.7217.7846,1.0767,1.8749,1.0682,3.2675v13.3689h6.3125v-14.4965c0-1.7662-.326-3.2913-.9782-4.5718-.6521-1.2805-1.5658-2.2655-2.741-2.955Z"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
BIN
configs/branding/alpha/document.ico
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
configs/branding/alpha/document_pdf.ico
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
configs/branding/alpha/firefox.ico
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
configs/branding/alpha/firefox64.ico
Normal file
After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 697 B After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
configs/branding/alpha/pbmode.ico
Normal file
After Width: | Height: | Size: 103 KiB |
@@ -1,4 +0,0 @@
|
||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
||||
Sorry, your browser does not support inline SVG.
|
||||
</svg>
|
Before Width: | Height: | Size: 225 B |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 461 B |
Before Width: | Height: | Size: 634 B |
Before Width: | Height: | Size: 697 B |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 890 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 1.6 KiB |
@@ -3,6 +3,9 @@ ac_add_options --with-app-name=${binName}
|
||||
ac_add_options --with-app-basename=Zen
|
||||
ac_add_options --enable-official-branding
|
||||
|
||||
# Localization
|
||||
ac_add_options --with-l10n-base="$PWD/browser/locales"
|
||||
|
||||
export MOZ_USER_DIR="${name}"
|
||||
export MOZ_APP_BASENAME=Zen
|
||||
export MOZ_APP_PROFILE=${binName}
|
||||
@@ -18,7 +21,7 @@ export MOZ_DISTRIBUTION_ID=${appId}
|
||||
# Misc
|
||||
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
|
||||
export MOZ_SOURCE_CHANGESET=${changeset}
|
||||
#export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
|
||||
ac_add_options --enable-application=browser
|
||||
|
||||
@@ -30,7 +33,9 @@ if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --disable-debug-symbols
|
||||
ac_add_options --disable-debug-js-modules
|
||||
ac_add_options --disable-tests
|
||||
|
||||
ac_add_options --disable-jprof
|
||||
ac_add_options --disable-vtune
|
||||
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-wasm-simd
|
||||
@@ -49,9 +54,8 @@ if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --disable-default-browser-agent
|
||||
|
||||
if ! test "$ZEN_DISABLE_LTO"; then
|
||||
export MOZ_LTO=1
|
||||
ac_add_options MOZ_LTO=1
|
||||
ac_add_options --enable-lto=full,cross
|
||||
export MOZ_LTO=cross,thin
|
||||
ac_add_options --enable-lto=cross,thin
|
||||
fi
|
||||
|
||||
ac_add_options --enable-jemalloc
|
||||
@@ -75,7 +79,7 @@ if test "$ZEN_RELEASE"; then
|
||||
|
||||
ac_add_options --enable-updater
|
||||
|
||||
#export MOZ_PACKAGE_JSSHELL=1
|
||||
export MOZ_PACKAGE_JSSHELL=1
|
||||
fi
|
||||
|
||||
ac_add_options --enable-unverified-updates
|
||||
@@ -89,7 +93,6 @@ ac_add_options --enable-eme=widevine
|
||||
ac_add_options --allow-addon-sideload
|
||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||
|
||||
mk_add_options MOZ_CRASHREPORTER=0
|
||||
mk_add_options MOZ_DATA_REPORTING=0
|
||||
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=0
|
||||
|
@@ -35,18 +35,18 @@ if test "$ZEN_RELEASE"; then
|
||||
|
||||
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||
export CXXFLAGS="$CXXFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||
export CXXFLAGS="$CXXFLAGS -O3 -flto=thin -ffp-contract=fast -march=x86-64"
|
||||
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64"
|
||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64 -C codegen-units=1"
|
||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64 -C codegen-units=1 -Clink-args=--icf=safe"
|
||||
else
|
||||
ac_add_options --enable-wasm-avx
|
||||
ac_add_options --enable-optimize="-O3 -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
|
||||
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export CXXFLAGS="$CXXFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export CXXFLAGS="$CXXFLAGS -O3 -flto=thin -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64-v3"
|
||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1"
|
||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1 -Clink-args=--icf=safe"
|
||||
fi
|
||||
export VERBOSE=1
|
||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||
|
@@ -18,7 +18,6 @@ if test "$ZEN_CROSS_COMPILING"; then
|
||||
export WIN32_REDIST_DIR="$(echo ~)/win-cross/vs2022/VC/Redist/MSVC/14.38.33135/x64/Microsoft.VC143.CRT"
|
||||
|
||||
export MIDL="$TOOLS/wine/bin/widl"
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export WINEDEBUG=-all
|
||||
export WINE="$TOOLS/wine/bin/wine64"
|
||||
@@ -33,37 +32,35 @@ ac_add_options --disable-maintenance-service
|
||||
ac_add_options --disable-bits-download
|
||||
|
||||
if test "$SURFER_COMPAT" = "true"; then
|
||||
ac_add_options --enable-optimize="-O2 -Qvec -mtune=haswell -march=x86-64 -w"
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize"
|
||||
|
||||
export CFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||
export CPPFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||
export CXXFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||
export CXXFLAGS="-flto=thin -mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||
export LDFLAGS="-Wl,-O2"
|
||||
export RUSTFLAGS="-C codegen-units=1 -Ctarget-cpu=x86-64"
|
||||
export RUSTFLAGS="-Clink-args=--icf=safe -C codegen-units=1 -Ctarget-cpu=x86-64"
|
||||
else
|
||||
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -Xclang -w"
|
||||
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -ftree-vectorize -Xclang -w"
|
||||
ac_add_options --enable-wasm-avx
|
||||
|
||||
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||
export CXXFLAGS="-O2 -flto=thin -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||
export LDFLAGS="-Wl,-O3 -march=x86-64-v3"
|
||||
export RUSTFLAGS="-C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
|
||||
export RUSTFLAGS="-Clink-args=--icf=safe -C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
|
||||
fi
|
||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||
export VERBOSE=1
|
||||
|
||||
#if test "$ZEN_GA_GENERATE_PROFILE"; then
|
||||
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
||||
# ac_add_options --enable-profile-generate=cross
|
||||
#else
|
||||
# ac_add_options --enable-profile-use=cross
|
||||
# if test "$SURFER_COMPAT" = "true"; then
|
||||
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-generic.profdata
|
||||
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-generic.log
|
||||
# else
|
||||
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-specific.profdata
|
||||
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-specific.log
|
||||
# fi
|
||||
#fi
|
||||
if test "$ZEN_CROSS_COMPILING"; then
|
||||
if test "$ZEN_GA_GENERATE_PROFILE"; then
|
||||
export CXXFLAGS="$CXXFLAGS -fprofile-generate -mllvm -enable-name-compression=false -mllvm -pgo-temporal-instrumentation -fprofile-update=atomic"
|
||||
mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
||||
ac_add_options --enable-profile-generate=cross
|
||||
else
|
||||
ac_add_options --enable-profile-use=cross
|
||||
ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
|
||||
ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
|
||||
fi
|
||||
|
||||
fi
|
||||
|
@@ -11,3 +11,5 @@
|
||||
* Overall stability
|
||||
* Pinning tabs (Grid layout)
|
||||
* Overall UX
|
||||
* Themes Page
|
||||
* Settings Page
|
||||
|
@@ -1,60 +0,0 @@
|
||||
# 🌀 Zen Browser Performance traker
|
||||
|
||||
## Scores
|
||||
|
||||
## 1
|
||||
- [NOCanoa](https://github.com/NOCanoa)
|
||||
|
||||
OS: win 11; CPU: i5 13600k
|
||||
|
||||
## web.basemark
|
||||
|
||||
https://web.basemark.com/
|
||||
|
||||
| | score: |CSS | HTML5 | Page load and Responsiveness | Resize Cap. |
|
||||
|-----------|-----|-----|-------|------------------------------|-------------|
|
||||
| 1.0.0-a.15-opt | 2141.63 | 59% | 91% | 90% | 76% |
|
||||
| 1.0.0-a.13-opt | 1658.87 | 59% | 91% | 90% | 76% |
|
||||
| 1.0.0-a.12-opt | 1874.49 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.11-opt | 1678.49 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.10 | 1660.89 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.9 | 470 | why | why | why | why |
|
||||
| 1.0.0-a.8 | 446.74 | 59% | 91% | 96% | 76% |
|
||||
| 1.0.0-a.7 | 1964.43 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.6 | 1747.98 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.4 | 470.49 | 59% | 91% | 97% | 76% |
|
||||
| 1.0.0-a.3 | 475.52 |59% | 91% | 97% | 76% |
|
||||
| other | last | utpdate | 31/7 | 2024 | - |
|
||||
| Librewolf 128.0-2 | 1953.65 | 59.66% | 89.01% | 91.72% | 76.12% |
|
||||
| FF nightly 130.0a1 | 1912.77 | 59.66% | 90.91% | 91.72% | 76.12% |
|
||||
|
||||
|
||||
```mermaid
|
||||
xychart-beta
|
||||
title "Performance over time (Higher is better)"
|
||||
x-axis [.3, .4, .6, .7, .8, .9, .10, .11, .12, .13, .15]
|
||||
y-axis "Benchmark Points"
|
||||
bar [475.52, 470.49, 1747.98, 1964.43, 446.74, 470, 1660.89, 1678.49, 1874.49, 1658.87, 2141.63]
|
||||
line [475.52, 470.49, 1747.98, 1964.43, 446.74, 470, 1660.89, 1678.49, 1874.49, 1658.87, 2141.63]
|
||||
```
|
||||
|
||||
## Speedometer3.0
|
||||
|
||||
https://browserbench.org/Speedometer3.0/
|
||||
|
||||
| | score: |
|
||||
|-----------|-----|
|
||||
| 1.0.0-a.15-opt | TODO |
|
||||
| 1.0.0-a.13-opt | 21.1 |
|
||||
| 1.0.0-a.12-opt | 21.5 |
|
||||
| 1.0.0-a.11-opt | 20.8 |
|
||||
| 1.0.0-a.10 | 21.2 |
|
||||
| others| - |
|
||||
| Vivaldi 6.7.3329.39| 27.8 |
|
||||
| FF nightly 130.0a1 | 27.0 |
|
||||
| Librewolf 128.0-2 | 20.2 |
|
||||
|
||||
## Repository View Counter
|
||||
|
||||
<div align='center'><a href='https://www.websitecounterfree.com'><img src='https://www.websitecounterfree.com/c.php?d=9&id=57772&s=40' border='0' alt='Free Website Counter'></a><br / ><small><a href='https://www.websitecounterfree.com' title="Free Website Counter">Free Website Counter</a></small></div>
|
||||
|
@@ -1,5 +0,0 @@
|
||||
|
||||
# Warp Build
|
||||
|
||||
For linux, we are using [warpbuild](https://warpbuild.com/) because github workflows can't handle building firefox :(
|
||||
|
@@ -17,6 +17,7 @@ finish-args:
|
||||
- --filesystem=xdg-download:rw
|
||||
- --device=all
|
||||
- --talk-name=org.freedesktop.FileManager1
|
||||
- --talk-name=org.freedesktop.ScreenSaver
|
||||
- --own-name=org.mozilla.zen.*
|
||||
- --own-name=org.mpris.MediaPlayer2.firefox.*
|
||||
- --system-talk-name=org.freedesktop.NetworkManager
|
||||
@@ -29,7 +30,7 @@ modules:
|
||||
|
||||
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
|
||||
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
|
||||
- install -Dm0644 metadata/icons/io.github.zen_browser.zen.png ${{FLATPAK_DEST}}/share/icons/hicolor/256x256/apps/${{FLATPAK_ID}}.png
|
||||
- install -Dm0644 metadata/icons/io.github.zen_browser.zen.svg ${{FLATPAK_DEST}}/share/icons/hicolor/scalable/apps/${{FLATPAK_ID}}.svg
|
||||
- install -Dm0644 metadata/io.github.zen_browser.zen.metainfo.xml ${{FLATPAK_DEST}}/share/metainfo/${{FLATPAK_ID}}.metainfo.xml
|
||||
- install -Dm0644 metadata/io.github.zen_browser.zen.desktop ${{FLATPAK_DEST}}/share/applications/${{FLATPAK_ID}}.desktop
|
||||
|
||||
@@ -40,7 +41,7 @@ modules:
|
||||
strip-components: 0
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar
|
||||
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar
|
||||
sha256: {flatpak_sha256}
|
||||
strip-components: 0
|
||||
dest: metadata
|
1
l10n
Submodule
@@ -27,6 +27,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/zen-browser/core#readme",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.2.9"
|
||||
"@zen-browser/surfer": "^1.3.6"
|
||||
}
|
||||
}
|
||||
|
10
pnpm-lock.yaml
generated
@@ -9,8 +9,8 @@ importers:
|
||||
.:
|
||||
dependencies:
|
||||
'@zen-browser/surfer':
|
||||
specifier: ^1.2.9
|
||||
version: 1.2.9
|
||||
specifier: ^1.3.6
|
||||
version: 1.3.6
|
||||
|
||||
packages:
|
||||
|
||||
@@ -109,8 +109,8 @@ packages:
|
||||
'@types/node@17.0.45':
|
||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||
|
||||
'@zen-browser/surfer@1.2.9':
|
||||
resolution: {integrity: sha512-XDEG80YOiQd0kl0PX0WzdYDwdOJ5hhrU0bcohBeK68my3nOXTIiuM26FXh3/2+feNzr/Of7Y6Qfmmdf0YCAvgw==}
|
||||
'@zen-browser/surfer@1.3.6':
|
||||
resolution: {integrity: sha512-b+5GS9qMGoMB8lRaFYRA9C3EqntVf35sBx5dq7X3IuqlB9GmarYoS5E26EvXbmPJcfYkJG7ar05nHkkZyOrGuw==}
|
||||
hasBin: true
|
||||
|
||||
ansi-regex@5.0.1:
|
||||
@@ -786,7 +786,7 @@ snapshots:
|
||||
|
||||
'@types/node@17.0.45': {}
|
||||
|
||||
'@zen-browser/surfer@1.2.9':
|
||||
'@zen-browser/surfer@1.3.6':
|
||||
dependencies:
|
||||
'@resvg/resvg-js': 1.4.0
|
||||
async-icns: 1.0.2
|
||||
|
17
scripts/copy-language-pack.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
browser_locales=engine/browser/locales
|
||||
|
||||
copy_browser_locales() {
|
||||
langId=$1
|
||||
mkdir -p $browser_locales/$langId
|
||||
if [ "$langId" = "en-US" ]; then
|
||||
find $browser_locales/$langId -type f -name "zen*" -delete
|
||||
rsync -av --exclude=.git ./l10n/en-US/browser/ $browser_locales/$langId/
|
||||
return
|
||||
fi
|
||||
rm -rf $browser_locales/$langId/
|
||||
rsync -av --exclude=.git ./l10n/$langId/ $browser_locales/$langId/
|
||||
}
|
||||
|
||||
LANG=$1
|
||||
echo "Copying language pack for $LANG"
|
||||
copy_browser_locales $LANG
|
57
scripts/download-language-packs.sh
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
set -ex
|
||||
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
git config --global init.defaultBranch main
|
||||
git config --global fetch.prune true
|
||||
|
||||
mkdir ~/tools
|
||||
cd ~/tools
|
||||
git clone https://github.com/glandium/git-cinnabar.git
|
||||
cd git-cinnabar
|
||||
git checkout 0.5.11
|
||||
export PATH=~/tools/git-cinnabar:$PATH
|
||||
cd ~
|
||||
git cinnabar download
|
||||
cd $CURRENT_DIR
|
||||
|
||||
update_language() {
|
||||
langId=$1
|
||||
cd ./l10n
|
||||
cd $langId
|
||||
|
||||
echo "Updating $langId"
|
||||
rm -rf .git
|
||||
|
||||
git init
|
||||
git remote add upstream hg://hg.mozilla.org/l10n-central/$langId
|
||||
git remote set-url upstream hg://hg.mozilla.org/l10n-central/$langId
|
||||
git pull upstream branches/default/tip
|
||||
|
||||
cd $CURRENT_DIR
|
||||
}
|
||||
|
||||
export PATH=~/tools/git-cinnabar:$PATH
|
||||
for lang in $(cat ./l10n/supported-languages); do
|
||||
update_language $lang
|
||||
done
|
||||
cd $CURRENT_DIR
|
||||
|
||||
# Move all the files to the correct location
|
||||
|
||||
sh scripts/copy-language-pack.sh en-US
|
||||
for lang in $(cat ./l10n/supported-languages); do
|
||||
sh scripts/copy-language-pack.sh $lang
|
||||
done
|
||||
|
||||
wait
|
||||
|
||||
echo "Cleaning up"
|
||||
rm -rf ~/tools
|
||||
rm -rf ~/.git-cinnabar
|
||||
|
||||
for lang in $(cat ./l10n/supported-languages); do
|
||||
# remove every file except if it starts with "zen"
|
||||
find ./l10n/$lang -type f -not -name "zen*" -delete
|
||||
done
|
2
scripts/update-en-US-packs.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
sh ./scripts/copy-language-pack.sh en-US
|
@@ -32,9 +32,9 @@ pref("gfx.content.skia-font-cache-size", 20);
|
||||
pref("browser.cache.jsbc_compression_level", 3);
|
||||
|
||||
/** MEDIA CACHE ***/
|
||||
pref("media.memory_cache_max_size", 512000); // alt=512000; also in Securefox (inactive there)
|
||||
pref("media.cache_readahead_limit", 9000); // default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback
|
||||
pref("media.cache_resume_threshold", 6000); // default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold (in seconds)
|
||||
pref("media.memory_cache_max_size", 65536);
|
||||
pref("media.cache_readahead_limit", 7200);
|
||||
pref("media.cache_resume_threshold", 3600);
|
||||
|
||||
/** IMAGE CACHE ***/
|
||||
pref("image.mem.decode_bytes_at_a_time", 32768);
|
||||
@@ -47,8 +47,7 @@ pref("network.http.pacing.requests.enabled", false);
|
||||
pref("network.dnsCacheExpiration", 3600);
|
||||
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
|
||||
pref("network.websocket.max-connections", 400); // default=200
|
||||
pref("network.ssl_tokens_cache_capacity", 32768);
|
||||
|
||||
pref("network.ssl_tokens_cache_capacity", 10240);
|
||||
|
||||
/** MIXED CONTENT + CROSS-SITE ***/
|
||||
pref("pdfjs.enableScripting", false);
|
||||
@@ -63,6 +62,7 @@ pref("dom.security.sanitizer.enabled", true);
|
||||
* SECTION: SECUREFOX *
|
||||
****************************************************************************/
|
||||
/** TRACKING PROTECTION ***/
|
||||
pref("browser.contentblocking.category", "strict");
|
||||
pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
|
||||
pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
|
||||
pref("network.cookie.sameSite.noneRequiresSecure", true);
|
||||
|
@@ -13,9 +13,12 @@ pref("browser.tabs.hoverPreview.enabled", true);
|
||||
pref("browser.tabs.cardPreview.delayMs", 100);
|
||||
|
||||
#ifdef MOZ_UPDATE_CHANNEL
|
||||
pref("devtools.debugger.prompt-connection", false);
|
||||
pref("devtools.debugger.prompt-connection", true);
|
||||
#endif
|
||||
|
||||
// Dont download the multilingual dictionary
|
||||
pref("intl.multilingual.downloadEnabled", false);
|
||||
|
||||
// Theme
|
||||
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
||||
pref('browser.compactmode.show', true);
|
||||
@@ -56,6 +59,8 @@ pref("browser.ping-centre.telemetry", false);
|
||||
pref("browser.attribution.enabled", false);
|
||||
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
||||
|
||||
pref("app.update.checkInstallTime.days", 2);
|
||||
|
||||
// CUSTOM ZEN PREFS
|
||||
|
||||
pref('zen.welcomeScreen.enabled', true);
|
||||
@@ -68,14 +73,20 @@ pref('zen.theme.toolbar-themed', true);
|
||||
pref('zen.theme.pill-button', false);
|
||||
pref('zen.view.compact', false);
|
||||
pref('zen.view.compact.hide-toolbar', false);
|
||||
|
||||
pref('zen.view.sidebar-expanded', false);
|
||||
pref('zen.view.sidebar-expanded.on-hover', false);
|
||||
pref('zen.view.sidebar-expanded.show-button', true);
|
||||
pref('zen.view.sidebar-expanded.max-width', 400);
|
||||
|
||||
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
|
||||
|
||||
pref('zen.keyboard.shortcuts.enabled', true);
|
||||
pref('zen.keyboard.shortcuts', ""); // Empty string means default shortcuts
|
||||
pref('zen.keyboard.shortcuts.disable-firefox', false);
|
||||
pref('zen.tabs.dim-pending', true);
|
||||
pref('zen.themes.updated-value-observer', false);
|
||||
pref('zen.themes.tabs.legacy-location', false);
|
||||
|
||||
// Pref to enable the new profiles (TODO: Check this out!)
|
||||
//pref("browser.profiles.enabled", true);
|
||||
@@ -100,12 +111,12 @@ pref('general.smoothScroll', true); // DEFAULT
|
||||
|
||||
// Privacy
|
||||
pref('dom.private-attribution.submission.enabled', false);
|
||||
pref('dom.security.https_only_mode', true);
|
||||
|
||||
pref('media.eme.enabled', true);
|
||||
pref('webgl.disabled', false);
|
||||
|
||||
pref("app.update.url.manual", "https://www.zen-browser.app/download");
|
||||
pref("app.update.url.details", "hhttps://www.zen-browser.app/download");
|
||||
pref("app.update.url.details", "https://www.zen-browser.app/download");
|
||||
pref("app.releaseNotesURL", "https://www.zen-browser.app/release-notes");
|
||||
pref("app.releaseNotesURL.aboutDialog", "https://www.zen-browser.app/release-notes");
|
||||
|
||||
@@ -124,8 +135,26 @@ pref('xpinstall.signatures.required', false);
|
||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
||||
|
||||
// Extremly experimental features
|
||||
pref("dom.webgpu.enabled", true);
|
||||
// Font rendering, not for MacOSX and Linux
|
||||
#ifndef XP_UNIX
|
||||
#ifndef XP_MACOSX
|
||||
pref("gfx.font_rendering.directwrite.bold_simulation", 2);
|
||||
pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 25);
|
||||
pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", "");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Enable GPU by default
|
||||
pref('gfx.webrender.all', true);
|
||||
pref('layers.acceleration.force-enabled', true);
|
||||
pref('media.ffmpeg.vaapi.enabled', true);
|
||||
|
||||
#if defined(XP_WIN)
|
||||
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
|
||||
#endif
|
||||
|
||||
// Enable experimental settings page (Usef for Zen Labs)
|
||||
pref('browser.preferences.experimental', true);
|
||||
|
||||
#include better-fox.js
|
||||
|
||||
@@ -143,12 +172,17 @@ pref("network.http.speculative-parallel-limit", 10);
|
||||
pref("network.http.rcwn.enabled", false);
|
||||
|
||||
// Enable Browser Toolbox, Ctrl+Shift+Alt+I for debugging and modifying UI
|
||||
pref("devtools.debugger.remote-enabled", true);
|
||||
pref("devtools.debugger.remote-enabled", false);
|
||||
pref("devtools.chrome.enabled", true);
|
||||
|
||||
// Disable firefox's revamp
|
||||
pref("sidebar.revamp", false, locked);
|
||||
pref("sidebar.verticalTabs", false, locked);
|
||||
|
||||
// Better scrollbar for Windows
|
||||
// Better Windows theming
|
||||
pref("widget.non-native-theme.scrollbar.style", 2);
|
||||
pref("widget.non-native-theme.use-theme-accent", true);
|
||||
|
||||
// Expose Letterboxing https://github.com/zen-browser/desktop/issues/475
|
||||
pref("privacy.resistFingerprinting.letterboxing", false);
|
||||
pref("privacy.resistFingerprinting.letterboxing.dimensions", "");
|
||||
|
@@ -3,6 +3,9 @@ var ZenStartup = {
|
||||
init() {
|
||||
this._changeSidebarLocation();
|
||||
this._zenInitBrowserLayout();
|
||||
window.SessionStore.promiseInitialized.then(async () => {
|
||||
this._focusSearchBar();
|
||||
});
|
||||
},
|
||||
|
||||
_zenInitBrowserLayout() {
|
||||
@@ -77,11 +80,15 @@ var ZenStartup = {
|
||||
},
|
||||
|
||||
_changeSidebarLocation() {
|
||||
const legacyLocation = Services.prefs.getBoolPref("zen.themes.tabs.legacy-location", false);
|
||||
const kElementsToAppend = [
|
||||
"sidebar-splitter",
|
||||
"sidebar-box",
|
||||
"navigator-toolbox",
|
||||
];
|
||||
if (legacyLocation) {
|
||||
kElementsToAppend.push("navigator-toolbox");
|
||||
window.document.documentElement.setAttribute("zen-sidebar-legacy", "true");
|
||||
}
|
||||
const wrapper = document.getElementById("zen-tabbox-wrapper");
|
||||
const appWrapepr = document.getElementById("zen-sidebar-box-container");
|
||||
for (let id of kElementsToAppend) {
|
||||
@@ -92,14 +99,28 @@ var ZenStartup = {
|
||||
}
|
||||
appWrapepr.setAttribute("hidden", "true");
|
||||
|
||||
const browser = document.getElementById("browser")
|
||||
const toolbox = document.getElementById("navigator-toolbox");
|
||||
if (!legacyLocation) {
|
||||
browser.prepend(toolbox);
|
||||
}
|
||||
|
||||
// remove all styles except for the width, since we are xulstoring the complet style list
|
||||
const width = toolbox.style.width;
|
||||
toolbox.removeAttribute("style");
|
||||
toolbox.style.width = width;
|
||||
|
||||
// Set a splitter to navigator-toolbox
|
||||
const splitter = document.createXULElement("splitter");
|
||||
splitter.setAttribute("id", "zen-sidebar-splitter");
|
||||
splitter.setAttribute("orient", "horizontal");
|
||||
splitter.setAttribute("resizebefore", "sibling");
|
||||
splitter.setAttribute("resizeafter", "none");
|
||||
const titlebar = document.getElementById("navigator-toolbox");
|
||||
titlebar.insertAdjacentElement("afterend", splitter);
|
||||
toolbox.insertAdjacentElement("afterend", splitter);
|
||||
},
|
||||
|
||||
_focusSearchBar() {
|
||||
gURLBar.focus();
|
||||
},
|
||||
};
|
||||
|
||||
|
@@ -21,6 +21,10 @@ var gZenUIManager = {
|
||||
const button = document.getElementById('zen-bookmark-button');
|
||||
SidebarController.toggle('viewBookmarksSidebar', button);
|
||||
},
|
||||
|
||||
createValidXULText(text) {
|
||||
return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||
}
|
||||
};
|
||||
|
||||
var gZenVerticalTabsManager = {
|
||||
@@ -28,8 +32,20 @@ var gZenVerticalTabsManager = {
|
||||
//Services.prefs.addObserver('zen.view.compact', this._updateEvent.bind(this));
|
||||
Services.prefs.addObserver('zen.view.sidebar-expanded', this._updateEvent.bind(this));
|
||||
Services.prefs.addObserver('zen.view.sidebar-expanded.max-width', this._updateEvent.bind(this));
|
||||
Services.prefs.addObserver('zen.view.sidebar-expanded.on-hover', this._updateOnHoverVerticalTabs.bind(this));
|
||||
this._updateMaxWidth();
|
||||
this.initRightSideOrderContextMenu();
|
||||
this._updateOnHoverVerticalTabs();
|
||||
},
|
||||
|
||||
_updateOnHoverVerticalTabs() {
|
||||
let onHover = Services.prefs.getBoolPref('zen.view.sidebar-expanded.on-hover');
|
||||
let sidebar = document.getElementById('navigator-toolbox');
|
||||
if (onHover) {
|
||||
sidebar.setAttribute('zen-user-hover', 'true');
|
||||
} else {
|
||||
sidebar.removeAttribute('zen-user-hover');
|
||||
}
|
||||
},
|
||||
|
||||
initRightSideOrderContextMenu() {
|
||||
@@ -89,11 +105,13 @@ var gZenVerticalTabsManager = {
|
||||
toggleExpand() {
|
||||
let expanded = !this.expanded;
|
||||
Services.prefs.setBoolPref('zen.view.sidebar-expanded', expanded);
|
||||
Services.prefs.setBoolPref('zen.view.sidebar-expanded.on-hover', false);
|
||||
},
|
||||
};
|
||||
|
||||
var gZenCompactModeManager = {
|
||||
init() {
|
||||
Services.prefs.addObserver('zen.view.compact', this._updateEvent.bind(this));
|
||||
},
|
||||
|
||||
get prefefence() {
|
||||
@@ -104,6 +122,10 @@ var gZenCompactModeManager = {
|
||||
Services.prefs.setBoolPref('zen.view.compact', value);
|
||||
},
|
||||
|
||||
_updateEvent() {
|
||||
Services.prefs.setBoolPref('zen.view.sidebar-expanded.on-hover', false);
|
||||
},
|
||||
|
||||
toggle() {
|
||||
this.preference = !this.prefefence;
|
||||
},
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56edbd7405c 100644
|
||||
index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d945d53ac 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
@@ -20,27 +20,29 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56e
|
||||
<toolbartabstop/>
|
||||
<hbox id="TabsToolbar-customization-target" flex="1">
|
||||
<toolbarbutton id="firefox-view-button"
|
||||
+ hidden="true"
|
||||
+ hidden="true"
|
||||
class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||
data-l10n-id="toolbar-button-firefox-view-2"
|
||||
role="button"
|
||||
@@ -50,13 +51,14 @@
|
||||
@@ -50,7 +51,7 @@
|
||||
aria-multiselectable="true"
|
||||
setfocus="false"
|
||||
tooltip="tabbrowser-tab-tooltip"
|
||||
- orient="horizontal"
|
||||
+ orient="vertical"
|
||||
stopwatchid="FX_TAB_CLICK_MS">
|
||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
||||
# significantly, there is an optimization in
|
||||
# DisplayPortUtils::MaybeCreateDisplayPortInFirstScrollFrameEncountered based
|
||||
# the current structure that we may want to revisit.
|
||||
@@ -66,7 +67,7 @@
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||
</html:div>
|
||||
- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" style="min-width: 1px;" clicktoscroll="true" scrolledtostart="true" scrolledtoend="true">
|
||||
+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" style="min-width: 1px;" clicktoscroll="true" scrolledtostart="true" scrolledtoend="true">
|
||||
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
||||
<hbox id="tabbrowser-arrowscrollbox-periphery">
|
||||
<toolbartabstop/>
|
||||
@@ -103,9 +105,10 @@
|
||||
@@ -113,9 +114,10 @@
|
||||
<toolbarbutton id="content-analysis-indicator"
|
||||
oncommand="ContentAnalysis.showPanel(this, PanelUI);"
|
||||
class="toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
@@ -53,7 +55,7 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56e
|
||||
</toolbar>
|
||||
|
||||
</vbox>
|
||||
@@ -450,6 +453,7 @@
|
||||
@@ -471,6 +473,7 @@
|
||||
|
||||
<toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
|
||||
badged="true"
|
||||
@@ -61,12 +63,11 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56e
|
||||
delegatesanchor="true"
|
||||
onmousedown="gSync.toggleAccountPanel(this, event)"
|
||||
onkeypress="gSync.toggleAccountPanel(this, event)"
|
||||
@@ -501,6 +505,8 @@
|
||||
@@ -522,6 +525,7 @@
|
||||
consumeanchor="PanelUI-button"
|
||||
data-l10n-id="appmenu-menu-button-closed2"/>
|
||||
</toolbaritem>
|
||||
+
|
||||
+ #include titlebar-items.inc.xhtml
|
||||
+#include titlebar-items.inc.xhtml
|
||||
</toolbar>
|
||||
|
||||
<toolbar id="PersonalToolbar"
|
||||
|
@@ -15,6 +15,7 @@
|
||||
content/browser/zen-styles/zen-buttons.css (content/zen-styles/zen-buttons.css)
|
||||
content/browser/zen-styles/zen-tabs.css (content/zen-styles/zen-tabs.css)
|
||||
content/browser/zen-styles/zen-tabs/vertical-tabs.css (content/zen-styles/zen-tabs/vertical-tabs.css)
|
||||
content/browser/zen-styles/zen-tabs/horizontal-tabs.css (content/zen-styles/zen-tabs/horizontal-tabs.css)
|
||||
content/browser/zen-styles/zen-browser-ui.css (content/zen-styles/zen-browser-ui.css)
|
||||
content/browser/zen-styles/zen-animations.css (content/zen-styles/zen-animations.css)
|
||||
content/browser/zen-styles/zen-panel-ui.css (content/zen-styles/zen-panel-ui.css)
|
||||
|
@@ -1,4 +1,5 @@
|
||||
<link rel="localization" href="browser/zen-web-side-panels.ftl"/>
|
||||
<link rel="localization" href="browser/zen-workspaces.ftl"/>
|
||||
<link rel="localization" href="browser/zen-split-view.ftl"/>
|
||||
<link rel="localization" href="browser/zen-general.ftl"/>
|
||||
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
|
||||
|
@@ -78,7 +78,7 @@
|
||||
|
||||
<panel flip="slide" type="arrow" orient="vertical" id="PanelUI-zen-workspaces" position="bottomright topright" mainview="true" side="left">
|
||||
<panelmultiview id="PanelUI-zen-workspaces-multiview" mainViewId="PanelUI-zen-workspaces-view">
|
||||
<panelview lockpanelvertical="true" id="PanelUI-zen-workspaces-view" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<panelview id="PanelUI-zen-workspaces-view" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox>
|
||||
<hbox>
|
||||
<h3 data-l10n-id="zen-panel-ui-current-window-text"></h3>
|
||||
@@ -98,28 +98,31 @@
|
||||
</html:div>
|
||||
</vbox>
|
||||
</panelview>
|
||||
<panelview lockpanelvertical="true" id="PanelUI-zen-workspaces-create" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox>
|
||||
<h1 data-l10n-id="zen-panel-ui-workspaces-create-text"></h1>
|
||||
<html:input autofocus="true" id="PanelUI-zen-workspaces-create-input" type="text" placeholder="Enter workspace name" oninput="ZenWorkspaces.onWorkspaceNameChange(this);" />
|
||||
</vbox>
|
||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-create-footer">
|
||||
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-create-save" oncommand="ZenWorkspaces.saveWorkspaceFromInput();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
||||
</button>
|
||||
<button id="PanelUI-zen-workspaces-create-cancel" oncommand="ZenWorkspaces.cancelWorkspaceCreation();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
||||
</button>
|
||||
</html:moz-button-group>
|
||||
</panelview>
|
||||
<panelview lockpanelvertical="true" id="PanelUI-zen-workspaces-create-icons" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<panelview id="PanelUI-zen-workspaces-create" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox>
|
||||
<h1 data-l10n-id="zen-panel-ui-workspaces-create-text"></h1>
|
||||
<html:input autofocus="true" id="PanelUI-zen-workspaces-create-input" type="text" placeholder="Enter workspace name" oninput="ZenWorkspaces.onWorkspaceCreationNameChange(this);" />
|
||||
<hbox id="PanelUI-zen-workspaces-create-icons-container">
|
||||
</hbox>
|
||||
</vbox>
|
||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-create-footer">
|
||||
<button default="true" slot="primary" id="PanelUI-zen-workspaces-create-save-icons" oncommand="ZenWorkspaces.saveWorkspaceFromIcon();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
||||
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-create-save" oncommand="ZenWorkspaces.saveWorkspaceFromCreate();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
||||
</button>
|
||||
<button id="PanelUI-zen-workspaces-create-cancel-icons" oncommand="ZenWorkspaces.cancelWorkspaceCreation();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
||||
<button id="PanelUI-zen-workspaces-create-cancel" oncommand="ZenWorkspaces.closeWorkspacesSubView();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
||||
</button>
|
||||
</html:moz-button-group>
|
||||
</panelview>
|
||||
<panelview id="PanelUI-zen-workspaces-edit" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox>
|
||||
<h1 data-l10n-id="zen-panel-ui-workspaces-edit-text"></h1>
|
||||
<html:input autofocus="true" id="PanelUI-zen-workspaces-edit-input" type="text" placeholder="Enter workspace name" oninput="ZenWorkspaces.onWorkspaceEditChange();" />
|
||||
<hbox id="PanelUI-zen-workspaces-edit-icons-container">
|
||||
</hbox>
|
||||
</vbox>
|
||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-edit-footer">
|
||||
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-edit-save" oncommand="ZenWorkspaces.saveWorkspaceFromEdit();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-edit-save">
|
||||
</button>
|
||||
<button id="PanelUI-zen-workspaces-edit-cancel" oncommand="ZenWorkspaces.closeWorkspacesSubView();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-edit-cancel">
|
||||
</button>
|
||||
</html:moz-button-group>
|
||||
</panelview>
|
||||
@@ -129,5 +132,9 @@
|
||||
<menupopup id="zenWorkspaceActionsMenu"
|
||||
onpopupshowing="ZenWorkspaces.updateContextMenu(this);"
|
||||
onpopuphidden="ZenWorkspaces.onContextMenuClose();">
|
||||
<menuitem id="context_zenDeleteWorkspace" oncommand="ZenWorkspaces.contextDelete();" data-l10n-id="zen-workspaces-panel-context-delete"/>
|
||||
<menuitem id="context_zenOpenWorkspace" oncommand="ZenWorkspaces.openWorkspace();" data-l10n-id="zen-workspaces-panel-context-open"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenSetAsDefaultWorkspace" oncommand="ZenWorkspaces.setDefaultWorkspace();" data-l10n-id="zen-workspaces-panel-context-set-default"/>
|
||||
<menuitem id="context_zenEditWorkspace" oncommand="ZenWorkspaces.contextEdit(event);" data-l10n-id="zen-workspaces-panel-context-edit"/>
|
||||
<menuitem id="context_zenDeleteWorkspace" oncommand="ZenWorkspaces.contextDelete(event);" data-l10n-id="zen-workspaces-panel-context-delete"/>
|
||||
</menupopup>
|
@@ -1,7 +1,5 @@
|
||||
<toolbar id="zen-sidebar-icons-wrapper">
|
||||
<toolbar brighttext="true" id="zen-sidebar-icons-wrapper" class="zen-dont-hide-on-fullscreen">
|
||||
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button chromeclass-toolbar-additional subviewbutton-nav" badge="true" closemenu="none" removable="true" delegatesanchor="true" cui-areatype="toolbar" id="zen-profile-button" data-l10n-id="toolbar-button-account" onclick="ZenProfileDialogUI.showSubView(this, event)">
|
||||
<html:div class="zen-side-bar-profiles-button-panel-correction"></html:div>
|
||||
<html:div></html:div>
|
||||
</toolbarbutton>
|
||||
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" data-l10n-id="sidebar-zen-expand" oncommand="gZenVerticalTabsManager.toggleExpand();"></toolbarbutton>
|
||||
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button" id="zen-sidepanel-button" data-l10n-id="sidebar-zen-sidepanel" onclick="gZenBrowserManagerSidebar.toggle();"></toolbarbutton>
|
||||
|
@@ -20,8 +20,8 @@
|
||||
<html:p data-l10n-id="zen-sidebar-introduction-description"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-wrapper">
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-sites">
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-wrapper" class="zen-dont-hide-on-fullscreen">
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-sites" class="zen-dont-hide-on-fullscreen">
|
||||
|
||||
</toolbar>
|
||||
<toolbarbutton id="zen-sidebar-add-panel-button" class="zen-sidebar-panel-button toolbarbutton-1 chromeclass-toolbar-additional" onclick="gZenBrowserManagerSidebar._openAddPanelDialog();"/>
|
||||
|
@@ -83,7 +83,19 @@
|
||||
@keyframes zen-sidebar-panel-animation-2 {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateX(-50px);
|
||||
transform: translateX(-5px);
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateX(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes zen-sidebar-panel-animation-right {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
100% {
|
||||
|
@@ -4,9 +4,12 @@
|
||||
width: -moz-available;
|
||||
margin: 0 var(--zen-element-separation) var(--zen-element-separation) 0;
|
||||
box-shadow: 0 0 0 1px var(--zen-colors-border);
|
||||
clip-path: inset(-5px -5px -5px round var(--zen-border-radius));
|
||||
border-radius: var(--zen-border-radius);
|
||||
clip-path: inset(-5px -5px -5px round var(--zen-webview-border-radius, var(--zen-border-radius)));
|
||||
border-radius: var(--zen-webview-border-radius, var(--zen-border-radius));
|
||||
transform: translate3d(0, 0, 0);
|
||||
overflow: hidden;
|
||||
|
||||
/* This fixes an issue with the left border */
|
||||
margin-left: 2px;
|
||||
}
|
||||
}
|
||||
|
@@ -1,11 +1,15 @@
|
||||
|
||||
#navigator-toolbox,
|
||||
|
||||
#browser,
|
||||
#appcontent,
|
||||
#tabbrowser-tabpanels {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
#navigator-toolbox {
|
||||
/* see issue #426 */
|
||||
background: var(--zen-navigator-toolbox-background, transparent) !important;
|
||||
}
|
||||
|
||||
#browser {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -21,12 +25,14 @@ html#main-window > body {
|
||||
:not([inDOMFullscreen="true"]) #appcontent,
|
||||
#sidebar-box {
|
||||
/** Sidebar is already hidden in full screen mode */
|
||||
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#zen-main-app-wrapper {
|
||||
background: var(--zen-main-browser-background);
|
||||
|
||||
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
}
|
||||
|
||||
#tabbrowser-tabbox {
|
||||
|
@@ -12,26 +12,34 @@
|
||||
#navigator-toolbox[inFullscreen]{ margin-top: 0 !important; }
|
||||
|
||||
#navigator-toolbox {
|
||||
--zen-compact-toolbox-margin-single: 15px;
|
||||
--zen-compact-toolbox-margin-single: calc(var(--zen-element-separation) * 2);
|
||||
--zen-compact-toolbox-margin: var(--zen-compact-toolbox-margin-single);
|
||||
position: absolute;
|
||||
display: block;
|
||||
transition: 200ms ease-in-out !important;
|
||||
transform: translateX(calc(-100% + var(--zen-compact-toolbox-margin-single) + 2px));
|
||||
transform: translateX(calc(-100% + (var(--zen-compact-toolbox-margin-single) / 2)));
|
||||
opacity: 0;
|
||||
line-height: 0;
|
||||
z-index: 1;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: var(--zen-compact-toolbox-margin);
|
||||
padding-top: calc(var(--zen-compact-toolbox-margin-single) - var(--zen-element-separation));
|
||||
padding: var(--zen-compact-toolbox-margin) !important;
|
||||
|
||||
& #titlebar {
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
transition-delay: 200ms;
|
||||
background: var(--zen-colors-tertiary) !important;
|
||||
padding: 0 5px;
|
||||
border-radius: var(--zen-panel-radius);
|
||||
}
|
||||
|
||||
& > * {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&, & #titlebar {
|
||||
min-width: calc(var(--zen-navigation-toolbar-min-width) + var(--zen-compact-toolbox-margin-single) * 4) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
@@ -64,7 +72,18 @@
|
||||
@media not (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
|
||||
#navigator-toolbox {
|
||||
/* Remove the top margin */
|
||||
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) / 3) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
|
||||
/* The toolbox isn't relative to the webview anymore, meaning we can't just add a static value and call it a day...
|
||||
* The top margin is calculated by taking the following factors into account:
|
||||
* 1. Element separation
|
||||
* 2. Extra margin to separate from the webview
|
||||
* 3. Add element separation variable, to avoid overlaping with the toolbar
|
||||
* 4. Calculate toolbar height, taken from zen-urlbar.css
|
||||
*/
|
||||
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) + .15rem + var(--zen-element-separation) + (18px + (var(--toolbarbutton-inner-padding) * 2))) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
|
||||
|
||||
:root[zen-sidebar-legacy="true"] & {
|
||||
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) / 2) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
|
||||
}
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel-wrapper,
|
||||
@@ -76,14 +95,19 @@
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox:focus-within,
|
||||
#navigator-toolbox[zen-user-show],
|
||||
#navigator-toolbox[movingtab],
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||
transition-delay: 33ms !important;
|
||||
transform: none !important;
|
||||
opacity: 1;
|
||||
|
||||
& > * {
|
||||
pointer-events: all;
|
||||
}
|
||||
}
|
||||
|
||||
#navigator-toolbox > *{ line-height: normal; pointer-events: auto }
|
||||
#navigator-toolbox > *{ line-height: normal; }
|
||||
|
||||
#navigator-toolbox,
|
||||
#navigator-toolbox > *{
|
||||
@@ -111,14 +135,10 @@
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
|
||||
#navigator-toolbox {
|
||||
padding-top: var(--zen-compact-toolbox-margin);
|
||||
}
|
||||
|
||||
#zen-appcontent-navbar-container {
|
||||
--urlbar-height: unset;
|
||||
transition: .2s ease-in-out;
|
||||
transform: translateY(calc(-100% + 5px));
|
||||
transform: translateY(calc(-100% + var(--zen-element-separation)));
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
@@ -152,4 +172,26 @@
|
||||
margin-top: 10px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
||||
#navigator-toolbox {
|
||||
right: 0 !important;
|
||||
transform: translateX(calc(100% - (var(--zen-compact-toolbox-margin-single) / 2))) !important;;
|
||||
}
|
||||
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox:focus-within,
|
||||
#navigator-toolbox[zen-user-show],
|
||||
#navigator-toolbox[movingtab],
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||
transform: none !important;
|
||||
opacity: 1;
|
||||
|
||||
& > * {
|
||||
pointer-events: all;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -283,4 +283,3 @@ menu, menuitem {
|
||||
color: var(--button-hover-color);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -40,7 +40,7 @@
|
||||
background: transparent !important;
|
||||
border-color: transparent !important;
|
||||
width: 1px !important;
|
||||
margin-right: 5px !important;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#sidebar-box[positionend] {
|
||||
@@ -48,6 +48,7 @@
|
||||
}
|
||||
|
||||
.zen-sidebar-action-button {
|
||||
--toolbarbutton-active-background: var(--zen-colors-secondary);
|
||||
width: var(--zen-sidebar-action-button-width);
|
||||
height: var(--zen-sidebar-action-button-width);
|
||||
padding: 0;
|
||||
@@ -73,10 +74,7 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
#TabsToolbar .toolbarbutton-1:hover > :is(.toolbarbutton-icon, .toolbarbutton-badge-stack),
|
||||
#TabsToolbar .toolbarbutton-1[open="true"] > :is(.toolbarbutton-icon, .toolbarbutton-badge-stack),
|
||||
.zen-sidebar-action-button:hover,
|
||||
.zen-sidebar-action-button[open="true"] {
|
||||
.zen-sidebar-action-button:hover {
|
||||
background: var(--toolbarbutton-hover-background) !important;
|
||||
}
|
||||
|
||||
@@ -84,10 +82,6 @@
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.zen-sidebar-action-button label {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#sidebar-box[hidden="true"] .zen-sidebar-action-button,
|
||||
.zen-sidebar-panel-button[animate] {
|
||||
opacity: 0;
|
||||
@@ -123,10 +117,11 @@
|
||||
#zen-profile-button {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#zen-profile-button > div:last-child {
|
||||
#zen-profile-button::before {
|
||||
background-image: var(--avatar-image-url);
|
||||
border-radius: 50%;
|
||||
background-size: cover;
|
||||
@@ -134,6 +129,11 @@
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border: 2px solid var(--zen-colors-border);
|
||||
content: '';
|
||||
top: 50%;
|
||||
left: var(--toolbar-start-end-padding);
|
||||
transform: translateY(-50%);
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* Ugly code */
|
||||
@@ -149,12 +149,6 @@
|
||||
#TabsToolbar .zen-sidebar-action-button:nth-child(9), .zen-sidebar-panel-button:nth-child(9) { animation-delay: 0.9s; }
|
||||
#TabsToolbar .zen-sidebar-action-button:nth-child(10), .zen-sidebar-panel-button:nth-child(10) { animation-delay: 1s; }
|
||||
|
||||
#TabsToolbar .zen-side-bar-profiles-button-panel-correction {
|
||||
position: absolute;
|
||||
bottom: -2px;
|
||||
right: -2px;
|
||||
}
|
||||
|
||||
#zen-sidebar-icons-wrapper toolbarbutton {
|
||||
position: relative;
|
||||
}
|
||||
@@ -171,6 +165,7 @@
|
||||
--zen-sidebar-action-content-separator: calc(10px + var(--zen-tabbrowser-padding));
|
||||
padding-top: var(--zen-sidebar-action-content-separator);
|
||||
margin-top: var(--zen-sidebar-action-content-separator);
|
||||
color-scheme: inherit !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-icons-wrapper::before {
|
||||
@@ -215,7 +210,7 @@
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded.show-button") {
|
||||
#zen-expand-sidebar-button {
|
||||
display: block;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
|
||||
/* Styles for both vertical and horizontal tabs */
|
||||
/*@import url("chrome://browser/content/zen-styles/zen-tabs/horizontal-tabs.css");*/
|
||||
@import url("chrome://browser/content/zen-styles/zen-tabs/horizontal-tabs.css");
|
||||
@import url("chrome://browser/content/zen-styles/zen-tabs/vertical-tabs.css");
|
||||
|
||||
#zen-tabbox-wrapper {
|
||||
|
@@ -0,0 +1,3 @@
|
||||
@media not (-moz-bool-pref: "zen.tabs.vertical") {
|
||||
|
||||
}
|
@@ -3,13 +3,57 @@
|
||||
#titlebar {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container {
|
||||
padding-inline-end: 0 !important;
|
||||
}
|
||||
|
||||
#tabs-newtab-button {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#newtab-button-container {
|
||||
margin-inline-end: 0 !important;
|
||||
margin-top: 0;
|
||||
margin-bottom: calc(var(--space-small) / 2);
|
||||
position: relative;
|
||||
padding-top: 0 !important;
|
||||
|
||||
--zen-sidebar-action-button-width: 35px;
|
||||
|
||||
& #vertical-tabs-newtab-button {
|
||||
background: var(--button-hover-bgcolor);
|
||||
}
|
||||
|
||||
&[showborder] {
|
||||
margin-top: var(--space-small);
|
||||
border-top: 0px solid transparent !important;
|
||||
padding-top: var(--space-small) !important;
|
||||
|
||||
&::before {
|
||||
width: 70%;
|
||||
height: 1.2px;
|
||||
background: var(--zen-colors-border);
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -3px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#navigator-toolbox {
|
||||
--zen-tabbrowser-padding: 5px;
|
||||
margin-top: 0; /* Issue #156 */
|
||||
order: 0 !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
order: 0 !important;
|
||||
}
|
||||
|
||||
:root[inFullscreen="true"] #navigator-toolbox {
|
||||
#navigator-toolbox {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
@@ -31,6 +75,7 @@
|
||||
|
||||
#TabsToolbar-customization-target {
|
||||
flex-direction: column;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
:root[customizing] .customization-target:not(#widget-overflow-fixed-list) {
|
||||
@@ -158,23 +203,6 @@
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#tabbrowser-tabs:has(.tabbrowser-tab[pinned]) .tabbrowser-tab:nth-child(1 of [fadein]:not([pinned]):not([hidden])) {
|
||||
margin-top: 15px;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
|
||||
& .tab-stack::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -11px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 1.5px;
|
||||
border-radius: 1px;
|
||||
background: var(--zen-colors-border);
|
||||
}
|
||||
}
|
||||
|
||||
.tab-close-button {
|
||||
position: absolute;
|
||||
display: none;
|
||||
@@ -220,10 +248,12 @@
|
||||
|
||||
padding-inline-start: 0 !important;
|
||||
margin-inline-start: 0 !important;
|
||||
|
||||
grid-gap: 0 !important;
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox {
|
||||
margin: 3px 0;
|
||||
margin-bottom: 3px !important;
|
||||
}
|
||||
|
||||
#alltabs-button stack {
|
||||
@@ -231,152 +261,301 @@
|
||||
}
|
||||
|
||||
.tab-icon-overlay {
|
||||
margin-inline-end: 0;
|
||||
margin-inline-end: 0 !important;
|
||||
display: none; /* TODO: fix this */
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-collapsed.hide-mute-button") and (not (-moz-bool-pref: "zen.view.sidebar-expanded")) {
|
||||
.tab-icon-overlay:is([soundplaying], [muted]):not([selected]) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded.on-hover") {
|
||||
:root:not([zen-sidebar-legacy="true"]) #navigator-toolbox:is([zen-user-hover="true"]:hover, :not([zen-user-hover="true"])) {
|
||||
padding-right: 47px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#navigator-toolbox:is(
|
||||
#navigator-toolbox[zen-user-hover="true"]:hover,
|
||||
#navigator-toolbox[zen-user-hover="true"]:focus-within,
|
||||
#mainPopupSet[zen-user-hover="true"]:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#navigator-toolbox[zen-user-hover="true"]:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)),
|
||||
:not([zen-user-hover="true"])) {
|
||||
--zen-hover-animation: zen-sidebar-panel-animation-2;
|
||||
--zen-navigation-toolbar-min-width: 155px;
|
||||
min-width: var(--zen-navigation-toolbar-min-width) !important;
|
||||
align-items: start;
|
||||
transition: .2s;
|
||||
width: 170px;
|
||||
border: none;
|
||||
padding-left: 2px;
|
||||
animation: var(--zen-hover-animation) 0.3s backwards;
|
||||
|
||||
#vertical-pinned-tabs-container {
|
||||
margin-left: var(--zen-tabbrowser-padding);
|
||||
}
|
||||
|
||||
#newtab-button-container {
|
||||
margin: var(--zen-tabbrowser-padding);
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
|
||||
&[showborder] {
|
||||
margin-top: var(--zen-tabbrowser-padding);
|
||||
&::before {
|
||||
width: 95%;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& .tab-label-container {
|
||||
display: block;
|
||||
}
|
||||
|
||||
& #titlebar,
|
||||
& #TabsToolbar,
|
||||
& #TabsToolbar .toolbar-items {
|
||||
width: 100%;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
& #TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) {
|
||||
width: 100% !important;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
& #TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button):hover {
|
||||
background: var(--button-hover-bgcolor);
|
||||
}
|
||||
|
||||
& #TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-text,
|
||||
& #TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-icon,
|
||||
& #TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-badge-stack {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
& #tabbrowser-arrowscrollbox-periphery > toolbarbutton {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
& .tabbrowser-tab {
|
||||
max-width: unset !important;
|
||||
|
||||
&:not([pinned]) {
|
||||
width: 100%;
|
||||
|
||||
&:hover .tab-close-button {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
& .tab-content {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
& .tab-stack {
|
||||
justify-content: start;
|
||||
padding: 10px;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
& .tab-label-container {
|
||||
|
||||
#tabbrowser-tabs:not([secondarytext-unsupported]) & {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:active,
|
||||
.zen-sidebar-panel-button:active {
|
||||
transform: scale(0.96) !important;
|
||||
}
|
||||
|
||||
&[pinned] {
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
& #tabbrowser-arrowscrollbox::part(scrollbox) {
|
||||
/* We have the pinned tabs on the top, next to each other,
|
||||
* and the rest of the tabs are below them. */
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(var(--tab-min-height), 1fr));
|
||||
padding: calc(var(--zen-tabbrowser-padding) / 2);
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
& .tabbrowser-tab:not([pinned]),
|
||||
& #tabbrowser-arrowscrollbox-periphery {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
& .tabbrowser-tab[pinned] {
|
||||
grid-column: span 1;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
& #zen-sidebar-icons-wrapper {
|
||||
width: -moz-available;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(37px, 1fr));
|
||||
transition: .1s;
|
||||
}
|
||||
|
||||
& #zen-sidebar-icons-wrapper::before {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#navigator-toolbox {
|
||||
width: fit-content !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#navigator-toolbox {
|
||||
--zen-navigation-toolbar-min-width: 155px;
|
||||
min-width: var(--zen-navigation-toolbar-min-width) !important;
|
||||
align-items: start;
|
||||
transition: .2s;
|
||||
width: 170px;
|
||||
border: none;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.tab-label-container {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#titlebar,
|
||||
#TabsToolbar,
|
||||
#TabsToolbar .toolbar-items {
|
||||
width: 100%;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) {
|
||||
width: 100% !important;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button):hover {
|
||||
background: var(--button-hover-bgcolor);
|
||||
}
|
||||
|
||||
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-text,
|
||||
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-icon,
|
||||
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-badge-stack {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox-periphery > toolbarbutton {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.tabbrowser-tab {
|
||||
max-width: unset !important;
|
||||
|
||||
&:not([pinned]) {
|
||||
width: 100%;
|
||||
|
||||
&:hover .tab-close-button {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
& .tab-content {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
& .tab-stack {
|
||||
justify-content: start;
|
||||
padding: 10px;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
& .tab-label-container {
|
||||
|
||||
#tabbrowser-tabs:not([secondarytext-unsupported]) & {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:active,
|
||||
.zen-sidebar-panel-button:active {
|
||||
transform: scale(0.96) !important;
|
||||
}
|
||||
|
||||
&[pinned] {
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
#tabbrowser-arrowscrollbox::part(scrollbox) {
|
||||
/* We have the pinned tabs on the top, next to each other,
|
||||
* and the rest of the tabs are below them. */
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(var(--tab-min-height), 1fr));
|
||||
padding: calc(var(--zen-tabbrowser-padding) / 2);
|
||||
}
|
||||
|
||||
.tabbrowser-tab:not([pinned]),
|
||||
#tabbrowser-arrowscrollbox-periphery {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[pinned] {
|
||||
grid-column: span 1;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
#zen-sidebar-icons-wrapper {
|
||||
width: -moz-available;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(37px, 1fr));
|
||||
transition: .1s;
|
||||
}
|
||||
|
||||
#zen-sidebar-icons-wrapper::before {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
#navigator-toolbox[zen-user-hover="true"] {
|
||||
width: fit-content !important;
|
||||
}
|
||||
|
||||
/* Display the vertical tabs on the right side */
|
||||
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") and (not (-moz-bool-pref: "zen.view.compact")) {
|
||||
#navigator-toolbox {
|
||||
order: 4;
|
||||
padding-left: 0;
|
||||
order: 8 !important;
|
||||
padding-left: 0 !important;
|
||||
--zen-hover-animation: zen-sidebar-panel-animation-right !important;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#navigator-toolbox {
|
||||
padding-right: 3px !important;
|
||||
}
|
||||
:root:not([zen-sidebar-legacy="true"]) {
|
||||
padding: calc(var(--zen-tabbrowser-padding) * 1.5);
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
order: 3;
|
||||
}
|
||||
|
||||
#tabbrowser-tabbox {
|
||||
padding-left: 10px;
|
||||
order: 7 !important;
|
||||
}
|
||||
|
||||
#tabbrowser-tabpanels .browserSidebarContainer {
|
||||
margin-left: var(--zen-element-separation) !important;
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded.on-hover") and (not (-moz-bool-pref: "zen.view.compact")) {
|
||||
#zen-sidebar-splitter {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#navigator-toolbox {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#navigator-toolbox, #titlebar, #TabsToolbar {
|
||||
transition: 0s !important;
|
||||
}
|
||||
|
||||
#TabsToolbar {
|
||||
--hovered-verticaltab-width: 20em;
|
||||
|
||||
z-index: 1;
|
||||
background-repeat: no-repeat !important;
|
||||
background-position: center center !important;
|
||||
background-size: cover !important;
|
||||
|
||||
border-top: 1px solid transparent;
|
||||
border-right: 1px solid transparent;
|
||||
|
||||
height: 100%;
|
||||
|
||||
border-top-right-radius: var(--zen-border-radius);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox:focus-within,
|
||||
#navigator-toolbox[movingtab],
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||
--zen-navigation-toolbar-min-width: 3.3rem !important;
|
||||
|
||||
& #TabsToolbar {
|
||||
z-index: 100 !important;
|
||||
width: 250px !important;
|
||||
background-color: var(--zen-dialog-background);
|
||||
border-top-color: var(--zen-colors-border);
|
||||
border-right-color: var(--zen-colors-border);
|
||||
padding-right: .1rem !important;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#navigator-toolbox:not(&) #TabsToolbar #tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab .tab-content[class] > .tab-close-button[class] {
|
||||
display: none !important;
|
||||
visibility: hidden !important;
|
||||
}
|
||||
|
||||
& #tabbrowser-tabs {
|
||||
--zen-tabbrowser-tabs-on-hover-padding: var(--zen-tabbrowser-padding);
|
||||
padding: var(--zen-tabbrowser-tabs-on-hover-padding) !important;
|
||||
}
|
||||
|
||||
& #zen-sidebar-icons-wrapper {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
& .zen-sidebar-action-button {
|
||||
width: 100%;
|
||||
|
||||
& > * {
|
||||
--toolbarbutton-active-background: transparent;
|
||||
}
|
||||
|
||||
& label {
|
||||
--toolbarbutton-hover-background: transparent;
|
||||
display: block !important;
|
||||
text-align: start;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
||||
#TabsToolbar {
|
||||
border-right: 0 !important;
|
||||
border-left: 1px solid transparent;
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: var(--zen-border-radius);
|
||||
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox:focus-within,
|
||||
#navigator-toolbox[movingtab],
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||
--zen-navigation-toolbar-min-width: 0 !important;
|
||||
position: relative;
|
||||
padding: 0 !important;
|
||||
|
||||
& #TabsToolbar {
|
||||
border-left: 1px solid var(--zen-colors-border);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
||||
#tabbrowser-tabs {
|
||||
--zen-tabbrowser-tabs-on-hover-padding: 0 var(--zen-tabbrowser-padding) 0 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@
|
||||
--zen-colors-input-bg: color-mix(in srgb, var(--zen-primary-color) 10%, white 80%);
|
||||
|
||||
--zen-dialog-background: var(--zen-colors-tertiary);
|
||||
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, #f1f1f1 92%);
|
||||
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, #f7f7f7 92%);
|
||||
|
||||
--zen-secondary-btn-color: var(--zen-colors-primary-foreground);
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77));
|
||||
|
||||
/* Constants */
|
||||
--zen-element-separation: .5rem;
|
||||
--zen-element-separation: .6rem;
|
||||
|
||||
/* XUL */
|
||||
--zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b);
|
||||
@@ -111,29 +111,29 @@
|
||||
--input-border-color: var(--zen-input-border-color) !important;
|
||||
--zen-themed-toolbar-bg: var(--zen-colors-tertiary);
|
||||
|
||||
--toolbar-field-background-color: var(--zen-colors-input-bg);
|
||||
--toolbar-field-background-color: var(--zen-colors-input-bg) !important;
|
||||
--arrowpanel-background: var(--zen-dialog-background) !important;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:host(:is(.anonymous-content-host, notification-message)),
|
||||
:root {
|
||||
--zen-in-content-dialog-background: rgb(28, 28, 32);
|
||||
|
||||
--zen-colors-primary: color-mix(in srgb, var(--zen-primary-color) 50%, black 50%);
|
||||
--zen-colors-secondary: color-mix(in srgb, var(--zen-primary-color) 40%, black 60%);
|
||||
--zen-colors-tertiary: color-mix(in srgb, var(--zen-primary-color) 15%, black 85%);
|
||||
--zen-in-content-dialog-background: rgb(23, 23, 23);
|
||||
--zen-dark-color-mix-base: #171717;
|
||||
--zen-colors-primary: color-mix(in srgb, var(--zen-primary-color) 20%, var(--zen-dark-color-mix-base) 80%);
|
||||
--zen-colors-secondary: color-mix(in srgb, var(--zen-primary-color) 30%, var(--zen-dark-color-mix-base) 70%);
|
||||
--zen-colors-tertiary: color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-dark-color-mix-base) 99%);
|
||||
|
||||
--zen-colors-hover-bg: color-mix(in srgb, var(--zen-primary-color) 90%, black 10%);
|
||||
--zen-colors-hover-bg: color-mix(in srgb, var(--zen-primary-color) 90%, var(--zen-dark-color-mix-base) 10%);
|
||||
--zen-colors-primary-foreground: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%);
|
||||
|
||||
--zen-colors-input-bg: color-mix(in srgb, var(--zen-primary-color) 10%, black 80%);
|
||||
--zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 80%, black 20%);
|
||||
--zen-colors-input-bg: color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-dark-color-mix-base) 99%);
|
||||
--zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 20%, rgb(43, 43, 43) 80%);
|
||||
|
||||
--zen-dialog-background: color-mix(in srgb, var(--zen-primary-color) 10%, black 90%);
|
||||
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, black 92%);
|
||||
--zen-dialog-background: var(--zen-dark-color-mix-base);
|
||||
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 4%, rgb(24, 24, 24) 96%);
|
||||
|
||||
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, black 70%);
|
||||
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, var(--zen-dark-color-mix-base) 70%);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,21 +1,20 @@
|
||||
/* URL and tool bars */
|
||||
|
||||
#urlbar {
|
||||
--toolbarbutton-border-radius: 999px;
|
||||
border: transparent;
|
||||
--toolbarbutton-border-radius: 6px;
|
||||
--urlbarView-separator-color: var(--zen-colors-border);
|
||||
--urlbarView-hover-background: var(--toolbarbutton-hover-background);
|
||||
--urlbarView-highlight-background: var(--toolbarbutton-hover-background);
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
border-radius: 999px;
|
||||
overflow: hidden;
|
||||
padding: 1px;
|
||||
border-radius: var(--toolbarbutton-border-radius);
|
||||
}
|
||||
|
||||
#urlbar[focused="true"][breakout-extend="true"] {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#urlbar {
|
||||
border: 1px solid light-dark(rgba(0,0,0,.2), rgba(255,255,255,.2))
|
||||
}
|
||||
|
||||
#searchbar:focus-within {
|
||||
border-color: transparent !important;
|
||||
}
|
||||
@@ -28,6 +27,8 @@
|
||||
background: var(--zen-dialog-background) !important;
|
||||
}
|
||||
|
||||
#urlbar-background { border: transparent !important; }
|
||||
|
||||
#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background,
|
||||
#searchbar:focus-within {
|
||||
outline: none !important;
|
||||
@@ -37,16 +38,29 @@
|
||||
|
||||
#urlbar .urlbar-page-action,
|
||||
#urlbar #tracking-protection-icon-container,
|
||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI) #identity-icon-box {
|
||||
#urlbar:not([breakout-extend="true"]) #identity-box:is(:not(.chromeUI), [pageproxystate="invalid"]) #identity-icon-box {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
#urlbar[breakout-extend="true"] {
|
||||
--toolbarbutton-border-radius: 6px;
|
||||
#urlbar[breakout-extend="true"] .urlbar-page-action,
|
||||
#urlbar[breakout-extend="true"] #tracking-protection-icon-container,
|
||||
#urlbar[breakout-extend="true"] #identity-box #identity-icon-box,
|
||||
.searchbar-engine-one-off-item {
|
||||
border-radius: var(--toolbarbutton-border-radius) !important;
|
||||
}
|
||||
|
||||
#identity-icon-box {
|
||||
#urlbar[breakout-extend="true"] {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
#identity-icon-box,
|
||||
#identity-permission-box {
|
||||
background: var(--zen-colors-secondary) !important;
|
||||
margin: 0 8px 0 0 !important;
|
||||
}
|
||||
|
||||
#identity-permission-box {
|
||||
background: var(--zen-colors-border) !important;
|
||||
}
|
||||
|
||||
#urlbar:is([focused], [open]) > #urlbar-background, #searchbar:focus-within {
|
||||
@@ -54,64 +68,54 @@
|
||||
}
|
||||
|
||||
#identity-icon-label {
|
||||
padding-inline-start: 8px !important;
|
||||
padding-inline-start: 8px !important;
|
||||
}
|
||||
|
||||
#urlbar #identity-box.chromeUI #identity-icon-box {
|
||||
border-radius: 5px !important;
|
||||
#identity-box.chromeUI:not([pageproxystate="invalid"]) #identity-icon-box {
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
|
||||
#urlbar:not([breakout-extend="true"]) #identity-box.chromeUI #identity-icon-box {
|
||||
#urlbar:not([breakout-extend="true"]) #identity-box.chromeUI:not([pageproxystate="invalid"]) #identity-icon-box {
|
||||
border-radius: 20px 10px 10px 20px !important;
|
||||
}
|
||||
|
||||
#urlbar .urlbar-page-action,
|
||||
#urlbar #identity-box #identity-icon-box,
|
||||
#urlbar #tracking-protection-icon-container {
|
||||
margin: 0 1px;
|
||||
}
|
||||
#urlbar:not([extend="true"]) #identity-box #identity-icon-box { position: relative; }
|
||||
|
||||
#urlbar:not([extend="true"]) #identity-box #identity-icon-box { position: relative;}
|
||||
|
||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI):not(.localResource) #identity-icon-box {
|
||||
#urlbar:not([extend="true"]) #identity-box:is(:not(.chromeUI), [pageproxystate="invalid"]) #identity-icon-box {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI):not(.localResource) {
|
||||
#urlbar:not([extend="true"]) #identity-box:is(:not(.chromeUI), [pageproxystate="invalid"]) {
|
||||
margin-inline-end: 0 !important;
|
||||
}
|
||||
|
||||
.urlbar-page-action {
|
||||
width: calc(var(--urlbar-min-height) - 5px - 2 * var(--urlbar-container-padding)) !important;
|
||||
height: calc(var(--urlbar-min-height) - 5px - 2 * var(--urlbar-container-padding)) !important;
|
||||
.urlbar-page-action,
|
||||
#tracking-protection-icon-container {
|
||||
width: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||
height: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||
padding: 0 !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
margin: 0 0 0 2px !important;
|
||||
}
|
||||
|
||||
toolbar .toolbarbutton-1:not(.unified-extensions-item-action-button) {
|
||||
& > .toolbarbutton-icon,
|
||||
& > .toolbarbutton-badge-stack {
|
||||
width: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
|
||||
height: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
|
||||
}
|
||||
}
|
||||
|
||||
toolbar .zen-sidebar-panel-button {
|
||||
& > .toolbarbutton-icon,
|
||||
& > .toolbarbutton-badge-stack {
|
||||
width: calc(2 * var(--toolbarbutton-inner-padding) + 20px) !important;
|
||||
height: calc(2 * var(--toolbarbutton-inner-padding) + 20px) !important;
|
||||
}
|
||||
#urlbar[breakout-extend="true"] .urlbar-page-action,
|
||||
#urlbar[breakout-extend="true"] #tracking-protection-icon-container {
|
||||
width: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||
height: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||
}
|
||||
|
||||
#identity-permission-box {
|
||||
margin: 0 5px 0 0 !important;
|
||||
border-top-left-radius: 0 !important;
|
||||
border-bottom-left-radius: 0 !important;
|
||||
}
|
||||
|
||||
#identity-box:has(#identity-permission-box:is([hasPermissions], [hasSharingIcon])) #identity-icon-box {
|
||||
#identity-box:has(#notification-popup-box:not([hidden="true"])) #identity-icon-box,
|
||||
#identity-box:has(#notification-popup-box:not([hidden="true"])) #identity-permission-box {
|
||||
margin-right: 4px !important;
|
||||
}
|
||||
|
||||
#identity-box:has(#identity-permission-box:is([hasPermissions], [hasSharingIcon])):not([pageproxystate="invalid"]) #identity-icon-box {
|
||||
border-top-right-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
@@ -124,10 +128,22 @@ toolbar .zen-sidebar-panel-button {
|
||||
|
||||
#notification-popup-box {
|
||||
border-radius: 999px;
|
||||
margin-right: 5px;
|
||||
transition: .2s;
|
||||
height: 100%;
|
||||
padding: 7px;
|
||||
margin: 0 4px 0 0 !important;
|
||||
padding: 0 4px;
|
||||
min-width: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||
height: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
#urlbar[breakout-extend="true"] #notification-popup-box {
|
||||
min-width: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||
height: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||
}
|
||||
|
||||
#notification-popup-box > image {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button.popup-notification-dropmarker {
|
||||
@@ -141,11 +157,12 @@ button.popup-notification-dropmarker {
|
||||
}
|
||||
|
||||
.searchbar-engine-one-off-item {
|
||||
max-width: 20px;
|
||||
min-width: 20px !important;
|
||||
max-width: 28px;
|
||||
min-width: 28px !important;
|
||||
transition: background 0s;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
#downloadsHistory {
|
||||
margin-top: 5px
|
||||
}
|
||||
}
|
||||
|
@@ -1,42 +1,55 @@
|
||||
|
||||
#zen-workspaces-button {
|
||||
--zen-workspaces-button-vmargin: 0.35rem;
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
border-radius: 50px;
|
||||
width: calc(var(--zen-sidebar-action-button-width) - 5px) !important;
|
||||
height: calc(var(--zen-sidebar-action-button-width) - 10px) !important;
|
||||
margin-bottom: .1rem !important;
|
||||
margin-top: var(--zen-workspaces-button-vmargin) !important;
|
||||
margin-bottom: var(--zen-workspaces-button-vmargin) !important;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#zen-workspaces-button .zen-workspace-sidebar-name {
|
||||
margin-left: .1rem;
|
||||
margin-left: .2rem;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#zen-workspaces-button .zen-workspace-sidebar-name {
|
||||
display: block;
|
||||
}
|
||||
/** Keep these selectors in sync with the ones in vertical-tabs.css */
|
||||
#navigator-toolbox:is(
|
||||
#navigator-toolbox[zen-user-hover="true"]:hover,
|
||||
#navigator-toolbox[zen-user-hover="true"]:focus-within,
|
||||
#mainPopupSet[zen-user-hover="true"]:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#navigator-toolbox[zen-user-hover="true"]:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)),
|
||||
:not([zen-user-hover="true"])) {
|
||||
& #zen-workspaces-button .zen-workspace-sidebar-name {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#zen-workspaces-button .zen-workspace-sidebar-icon[no-icon="true"] {
|
||||
display: none;
|
||||
}
|
||||
& #zen-workspaces-button .zen-workspace-sidebar-icon[no-icon="true"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#zen-workspaces-button .zen-workspace-sidebar-icon[no-icon="true"] + .zen-workspace-sidebar-name {
|
||||
margin-left: 0;
|
||||
}
|
||||
& #zen-workspaces-button .zen-workspace-sidebar-icon[no-icon="true"] + .zen-workspace-sidebar-name {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#zen-workspaces-button {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
display: flex;
|
||||
padding: 2px 10px;
|
||||
width: calc(100% - var(--zen-tabbrowser-padding) * 8) !important;
|
||||
& #zen-workspaces-button {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
display: flex;
|
||||
padding: 2px 10px;
|
||||
width: calc(100% - var(--zen-tabbrowser-padding) * 6) !important;
|
||||
gap: 0.5ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,6 +62,8 @@
|
||||
|
||||
#PanelUI-zen-workspaces > panelmultiview {
|
||||
align-items: flex-start;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces panelmultiview panelview {
|
||||
@@ -58,11 +73,13 @@
|
||||
min-height: 150px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-input {
|
||||
#PanelUI-zen-workspaces-create-input,
|
||||
#PanelUI-zen-workspaces-edit-input {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton {
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton,
|
||||
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
display: flex;
|
||||
@@ -72,27 +89,37 @@
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton[selected="true"] {
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton[selected="true"],
|
||||
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton[selected="true"] {
|
||||
border-color: var(--zen-colors-secondary);
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-icon {
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-icon,
|
||||
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton .toolbarbutton-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-text {
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-text,
|
||||
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton .toolbarbutton-text {
|
||||
min-width: unset;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-icons-container {
|
||||
#PanelUI-zen-workspaces-create-icons-container,
|
||||
#PanelUI-zen-workspaces-edit-icons-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(30px, 1fr));
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton.toolbarbutton-1,
|
||||
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton.toolbarbutton-1 {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-list[empty="true"] {
|
||||
@@ -132,6 +159,7 @@
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
& .zen-workspace-name {
|
||||
@@ -171,14 +199,16 @@
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-footer {
|
||||
#PanelUI-zen-workspaces-create-footer,
|
||||
#PanelUI-zen-workspaces-edit-footer {
|
||||
padding-bottom: 0 !important;
|
||||
margin-top: 20px;
|
||||
margin-top: 10px;
|
||||
margin-left: 0;
|
||||
margin-bottom: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-footer button[default="true"] {
|
||||
#PanelUI-zen-workspaces-create-footer button[default="true"],
|
||||
#PanelUI-zen-workspaces-edit-footer button[default="true"] {
|
||||
width: 100%;
|
||||
}
|
||||
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/browser/components/customizableui/content/customizeMode.inc.xhtml b/browser/components/customizableui/content/customizeMode.inc.xhtml
|
||||
index 2788cc6a8fb42b7b968eb45aafc02f8d6fcf771d..5142e65576aebaac0e31677b707a5e05f88dae76 100644
|
||||
--- a/browser/components/customizableui/content/customizeMode.inc.xhtml
|
||||
+++ b/browser/components/customizableui/content/customizeMode.inc.xhtml
|
||||
@@ -94,7 +94,7 @@
|
||||
class="footer-button"
|
||||
oncommand="gCustomizeMode.togglePong(this.checked);"
|
||||
hidden="true"/>
|
||||
-
|
||||
+#include zenCustomizationMode.inc.xhtml
|
||||
<spacer id="customization-footer-spacer"/>
|
||||
#ifdef XP_MACOSX
|
||||
<button id="customization-touchbar-button"
|
@@ -16,6 +16,21 @@ var gZenNewWebPanel = {
|
||||
}
|
||||
},
|
||||
|
||||
addHttpIfMissing(url) {
|
||||
// List of schemes to avoid
|
||||
const avoidSchemes = ['about:', 'chrome:', 'moz-extension:', 'view-source:'];
|
||||
// Check if the URL starts with any of the avoid schemes
|
||||
for (let scheme of avoidSchemes) {
|
||||
if (url.startsWith(scheme)) {
|
||||
return url;
|
||||
}
|
||||
}
|
||||
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
||||
return 'https://' + url;
|
||||
}
|
||||
return url;
|
||||
},
|
||||
|
||||
handleDialogAccept: async function(aEvent) {
|
||||
document.commandDispatcher.focusedElement?.blur();
|
||||
let url = document.getElementById("zenNWP_url");
|
||||
@@ -23,16 +38,17 @@ var gZenNewWebPanel = {
|
||||
if (!url || !ua) {
|
||||
return;
|
||||
}
|
||||
let urlValue = url.value;
|
||||
try {
|
||||
new URL(url.value);
|
||||
new URL(urlValue);
|
||||
} catch (_) {
|
||||
return;
|
||||
urlValue = this.addHttpIfMissing(url.value);
|
||||
}
|
||||
if (!url.value || !ua.value) {
|
||||
return;
|
||||
}
|
||||
let newSite = {
|
||||
url: url.value,
|
||||
url: urlValue,
|
||||
ua: ua.value,
|
||||
};
|
||||
let currentData = JSON.parse(Services.prefs.getStringPref("zen.sidebar.data"));
|
||||
|
@@ -1,14 +1,15 @@
|
||||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||
index 7e21bab426b6eb52fe84876d817fddbdb1a35ffc..fb7c6f419c02701aecd148ef2fe271ed6f1a73c1 100644
|
||||
index 7e21bab426b6eb52fe84876d817fddbdb1a35ffc..56b42e2d025e4a47ea0983cf33ae69ffafa0d576 100644
|
||||
--- a/browser/components/preferences/preferences.js
|
||||
+++ b/browser/components/preferences/preferences.js
|
||||
@@ -196,6 +196,9 @@ function init_all() {
|
||||
@@ -196,6 +196,10 @@ function init_all() {
|
||||
// the entire document.
|
||||
Preferences.queueUpdateOfAllElements();
|
||||
Services.telemetry.setEventRecordingEnabled("aboutpreferences", true);
|
||||
+ register_module("paneZenLooks", gZenLooksAndFeel);
|
||||
+ register_module("paneZenWorkspaces", gZenWorkspacesSettings);
|
||||
+ register_module("paneZenCKS", gZenCKSSettings);
|
||||
+ register_module("paneZenMarketplace", gZenMarketplaceManager);
|
||||
|
||||
register_module("paneGeneral", gMainPane);
|
||||
register_module("paneHome", gHomePane);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||
index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca1cf7acc5 100644
|
||||
index 3affb19d1a243da4a5782c9a4a5588d165b4119f..837f078ff1f3a65a40877c1380c6d050a8415bab 100644
|
||||
--- a/browser/components/preferences/preferences.xhtml
|
||||
+++ b/browser/components/preferences/preferences.xhtml
|
||||
@@ -43,6 +43,8 @@
|
||||
@@ -24,7 +24,7 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
||||
<!-- category list -->
|
||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||
<richlistitem id="category-general"
|
||||
@@ -110,6 +118,39 @@
|
||||
@@ -110,6 +118,50 @@
|
||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||
</richlistitem>
|
||||
|
||||
@@ -60,11 +60,22 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
||||
+ <image class="category-icon"/>
|
||||
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-CKS-title"></label>
|
||||
+ </richlistitem>
|
||||
+
|
||||
+ <richlistitem id="category-zen-marketplace"
|
||||
+ class="category"
|
||||
+ value="paneZenMarketplace"
|
||||
+ helpTopic="prefs-main"
|
||||
+ data-l10n-id="category-zen-marketplace"
|
||||
+ data-l10n-attrs="tooltiptext"
|
||||
+ align="center">
|
||||
+ <image class="category-icon"/>
|
||||
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-marketplace-title"></label>
|
||||
+ </richlistitem>
|
||||
+
|
||||
<richlistitem id="category-home"
|
||||
class="category"
|
||||
value="paneHome"
|
||||
@@ -228,11 +269,13 @@
|
||||
@@ -228,11 +280,13 @@
|
||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
@@ -73,18 +84,19 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
||||
id="searchInput"
|
||||
data-l10n-id="search-input-box2"
|
||||
data-l10n-attrs="placeholder, style"
|
||||
hidden="true"/>
|
||||
/>
|
||||
+#endif
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="mainPrefPane">
|
||||
@@ -246,6 +289,9 @@
|
||||
@@ -246,6 +300,10 @@
|
||||
#include sync.inc.xhtml
|
||||
#include experimental.inc.xhtml
|
||||
#include moreFromMozilla.inc.xhtml
|
||||
+#include zenLooksAndFeel.inc.xhtml
|
||||
+#include zenKeyboardShortcuts.inc.xhtml
|
||||
+#include zenWorkspaces.inc.xhtml
|
||||
+#include zenMarketplace.inc.xhtml
|
||||
</vbox>
|
||||
</vbox>
|
||||
</vbox>
|
||||
|
@@ -15,10 +15,56 @@ const kZenColors = [
|
||||
"#d4bbff",
|
||||
];
|
||||
|
||||
const kZenOSToSmallName = {
|
||||
WINNT: "windows",
|
||||
Darwin: "macos",
|
||||
Linux: "linux",
|
||||
};
|
||||
|
||||
var gZenMarketplaceManager = {
|
||||
init() {
|
||||
const checkForUpdates = document.getElementById("zenThemeMarketplaceCheckForUpdates");
|
||||
if (!checkForUpdates) return; // We havent entered the settings page yet.
|
||||
if (this.__hasInitializedEvents) return;
|
||||
this._buildThemesList();
|
||||
Services.prefs.addObserver(this.updatePref, this._buildThemesList.bind(this));
|
||||
this.__hasInitializedEvents = true;
|
||||
Services.prefs.addObserver(this.updatePref, this);
|
||||
checkForUpdates.addEventListener("click", (event) => {
|
||||
if (event.target === checkForUpdates) {
|
||||
event.preventDefault();
|
||||
this._checkForThemeUpdates(event);
|
||||
}
|
||||
});
|
||||
document.addEventListener("ZenThemeMarketplace:CheckForUpdatesFinished", (event) => {
|
||||
checkForUpdates.disabled = false;
|
||||
const updates = event.detail.updates;
|
||||
const success = document.getElementById("zenThemeMarketplaceUpdatesSuccess");
|
||||
const error = document.getElementById("zenThemeMarketplaceUpdatesFailure");
|
||||
if (updates) {
|
||||
success.hidden = false;
|
||||
error.hidden = true;
|
||||
} else {
|
||||
success.hidden = true;
|
||||
error.hidden = false;
|
||||
}
|
||||
});
|
||||
window.addEventListener("unload", this.uninit.bind(this));
|
||||
},
|
||||
|
||||
uninit() {
|
||||
Services.prefs.removeObserver(this.updatePref, this);
|
||||
},
|
||||
|
||||
async observe() {
|
||||
this._themes = null;
|
||||
await this._buildThemesList();
|
||||
},
|
||||
|
||||
_checkForThemeUpdates(event) {
|
||||
// Send a message to the child to check for theme updates.
|
||||
event.target.disabled = true;
|
||||
// send an event that will be listened by the child process.
|
||||
document.dispatchEvent(new CustomEvent("ZenCheckForThemeUpdates"));
|
||||
},
|
||||
|
||||
get updatePref() {
|
||||
@@ -70,28 +116,63 @@ var gZenMarketplaceManager = {
|
||||
return this._themes;
|
||||
},
|
||||
|
||||
get currentOperatingSystem() {
|
||||
let os = Services.appinfo.OS;
|
||||
return kZenOSToSmallName[os];
|
||||
},
|
||||
|
||||
_getValidPreferences(preferences) {
|
||||
for (let key in preferences) {
|
||||
// [!][os:]key
|
||||
let restOfPreferences = key;
|
||||
let isNegation = false;
|
||||
if (key.startsWith("!")) {
|
||||
isNegation = true;
|
||||
restOfPreferences = key.slice(1);
|
||||
}
|
||||
let os = "";
|
||||
if (restOfPreferences.includes(":")) {
|
||||
[os, restOfPreferences] = restOfPreferences.split(":");
|
||||
}
|
||||
if (isNegation && os === this.currentOperatingSystem) {
|
||||
delete preferences[key];
|
||||
} else if (os && os !== this.currentOperatingSystem && !isNegation) {
|
||||
delete preferences[key];
|
||||
} else {
|
||||
// Change the key to contain only the rest of the preferences.
|
||||
preferences[restOfPreferences] = preferences[key];
|
||||
if (key !== restOfPreferences) {
|
||||
delete preferences[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return preferences;
|
||||
},
|
||||
|
||||
async _getThemePreferences(theme) {
|
||||
const themePath = PathUtils.join(this.themesRootPath, theme.id, "preferences.json");
|
||||
if (!(await IOUtils.exists(themePath)) || !theme.preferences) {
|
||||
return {};
|
||||
}
|
||||
return await IOUtils.readJSON(themePath);
|
||||
return this._getValidPreferences(await IOUtils.readJSON(themePath));
|
||||
},
|
||||
|
||||
async _buildThemesList() {
|
||||
if (!this.themesList) return;
|
||||
console.log("ZenThemeMarketplaceParent(settings): Building themes list");
|
||||
let themes = await this._getThemes();
|
||||
this.themesList.innerHTML = "";
|
||||
for (let theme of Object.values(themes)) {
|
||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||
<hbox class="zenThemeMarketplaceItem">
|
||||
<vbox class="zenThemeMarketplaceItemContent">
|
||||
<hbox class="zenThemeMarketplaceItem" align="center">
|
||||
<vbox class="zenThemeMarketplaceItemContent" flex="1">
|
||||
<label><h3 class="zenThemeMarketplaceItemTitle"></h3></label>
|
||||
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
|
||||
</vbox>
|
||||
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
|
||||
</hbox>
|
||||
`);
|
||||
fragment.querySelector(".zenThemeMarketplaceItemTitle").textContent = theme.name;
|
||||
fragment.querySelector(".zenThemeMarketplaceItemTitle").textContent = `${theme.name} (v${theme.version || "1.0.0"})`;
|
||||
fragment.querySelector(".zenThemeMarketplaceItemDescription").textContent = theme.description;
|
||||
fragment.querySelector(".zenThemeMarketplaceItemUninstallButton").addEventListener("click", async (event) => {
|
||||
if (!confirm("Are you sure you want to remove this theme?")) {
|
||||
@@ -144,10 +225,43 @@ var gZenLooksAndFeel = {
|
||||
init() {
|
||||
this._initializeColorPicker(this._getInitialAccentColor());
|
||||
window.zenPageAccentColorChanged = this._handleAccentColorChange.bind(this);
|
||||
this._initializeTabbarExpandForm();
|
||||
gZenThemeBuilder.init();
|
||||
gZenMarketplaceManager.init();
|
||||
},
|
||||
|
||||
_initializeTabbarExpandForm() {
|
||||
const form = document.getElementById("zen-expand-tabbar-strat");
|
||||
const radios = form.querySelectorAll("input[type=radio]");
|
||||
const onHoverPref = "zen.view.sidebar-expanded.on-hover";
|
||||
const defaultExpandPref = "zen.view.sidebar-expanded";
|
||||
if (Services.prefs.getBoolPref(onHoverPref)) {
|
||||
form.querySelector("input[value=\"hover\"]").checked = true;
|
||||
} else if (Services.prefs.getBoolPref(defaultExpandPref)) {
|
||||
form.querySelector("input[value=\"expand\"]").checked = true;
|
||||
} else {
|
||||
form.querySelector("input[value=\"none\"]").checked = true;
|
||||
}
|
||||
for (let radio of radios) {
|
||||
radio.addEventListener("change", e => {
|
||||
switch (e.target.value) {
|
||||
case "expand":
|
||||
Services.prefs.setBoolPref(onHoverPref, false);
|
||||
Services.prefs.setBoolPref(defaultExpandPref, true);
|
||||
break;
|
||||
case "none":
|
||||
Services.prefs.setBoolPref(onHoverPref, false);
|
||||
Services.prefs.setBoolPref(defaultExpandPref, false);
|
||||
break;
|
||||
case "hover":
|
||||
Services.prefs.setBoolPref(onHoverPref, true);
|
||||
Services.prefs.setBoolPref(defaultExpandPref, true);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
_initializeColorPicker(accentColor) {
|
||||
let elem = document.getElementById("zenLooksAndFeelColorOptions");
|
||||
elem.innerHTML = "";
|
||||
@@ -189,10 +303,17 @@ var gZenCKSSettings = {
|
||||
this._initializeEvents();
|
||||
this._initializeCKS();
|
||||
this._addPrefObservers();
|
||||
window.addEventListener("unload", () => {
|
||||
Services.prefs.removeObserver("zen.keyboard.shortcuts.disable-firefox", this);
|
||||
});
|
||||
},
|
||||
|
||||
_addPrefObservers() {
|
||||
Services.prefs.addObserver("zen.keyboard.shortcuts.disable-firefox", this.onDisableFirefoxShortcutsChange.bind(this));
|
||||
Services.prefs.addObserver("zen.keyboard.shortcuts.disable-firefox", this);
|
||||
},
|
||||
|
||||
observe(subject, topic, data) {
|
||||
this.onDisableFirefoxShortcutsChange();
|
||||
},
|
||||
|
||||
async onDisableFirefoxShortcutsChange(event) {
|
||||
@@ -380,5 +501,10 @@ Preferences.addAll([
|
||||
id: "zen.keyboard.shortcuts.disable-firefox",
|
||||
type: "bool",
|
||||
default: false,
|
||||
},
|
||||
{
|
||||
id: "zen.themes.tabs.legacy-location",
|
||||
type: "bool",
|
||||
default: false,
|
||||
}
|
||||
]);
|
||||
|
@@ -32,6 +32,9 @@
|
||||
data-l10n-id="zen-look-and-feel-compact-view-top-toolbar"
|
||||
preference="zen.view.compact.hide-toolbar"/>
|
||||
</vbox>
|
||||
<checkbox id="zenLooksAndFeelShowLegacyToolbar"
|
||||
data-l10n-id="zen-look-and-feel-legacy-toolbar"
|
||||
preference="zen.themes.tabs.legacy-location"/>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenThemeCategory"
|
||||
@@ -42,14 +45,6 @@
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
||||
<label><html:h2 data-l10n-id="zen-theme-marketplace-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-description" />
|
||||
<hbox class="indent">
|
||||
<html:a id="zenThemeMarketplaceLink" href="https://zen-browser.app/themes" target="_blank" data-l10n-id="zen-theme-marketplace-link" />
|
||||
</hbox>
|
||||
|
||||
<vbox id="zenThemeMarketplaceList"></vbox>
|
||||
|
||||
<label><html:h2 data-l10n-id="zen-look-and-feel-buttons-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-buttons-description" />
|
||||
|
||||
@@ -96,9 +91,23 @@
|
||||
<checkbox id="zenLooksAndFeelShowTabExpandButton"
|
||||
data-l10n-id="zen-vertical-tabs-show-expand-button"
|
||||
preference="zen.view.sidebar-expanded.show-button"/>
|
||||
<checkbox id="zenLooksAndFeelExpandTabsByDefault"
|
||||
data-l10n-id="zen-vertical-tabs-expand-tabs-by-default"
|
||||
preference="zen.view.sidebar-expanded"/>
|
||||
|
||||
<label><html:h2 data-l10n-id="zen-vertical-tabs-expand-tabs-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-vertical-tabs-expand-tabs-description" />
|
||||
<form xmlns="http://www.w3.org/1999/xhtml" id="zen-expand-tabbar-strat" autocomplete="off" class="indent">
|
||||
<hbox>
|
||||
<input type="radio" name="zen-expand-tabbar-value" value="expand" data-l10n-id="zen-vertical-tabs-expand-tabs-by-default" />
|
||||
<span data-l10n-id="zen-vertical-tabs-expand-tabs-by-default" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
<input type="radio" name="zen-expand-tabbar-value" value="hover" data-l10n-id="zen-vertical-tabs-expand-tabs-on-hover" />
|
||||
<span data-l10n-id="zen-vertical-tabs-expand-tabs-on-hover" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
<input type="radio" name="zen-expand-tabbar-value" value="none" data-l10n-id="zen-vertical-tabs-dont-expand-tabs-by-default" />
|
||||
<span data-l10n-id="zen-vertical-tabs-dont-expand-tabs-by-default" />
|
||||
</hbox>
|
||||
</form>
|
||||
</groupbox>
|
||||
|
||||
</html:template>
|
||||
|
23
src/browser/components/preferences/zenMarketplace.inc.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<html:template id="template-paneZenMarketplace">
|
||||
<hbox id="ZenMarketplaceCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenMarketplace">
|
||||
<html:h1 data-l10n-id="pane-zen-marketplace-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenMarketplaceGroup" data-category="paneZenMarketplace" hidden="true" class="highlighting-group">
|
||||
<label><html:h2 data-l10n-id="zen-theme-marketplace-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-description" />
|
||||
<hbox class="indent">
|
||||
<html:a id="zenThemeMarketplaceLink" href="https://zen-browser.app/themes" target="_blank" data-l10n-id="zen-theme-marketplace-link" />
|
||||
<button id="zenThemeMarketplaceCheckForUpdates" data-l10n-id="zen-theme-marketplace-check-for-updates-button" />
|
||||
</hbox>
|
||||
|
||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-success" hidden="true" id="zenThemeMarketplaceUpdatesSuccess" />
|
||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-failure" hidden="true" id="zenThemeMarketplaceUpdatesFailure" />
|
||||
|
||||
<vbox id="zenThemeMarketplaceList"></vbox>
|
||||
</groupbox>
|
||||
|
||||
</html:template>
|