Compare commits
312 Commits
1.0.0-a.20
...
1.0.0-a.34
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 | ||
![]() |
afc3eb7ee6 | ||
![]() |
c073febc29 | ||
![]() |
85842227aa | ||
![]() |
66ac0b9812 | ||
![]() |
3c2d617771 | ||
![]() |
03c0e70173 | ||
![]() |
f65888f5f4 | ||
![]() |
0f0cc0e03a | ||
![]() |
d7fe28886c | ||
![]() |
1d017d1dea | ||
![]() |
1479679cb6 | ||
![]() |
8c6b26b6f9 | ||
![]() |
3783625818 | ||
![]() |
0a5e803550 | ||
![]() |
a8980ae3ef | ||
![]() |
02fe8a0d0b | ||
![]() |
5700c61b17 | ||
![]() |
21930a9bf9 | ||
![]() |
e044f7d547 | ||
![]() |
1e4dea86bb | ||
![]() |
e737c55c74 | ||
![]() |
2c4cb2edd5 | ||
![]() |
ca6f3d882c | ||
![]() |
eea7e43ff8 | ||
![]() |
dec1fdd369 | ||
![]() |
01ec0092a2 | ||
![]() |
8af7418f3f | ||
![]() |
4589a22790 | ||
![]() |
15ecc5b8d4 | ||
![]() |
6c25279107 | ||
![]() |
979760a841 | ||
![]() |
c52853251d | ||
![]() |
7b23af1d76 | ||
![]() |
ec9804314d | ||
![]() |
b1d13f947d | ||
![]() |
f558aee231 | ||
![]() |
9d8c91809e | ||
![]() |
24400237a0 | ||
![]() |
6b766db159 | ||
![]() |
37297d9c9f | ||
![]() |
6c90e9726f | ||
![]() |
fe54849453 | ||
![]() |
df693676b7 | ||
![]() |
77a539243d | ||
![]() |
075ae9a459 | ||
![]() |
8f8bc5a9be | ||
![]() |
81225c05ee | ||
![]() |
3d6fc9ea7a | ||
![]() |
2d6660aa4d | ||
![]() |
739d1b1f59 | ||
![]() |
8cd17adbf5 | ||
![]() |
60984fefb9 | ||
![]() |
99b9448f2c | ||
![]() |
abf7ec6c1d | ||
![]() |
13515a5458 | ||
![]() |
3b9a96e330 | ||
![]() |
c4db4b2bd9 | ||
![]() |
f5b42396b0 | ||
![]() |
fd627a25d5 |
3
.gitattributes
vendored
@@ -1,3 +1,2 @@
|
||||
|
||||
*-c.patch linguist-language=C++
|
||||
*-cpp.patch linguist-language=C++
|
||||
*.patch linguist-language=C++
|
||||
|
1
.github/FUNDING.yml
vendored
@@ -1,2 +1,3 @@
|
||||
|
||||
patreon: zen_browser
|
||||
ko_fi: zen_browser
|
||||
|
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: Bug Report Or Feature Request
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
body:
|
||||
- type: markdown
|
||||
@@ -38,8 +38,6 @@ body:
|
||||
- Medium
|
||||
- High
|
||||
- Critical
|
||||
- Enhancement
|
||||
multiple: true
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
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.
|
2
.github/advanced-issue-labeler.yml
vendored
@@ -13,6 +13,4 @@ policy:
|
||||
keys: ['High']
|
||||
- name: 'kind: critical severity'
|
||||
keys: ['Critical']
|
||||
- name: 'kind: enhancement'
|
||||
keys: ['Enhancement']
|
||||
|
||||
|
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
|
||||
|
42
.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:
|
||||
|
3
.github/workflows/windows-alpha-build.yml
vendored
@@ -141,6 +141,9 @@ jobs:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import --verbose
|
||||
|
||||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
|
88
.github/workflows/windows-profile-build.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-version:
|
||||
description: 'The version to build'
|
||||
required: true
|
||||
type: string
|
||||
profile-data-path-archive:
|
||||
description: 'The path to the zip archive containing the profile data'
|
||||
required: false
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
windows-profile-build:
|
||||
name: Windows Profile Build - ${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
runs-on: windows-latest
|
||||
# Script edited from https://github.com/Floorp-Projects/Floorp/blob/ESR115/.github/workflows/window-generate-profile-data-and-jarlog.yml
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Node.js and pnpm
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Install Surfer
|
||||
run: |
|
||||
npm i -g @zen-browser/surfer
|
||||
- uses: actions/download-artifact@v4
|
||||
name: Download artifact
|
||||
with:
|
||||
path: C:\artifact
|
||||
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||
|
||||
- name: Unpack artifact
|
||||
run: |
|
||||
cd C:\artifact
|
||||
ls
|
||||
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
|
||||
ls
|
||||
- name: Setup
|
||||
run: |
|
||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe","C:\MozillaBuildSetup-Latest.exe")
|
||||
C:\MozillaBuildSetup-Latest.exe /S | out-null
|
||||
- name: Download firefox
|
||||
run: |
|
||||
git config --global core.safecrlf false
|
||||
pnpm surfer download
|
||||
- name: Generate
|
||||
run: |
|
||||
ls
|
||||
$Env:USE_MINTTY = "0"
|
||||
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
|
||||
$workspace_dir = $workspace_dir_current + "/engine"
|
||||
echo $workspace_dir
|
||||
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
|
||||
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> mozilla-build-run.sh
|
||||
echo './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
|
||||
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: Publish en-US.log
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log
|
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
|
||||
|
49
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,28 +13,36 @@ 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)
|
||||
|
||||
<a href='https://flathub.org/apps/io.github.zen_browser.zen'>
|
||||
<img width='240' 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/z3nth10n)
|
||||
|
||||
[](https://ko-fi.com/K3K111FH7H)
|
||||
|
||||
# Compatibility
|
||||
|
||||
Zen is currently built using firefox version `129.0`!
|
||||
Zen is currently built using firefox version `129.0.2`!
|
||||
|
||||
* 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)!
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
@@ -59,16 +73,27 @@ npm start
|
||||
## Special Thanks
|
||||
|
||||
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
|
||||
- [Erlend](https://havn.blog) (For making the logo)
|
||||
- [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>
|
||||
|
||||
|
@@ -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: 483 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 889 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 5.1 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: 483 KiB |
Before Width: | Height: | Size: 889 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 890 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 5.1 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}
|
||||
@@ -16,7 +19,6 @@ export MOZ_DISTRIBUTION_ID=${appId}
|
||||
# ac_add_options --enable-linker=gold
|
||||
|
||||
# Misc
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
|
||||
export MOZ_SOURCE_CHANGESET=${changeset}
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
@@ -31,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
|
||||
@@ -81,17 +85,15 @@ fi
|
||||
|
||||
ac_add_options --enable-unverified-updates
|
||||
|
||||
ac_add_options --enable-sandbox
|
||||
ac_add_options --enable-raw
|
||||
ac_add_options --enable-webrtc
|
||||
ac_add_options --enable-jxl
|
||||
ac_add_options --enable-av1
|
||||
ac_add_options --disable-eme
|
||||
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
|
||||
|
@@ -14,11 +14,10 @@ if test "$ZEN_CROSS_COMPILING"; then
|
||||
CROSS_COMPILE=1
|
||||
TOOLS=$(echo ~)/win-cross
|
||||
|
||||
#export WIN32_REDIST_DIR="$TOOLS"/vs2022/VC/Redist/MSVC/14.34.31931/x64/Microsoft.VC143.CRT
|
||||
#export WIN_UCRT_REDIST_DIR="$TOOLS/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
|
||||
export WIN_UCRT_REDIST_DIR="$(echo ~)/win-cross/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
|
||||
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"
|
||||
@@ -35,19 +34,19 @@ ac_add_options --disable-bits-download
|
||||
if test "$SURFER_COMPAT" = "true"; then
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize"
|
||||
|
||||
export CFLAGS="-mtune=haswell -march=x86-64"
|
||||
export CPPFLAGS="-mtune=haswell -march=x86-64"
|
||||
export CXXFLAGS="-mtune=haswell -march=x86-64"
|
||||
export LDFLAGS="-Wl,-O3"
|
||||
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 LDFLAGS="-Wl,-O2"
|
||||
export RUSTFLAGS="-C codegen-units=1 -Ctarget-cpu=x86-64"
|
||||
else
|
||||
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -Xclang -ftree-vectorize -mpopcnt -mpclmul -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 -mpopcnt -mpclmul"
|
||||
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
export LDFLAGS="-Wl,-O3 -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
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 LDFLAGS="-Wl,-O3 -march=x86-64-v3"
|
||||
export RUSTFLAGS="-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"
|
||||
|
@@ -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>
|
||||
|
@@ -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
|
||||
|
||||
|
1
l10n
Submodule
@@ -27,6 +27,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/zen-browser/core#readme",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.2.7"
|
||||
"@zen-browser/surfer": "^1.3.6"
|
||||
}
|
||||
}
|
||||
|
10
pnpm-lock.yaml
generated
@@ -9,8 +9,8 @@ importers:
|
||||
.:
|
||||
dependencies:
|
||||
'@zen-browser/surfer':
|
||||
specifier: ^1.2.7
|
||||
version: 1.2.7
|
||||
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.7':
|
||||
resolution: {integrity: sha512-VbbbB7crGXrdfk1PPnlsWFWErwjtccXbRuw5mOQzY327d2t5VraxmkqTzcuGSTxpu3CR/KvzNu0gDg/6+7b4NQ==}
|
||||
'@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.7':
|
||||
'@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);
|
||||
@@ -49,6 +49,10 @@ 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", 10240);
|
||||
|
||||
/** MIXED CONTENT + CROSS-SITE ***/
|
||||
pref("pdfjs.enableScripting", false);
|
||||
pref("extensions.postDownloadThirdPartyPrompt", false);
|
||||
|
||||
/** EXPERIMENTAL ***/
|
||||
pref("layout.css.grid-template-masonry-value.enabled", true);
|
||||
pref("dom.enable_web_task_scheduling", true);
|
||||
@@ -65,7 +69,6 @@ pref("network.cookie.sameSite.noneRequiresSecure", true);
|
||||
pref("browser.download.start_downloads_in_tmp_dir", true);
|
||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
pref("browser.uitour.enabled", false);
|
||||
pref("privacy.globalprivacycontrol.enabled", true);
|
||||
|
||||
/** OCSP & CERTS / HPKP ***/
|
||||
pref("security.OCSP.enabled", 0);
|
||||
|
@@ -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,19 @@ 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.data', "{}");
|
||||
pref('zen.themes.updated-value-observer', false);
|
||||
|
||||
// Pref to enable the new profiles (TODO: Check this out!)
|
||||
//pref("browser.profiles.enabled", true);
|
||||
@@ -100,12 +110,13 @@ 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,6 +135,17 @@ pref('xpinstall.signatures.required', false);
|
||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
||||
|
||||
// Font rendering, not for MacOSX and Linux
|
||||
#ifndef XP_UNIX
|
||||
#ifndef XP_MACOSX
|
||||
pref('gfx.font_rendering.cleartype_params.rendering_mode', 5);
|
||||
pref('gfx.font_rendering.cleartype_params.gamma', 1750);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
pref('gfx.webrender.all', true);
|
||||
pref('layers.acceleration.force-enabled', true);
|
||||
|
||||
#include better-fox.js
|
||||
|
||||
// Betterfox overrides (Stay below the include directive)
|
||||
@@ -140,11 +162,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 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() {
|
||||
@@ -80,7 +83,6 @@ var ZenStartup = {
|
||||
const kElementsToAppend = [
|
||||
"sidebar-splitter",
|
||||
"sidebar-box",
|
||||
"navigator-toolbox",
|
||||
];
|
||||
const wrapper = document.getElementById("zen-tabbox-wrapper");
|
||||
const appWrapepr = document.getElementById("zen-sidebar-box-container");
|
||||
@@ -92,14 +94,26 @@ var ZenStartup = {
|
||||
}
|
||||
appWrapepr.setAttribute("hidden", "true");
|
||||
|
||||
const browser = document.getElementById("browser")
|
||||
const toolbox = document.getElementById("navigator-toolbox");
|
||||
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;
|
||||
},
|
||||
|
@@ -25,6 +25,8 @@
|
||||
<!-- Scripts used all over the browser -->
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", async () => {
|
||||
// Theme importer always needs to be loaded first
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenSidebarManager.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs");
|
||||
|
@@ -9,11 +9,13 @@
|
||||
content/browser/zen-components/ZenProfileDialogUI.mjs (content/zen-components/src/ZenProfileDialogUI.mjs)
|
||||
content/browser/zen-components/ZenKeyboardShortcuts.mjs (content/zen-components/src/ZenKeyboardShortcuts.mjs)
|
||||
content/browser/zen-components/ZenThemeBuilder.mjs (content/zen-components/src/ZenThemeBuilder.mjs)
|
||||
content/browser/zen-components/ZenThemesImporter.mjs (content/zen-components/src/ZenThemesImporter.mjs)
|
||||
|
||||
content/browser/zen-styles/zen-theme.css (content/zen-styles/zen-theme.css)
|
||||
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();"/>
|
||||
|
@@ -4,13 +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-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;
|
||||
|
||||
& browser {
|
||||
clip-path: inset(0px 0px 0px round var(--zen-browser-border-radius) 0);
|
||||
}
|
||||
|
||||
&, & browser {
|
||||
border-radius: var(--zen-browser-border-radius);
|
||||
}
|
||||
/* 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,7 +25,6 @@ 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;
|
||||
}
|
||||
|
||||
|
@@ -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,14 @@
|
||||
@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);
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel-wrapper,
|
||||
@@ -78,12 +93,15 @@
|
||||
#navigator-toolbox[zen-user-show],
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#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 > *{
|
||||
@@ -114,7 +132,7 @@
|
||||
#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%;
|
||||
@@ -137,7 +155,7 @@
|
||||
}
|
||||
|
||||
:root:not([inDOMFullscreen="true"]) #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
|
||||
margin-top: var(--zen-element-separation);
|
||||
margin-top: var(--zen-element-separation) !important;
|
||||
}
|
||||
|
||||
#titlebar {
|
||||
@@ -148,4 +166,24 @@
|
||||
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],
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -10,7 +10,7 @@
|
||||
}
|
||||
|
||||
#sidebar-box {
|
||||
--zen-sidebar-box-border-radius: var(--zen-browser-border-radius);
|
||||
--zen-sidebar-box-border-radius: var(--zen-panel-radius);
|
||||
margin: var(--zen-element-separation);
|
||||
border-radius: var(--zen-sidebar-box-border-radius);
|
||||
overflow: hidden;
|
||||
@@ -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;
|
||||
}
|
||||
@@ -205,6 +199,7 @@
|
||||
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#navigator-toolbox {
|
||||
width: 0;
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
@@ -214,7 +209,10 @@
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded.show-button") {
|
||||
#zen-expand-sidebar-button {
|
||||
display: block;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
:root:is([chromehidden~="location"], [chromehidden~="toolbar"]) #navigator-toolbox {
|
||||
display: none !important;
|
||||
}
|
||||
|
@@ -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") {
|
||||
|
||||
}
|
@@ -6,13 +6,16 @@
|
||||
|
||||
#navigator-toolbox {
|
||||
--zen-tabbrowser-padding: 5px;
|
||||
min-width: 55px;
|
||||
padding-left: 2px;
|
||||
margin-top: 0; /* Issue #156 */
|
||||
order: 0 !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
order: 0 !important;
|
||||
}
|
||||
|
||||
:root[inFullscreen="true"] #navigator-toolbox {
|
||||
display: none;
|
||||
#navigator-toolbox {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
#zen-tabbox-wrapper:has(#zen-sidebar-splitter:not([state="dragging"])) #navigator-toolbox {
|
||||
@@ -33,6 +36,7 @@
|
||||
|
||||
#TabsToolbar-customization-target {
|
||||
flex-direction: column;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
:root[customizing] .customization-target:not(#widget-overflow-fixed-list) {
|
||||
@@ -152,6 +156,7 @@
|
||||
.tabbrowser-tab {
|
||||
margin-inline-start: 0;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 1.5px;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[pinned] {
|
||||
@@ -224,7 +229,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox {
|
||||
margin: 3px 0;
|
||||
margin: 3px 0 !important;
|
||||
}
|
||||
|
||||
#alltabs-button stack {
|
||||
@@ -232,155 +237,261 @@
|
||||
}
|
||||
|
||||
.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") {
|
||||
#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-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: zen-sidebar-panel-animation-2 0.3s backwards;
|
||||
|
||||
& .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%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
.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 {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||
#navigator-toolbox {
|
||||
padding-left: 5px;
|
||||
}
|
||||
order: 6 !important;
|
||||
padding-left: 0 !important;
|
||||
padding: calc(var(--zen-tabbrowser-padding) * 1.5);
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
order: 3;
|
||||
}
|
||||
|
||||
#tabbrowser-tabbox {
|
||||
padding-left: 10px;
|
||||
order: 5 !important;
|
||||
}
|
||||
|
||||
#tabbrowser-tabpanels .browserSidebarContainer {
|
||||
margin-right: 0 !important;
|
||||
margin-left: var(--zen-element-separation) !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,
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#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;
|
||||
}
|
||||
|
||||
& #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: 100%;
|
||||
}
|
||||
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox:focus-within,
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
@@ -89,7 +89,6 @@
|
||||
|
||||
--zen-appcontent-border: 1px solid var(--zen-colors-border);
|
||||
--zen-panel-radius: var(--zen-border-radius);
|
||||
--zen-browser-border-radius: var(--zen-panel-radius);
|
||||
|
||||
--toolbarbutton-border-radius: 6px;
|
||||
|
||||
@@ -112,7 +111,7 @@
|
||||
--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;
|
||||
}
|
||||
|
||||
@@ -132,7 +131,7 @@
|
||||
--zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 80%, black 20%);
|
||||
|
||||
--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-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, rgb(15, 15, 15) 92%);
|
||||
|
||||
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, black 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,39 +68,41 @@
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
toolbar .toolbarbutton-1:not(.unified-extensions-item-action-button) {
|
||||
@@ -106,12 +122,16 @@ toolbar .zen-sidebar-panel-button {
|
||||
}
|
||||
|
||||
#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 +144,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 +173,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%;
|
||||
}
|
||||
|
@@ -80,6 +80,9 @@ var ZenThemeModifier = {
|
||||
},
|
||||
|
||||
_updateZenAvatar() {
|
||||
if (typeof ProfileService === "undefined") {
|
||||
return;
|
||||
}
|
||||
const mainWindowEl = document.documentElement;
|
||||
// Dont override the sync avatar if it's already set
|
||||
if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
|
||||
|
@@ -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>
|
||||
@@ -78,13 +89,14 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
||||
</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,11 +15,238 @@ const kZenColors = [
|
||||
"#d4bbff",
|
||||
];
|
||||
|
||||
const kZenOSToSmallName = {
|
||||
WINNT: "windows",
|
||||
Darwin: "macos",
|
||||
Linux: "linux",
|
||||
};
|
||||
|
||||
var gZenMarketplaceManager = {
|
||||
init() {
|
||||
Services.prefs.addObserver(this.updatePref, this._buildThemesList.bind(this));
|
||||
this._buildThemesList();
|
||||
document.getElementById("zenThemeMarketplaceCheckForUpdates").addEventListener("click", (event) => {
|
||||
if (event.target === document.getElementById("zenThemeMarketplaceCheckForUpdates")) {
|
||||
event.preventDefault();
|
||||
this._checkForThemeUpdates(event);
|
||||
}
|
||||
});
|
||||
document.addEventListener("ZenThemeMarketplace:CheckForUpdatesFinished", (event) => {
|
||||
document.getElementById("zenThemeMarketplaceCheckForUpdates").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;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_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() {
|
||||
return "zen.themes.updated-value-observer";
|
||||
},
|
||||
|
||||
triggerThemeUpdate() {
|
||||
Services.prefs.setBoolPref(this.updatePref, !Services.prefs.getBoolPref(this.updatePref));
|
||||
},
|
||||
|
||||
get themesList() {
|
||||
return document.getElementById("zenThemeMarketplaceList");
|
||||
},
|
||||
|
||||
get themesDataFile() {
|
||||
return PathUtils.join(
|
||||
PathUtils.profileDir,
|
||||
"zen-themes.json"
|
||||
);
|
||||
},
|
||||
|
||||
get themesRootPath() {
|
||||
return PathUtils.join(
|
||||
PathUtils.profileDir,
|
||||
"chrome",
|
||||
"zen-themes"
|
||||
);
|
||||
},
|
||||
|
||||
async removeTheme(themeId) {
|
||||
const themePath = PathUtils.join(this.themesRootPath, themeId);
|
||||
console.info("ZenThemeMarketplaceParent(settings): Removing theme ", themePath);
|
||||
await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true });
|
||||
|
||||
let themes = await this._getThemes();
|
||||
delete themes[themeId];
|
||||
await IOUtils.writeJSON(this.themesDataFile, themes);
|
||||
|
||||
this.triggerThemeUpdate();
|
||||
},
|
||||
|
||||
async _getThemes() {
|
||||
if (!this._themes) {
|
||||
if (!(await IOUtils.exists(this.themesDataFile))) {
|
||||
await IOUtils.writeJSON(this.themesDataFile, {});
|
||||
}
|
||||
this._themes = await IOUtils.readJSON(this.themesDataFile);
|
||||
}
|
||||
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 this._getValidPreferences(await IOUtils.readJSON(themePath));
|
||||
},
|
||||
|
||||
async _buildThemesList() {
|
||||
if (this.__alreadyBuilding) return;
|
||||
this.__alreadyBuilding = true;
|
||||
let themes = await this._getThemes();
|
||||
this.themesList.innerHTML = "";
|
||||
for (let theme of Object.values(themes)) {
|
||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||
<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} (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?")) {
|
||||
return;
|
||||
}
|
||||
const target = event.target;
|
||||
const themeId = target.getAttribute("zen-theme-id");
|
||||
await this.removeTheme(themeId);
|
||||
});
|
||||
this.themesList.appendChild(fragment);
|
||||
const preferences = await this._getThemePreferences(theme);
|
||||
if (Object.keys(preferences).length > 0) {
|
||||
let preferencesWrapper = document.createXULElement("vbox");
|
||||
preferencesWrapper.classList.add("indent");
|
||||
preferencesWrapper.classList.add("zenThemeMarketplaceItemPreferences");
|
||||
for (let [key, value] of Object.entries(preferences)) {
|
||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||
<hbox class="zenThemeMarketplaceItemPreference">
|
||||
<checkbox class="zenThemeMarketplaceItemPreferenceCheckbox" zen-pref="${key}"></checkbox>
|
||||
<vbox class="zenThemeMarketplaceItemPreferenceData">
|
||||
<label class="zenThemeMarketplaceItemPreferenceLabel">${key}</label>
|
||||
<description class="description-deemphasized zenThemeMarketplaceItemPreferenceValue">${value}</description>
|
||||
</vbox>
|
||||
</hbox>
|
||||
`);
|
||||
// Checkbox only works with "true" and "false" values, it's not like HTML checkboxes.
|
||||
if (Services.prefs.getBoolPref(key, false)) {
|
||||
fragment.querySelector(".zenThemeMarketplaceItemPreferenceCheckbox").setAttribute("checked", "true");
|
||||
}
|
||||
fragment.querySelector(".zenThemeMarketplaceItemPreferenceCheckbox").addEventListener("click", (event) => {
|
||||
let target = event.target.closest(".zenThemeMarketplaceItemPreferenceCheckbox");
|
||||
let key = target.getAttribute("zen-pref");
|
||||
let checked = target.hasAttribute("checked");
|
||||
if (!checked) {
|
||||
target.removeAttribute("checked");
|
||||
} else {
|
||||
target.setAttribute("checked", "true");
|
||||
}
|
||||
Services.prefs.setBoolPref(key, !checked);
|
||||
});
|
||||
preferencesWrapper.appendChild(fragment);
|
||||
}
|
||||
this.themesList.appendChild(preferencesWrapper);
|
||||
}
|
||||
}
|
||||
this.__alreadyBuilding = false;
|
||||
}
|
||||
};
|
||||
|
||||
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) {
|
||||
|
@@ -34,6 +34,25 @@
|
||||
</vbox>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenThemeCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenLooks">
|
||||
<html:h1 data-l10n-id="pane-zen-theme-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
||||
<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" />
|
||||
|
||||
<checkbox id="zenLooksAndFeelPilledButtons"
|
||||
data-l10n-id="zen-look-and-feel-pilled-buttons"
|
||||
preference="zen.theme.pill-button"/>
|
||||
|
||||
<label><html:h2 data-l10n-id="zen-look-and-feel-urlbar-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-urlbar-description" />
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenSidePanelsCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
@@ -69,28 +88,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"/>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenThemeCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenLooks">
|
||||
<html:h1 data-l10n-id="pane-zen-theme-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
||||
<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" />
|
||||
|
||||
<checkbox id="zenLooksAndFeelPilledButtons"
|
||||
data-l10n-id="zen-look-and-feel-pilled-buttons"
|
||||
preference="zen.theme.pill-button"/>
|
||||
|
||||
<label><html:h2 data-l10n-id="zen-look-and-feel-urlbar-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-urlbar-description" />
|
||||
<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>
|
@@ -1,12 +1,36 @@
|
||||
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
|
||||
index d05d561b6d01b11a36c762fc39dc13e14181bce7..cbb85d7019a68f283e38c45172eda605c7b90144 100644
|
||||
index d05d561b6d01b11a36c762fc39dc13e14181bce7..b3aaf776c1fdeb1c02f88f2e8d5f424215b2cc26 100644
|
||||
--- a/browser/components/sidebar/browser-sidebar.js
|
||||
+++ b/browser/components/sidebar/browser-sidebar.js
|
||||
@@ -471,6 +471,7 @@ var SidebarController = {
|
||||
@@ -446,7 +446,7 @@ var SidebarController = {
|
||||
*/
|
||||
setPosition() {
|
||||
// First reset all ordinals to match DOM ordering.
|
||||
- let browser = document.getElementById("browser");
|
||||
+ let browser = document.getElementById("zen-tabbox-wrapper");
|
||||
[...browser.children].forEach((node, i) => {
|
||||
node.style.order = i + 1;
|
||||
});
|
||||
@@ -460,9 +460,11 @@ var SidebarController = {
|
||||
let boxOrdinal = this._box.style.order;
|
||||
this._box.style.order = appcontent.style.order;
|
||||
|
||||
- appcontent.style.order = boxOrdinal;
|
||||
+ // appcontent.style.order = boxOrdinal;
|
||||
// the launcher should be on the right of the sidebar-box
|
||||
- sidebarContainer.style.order = parseInt(this._box.style.order) + 1;
|
||||
+ this._box.style.order = browser.children.length + 2;
|
||||
+ this._splitter.style.order = browser.children.length + 1;
|
||||
+ this._splitter.style.marginRight = 0;
|
||||
// Indicate we've switched ordering to the box
|
||||
this._box.setAttribute("positionend", true);
|
||||
sidebarMain.setAttribute("positionend", true);
|
||||
@@ -471,6 +473,8 @@ var SidebarController = {
|
||||
this._box.removeAttribute("positionend");
|
||||
sidebarMain.removeAttribute("positionend");
|
||||
sidebarContainer.removeAttribute("positionend");
|
||||
+ this._box.style.order = 0;
|
||||
+ this._splitter.style.removeProperty("margin-right");
|
||||
}
|
||||
|
||||
this.hideSwitcherPanel();
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index e9aa0f03c26dc26e1a2e56d28fadb70e60c8e8ca..9c209752b01bd07a3f38452da4bc8efc7433466c 100644
|
||||
index e9aa0f03c26dc26e1a2e56d28fadb70e60c8e8ca..f66f9c168ab560e41ea9d03c2d0727e4a5c15132 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -552,19 +552,36 @@
|
||||
@@ -146,6 +146,15 @@ index e9aa0f03c26dc26e1a2e56d28fadb70e60c8e8ca..9c209752b01bd07a3f38452da4bc8efc
|
||||
children.pop();
|
||||
this._allTabs = children;
|
||||
return children;
|
||||
@@ -1386,7 +1430,7 @@
|
||||
let tabsToReset = [];
|
||||
for (let i = numPinned; i < tabs.length; i++) {
|
||||
let tab = tabs[i];
|
||||
- tab.style.setProperty("max-width", aTabWidth, "important");
|
||||
+ //tab.style.setProperty("max-width", aTabWidth, "important");
|
||||
if (!isEndTab) {
|
||||
// keep tabs the same width
|
||||
tab.style.transition = "none";
|
||||
@@ -1476,11 +1520,11 @@
|
||||
for (let i = numPinned - 1; i >= 0; i--) {
|
||||
let tab = tabs[i];
|
||||
|
@@ -79,6 +79,7 @@ body {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
#second-view {
|
||||
|
@@ -63,7 +63,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
</div>
|
||||
<h2 data-l10n-id="welcome-dialog-theme-header-2"></h2>
|
||||
<div id="themeList" class="cardGroup">
|
||||
<svg width="700" height="700" viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<svg viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_404_2706)">
|
||||
<rect width="700" height="700" fill="#F4F4F4"/>
|
||||
<g filter="url(#filter0_d_404_2706)">
|
||||
@@ -92,7 +92,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
<svg width="700" height="700" viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<svg viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_404_2709)">
|
||||
<rect width="700" height="700" fill="#515151"/>
|
||||
<g filter="url(#filter0_d_404_2709)">
|
||||
|
@@ -18,7 +18,6 @@ ChromeUtils.defineModuleGetter(
|
||||
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
|
||||
|
||||
const kWelcomeURL = 'https://www.zen-browser.app/welcome';
|
||||
const kWelcomeSeenPref = 'zen.welcomeScreen.seen'
|
||||
|
||||
// =============================================================================
|
||||
@@ -288,19 +287,12 @@ class Pages {
|
||||
Services.prefs.setBoolPref(kWelcomeSeenPref, true)
|
||||
|
||||
close();
|
||||
this._openWelcomePage();
|
||||
return
|
||||
}
|
||||
|
||||
this._displayCurrentPage()
|
||||
}
|
||||
|
||||
_openWelcomePage() {
|
||||
gZenUIManager.openAndChangeToTab(kWelcomeURL, {
|
||||
inBackground: true,
|
||||
});
|
||||
}
|
||||
|
||||
_displayCurrentPage() {
|
||||
let progress = document.getElementById('circular-progress');
|
||||
progress.style.setProperty('--progress', ((this.currentPage + 1) / this.pages.length) * 100);
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
|
||||
index 1b87a9ab4aec939acac1da54a2b6670cc581fe86..603de2aa8d07adce7eb1002313f6403e1d90c5ea 100644
|
||||
index da760e143740a166df14d055cf3ec7b095b93d10..093dacee4356d4084432d53639873e3da006dd94 100644
|
||||
--- a/browser/installer/package-manifest.in
|
||||
+++ b/browser/installer/package-manifest.in
|
||||
@@ -370,8 +370,8 @@ bin/libfreebl_64int_3.so
|
||||
@@ -377,17 +377,17 @@ bin/libfreebl_64int_3.so
|
||||
; [MaintenanceService]
|
||||
;
|
||||
#ifdef MOZ_MAINTENANCE_SERVICE
|
||||
@@ -13,3 +13,23 @@ index 1b87a9ab4aec939acac1da54a2b6670cc581fe86..603de2aa8d07adce7eb1002313f6403e
|
||||
#endif
|
||||
|
||||
; [Crash Reporter]
|
||||
;
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
#ifdef XP_MACOSX
|
||||
-@BINPATH@/crashreporter.app/
|
||||
+;@BINPATH@/crashreporter.app/
|
||||
#else
|
||||
-@BINPATH@/crashreporter@BIN_SUFFIX@
|
||||
+;@BINPATH@/crashreporter@BIN_SUFFIX@
|
||||
#if defined(XP_WIN)
|
||||
@BINPATH@/@DLL_PREFIX@mozwer@DLL_SUFFIX@
|
||||
#endif
|
||||
@@ -397,7 +397,7 @@ bin/libfreebl_64int_3.so
|
||||
; [ minidump-analyzer ]
|
||||
;
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
-@BINPATH@/minidump-analyzer@BIN_SUFFIX@
|
||||
+;@BINPATH@/minidump-analyzer@BIN_SUFFIX@
|
||||
#endif
|
||||
|
||||
; [ Ping Sender ]
|
||||
|