mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
Compare commits
145 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4e6418c83e | ||
![]() |
0e17cb9c50 | ||
![]() |
ecf5c6af38 | ||
![]() |
afe8438958 | ||
![]() |
360baa1553 | ||
![]() |
a34675379b | ||
![]() |
215e2f10a9 | ||
![]() |
ca9b6525a2 | ||
![]() |
47cddef5de | ||
![]() |
bbedfd50a5 | ||
![]() |
6f60d2ff48 | ||
![]() |
0f76e65372 | ||
![]() |
d83f189a63 | ||
![]() |
f1d4b27c58 | ||
![]() |
f2ace58825 | ||
![]() |
fe74d96914 | ||
![]() |
379232e94a | ||
![]() |
7e74d75612 | ||
![]() |
ac92f251bc | ||
![]() |
42711a079b | ||
![]() |
373937ea0c | ||
![]() |
285a8de152 | ||
![]() |
11da1bf9ba | ||
![]() |
bcb3a88d16 | ||
![]() |
092fc77fb0 | ||
![]() |
9e2cd65560 | ||
![]() |
f8fbc79f35 | ||
![]() |
577c57ba87 | ||
![]() |
0d28e86fea | ||
![]() |
41862e5d39 | ||
![]() |
5559d1375c | ||
![]() |
9907722feb | ||
![]() |
4b706ff33a | ||
![]() |
52b6eab0d7 | ||
![]() |
8dd9b01048 | ||
![]() |
8521a2d044 | ||
![]() |
7e1c76a1da | ||
![]() |
9a816fe73a | ||
![]() |
b0c036e72b | ||
![]() |
0a34fb4fb0 | ||
![]() |
aa812d1fea | ||
![]() |
c63cfebd4f | ||
![]() |
c76492571b | ||
![]() |
34a40bbf86 | ||
![]() |
1132c70565 | ||
![]() |
515a0d4016 | ||
![]() |
9d6cf0cb6c | ||
![]() |
f585ad045b | ||
![]() |
0b9832dcc2 | ||
![]() |
882a6b87c7 | ||
![]() |
3ff2bcaace | ||
![]() |
bd0cf2ea86 | ||
![]() |
cfee3bf9c3 | ||
![]() |
fc8c0facdd | ||
![]() |
ad79a7e318 | ||
![]() |
9297fe8f9a | ||
![]() |
73b7903839 | ||
![]() |
cef86e1b02 | ||
![]() |
a274035159 | ||
![]() |
c57e93ba7b | ||
![]() |
82327db0d2 | ||
![]() |
51f36685e1 | ||
![]() |
9b64ee08a2 | ||
![]() |
a9f02e6120 | ||
![]() |
99dd17560a | ||
![]() |
97defffac3 | ||
![]() |
323ac423c9 | ||
![]() |
3c603fea40 | ||
![]() |
e1183c0ff4 | ||
![]() |
3db9315f82 | ||
![]() |
9ecd4a418d | ||
![]() |
089ff67a17 | ||
![]() |
c804ef7149 | ||
![]() |
68e990e762 | ||
![]() |
f97103ce8b | ||
![]() |
0cfb6875c5 | ||
![]() |
cdd67cd79e | ||
![]() |
c151b41e56 | ||
![]() |
d72c3eae4b | ||
![]() |
e570ad9b4d | ||
![]() |
f8ad77c903 | ||
![]() |
cc60b06b7f | ||
![]() |
19788deee4 | ||
![]() |
ac5f5e1ad3 | ||
![]() |
d3e1b09b00 | ||
![]() |
7c371d295a | ||
![]() |
fb8ccfed50 | ||
![]() |
b4b7eb554f | ||
![]() |
cad9436029 | ||
![]() |
7f6dbadc9c | ||
![]() |
0579b88dc7 | ||
![]() |
18407288ea | ||
![]() |
42218242e2 | ||
![]() |
7b61419039 | ||
![]() |
97da0b2bf0 | ||
![]() |
d0ea429401 | ||
![]() |
f30c7e33ec | ||
![]() |
b300a95854 | ||
![]() |
c6632e8dc8 | ||
![]() |
3b2ae304d2 | ||
![]() |
a2afe5b93a | ||
![]() |
b59174d47d | ||
![]() |
0449a14c19 | ||
![]() |
29b77b7591 | ||
![]() |
718ee7c51a | ||
![]() |
8a3b30e8a6 | ||
![]() |
023a8e26b9 | ||
![]() |
b092d44a7c | ||
![]() |
79dc54c3f4 | ||
![]() |
ef99073b06 | ||
![]() |
2783fa64d8 | ||
![]() |
4719e0ce31 | ||
![]() |
6b0945663a | ||
![]() |
5cafa401c3 | ||
![]() |
15b134511b | ||
![]() |
4270c571ac | ||
![]() |
f5c9e0d405 | ||
![]() |
ec9f5f4dfa | ||
![]() |
4c6f9ef06c | ||
![]() |
d087a26af2 | ||
![]() |
f32ef38823 | ||
![]() |
cf581654ef | ||
![]() |
62a6573f71 | ||
![]() |
968bd32ae3 | ||
![]() |
bc3a1f329e | ||
![]() |
9fca7074ee | ||
![]() |
eece97990d | ||
![]() |
8acae4deb3 | ||
![]() |
eed3bac755 | ||
![]() |
da89b77e75 | ||
![]() |
a12c433b65 | ||
![]() |
a79197c78d | ||
![]() |
5e8a3df528 | ||
![]() |
6a28d0cee9 | ||
![]() |
a73c7fae9e | ||
![]() |
53a57d8078 | ||
![]() |
a259c40209 | ||
![]() |
428eb56cea | ||
![]() |
27dca1cc6a | ||
![]() |
09d90291bf | ||
![]() |
f9cafd7cc0 | ||
![]() |
df1c6af96a | ||
![]() |
a1dbf8f64a | ||
![]() |
2268515bb1 | ||
![]() |
ecf0164a5a |
213
.github/workflows/alpha.yml
vendored
213
.github/workflows/alpha.yml
vendored
@@ -41,37 +41,29 @@ jobs:
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Setup gluon
|
||||
- name: Setup Surfer
|
||||
run: |
|
||||
npm i -g gluon-build@next
|
||||
npm i -g @zen-browser/surfer
|
||||
|
||||
- name: Bump version
|
||||
run: |
|
||||
pnpm gluon ci --brand alpha --bump prerelease
|
||||
pnpm surfer ci --brand alpha --bump prerelease
|
||||
|
||||
- name: Debug
|
||||
run: |
|
||||
gluon get version
|
||||
gluon get version | xargs
|
||||
echo "$(gluon get version | xargs)"
|
||||
surfer get version
|
||||
surfer get version | xargs
|
||||
echo "$(surfer get version | xargs)"
|
||||
|
||||
- name: Export release date
|
||||
id: data
|
||||
shell: bash
|
||||
run: |
|
||||
echo "builddate=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT
|
||||
echo "version=$(gluon get version | xargs)" >> $GITHUB_OUTPUT
|
||||
echo "version=$(surfer get version | xargs)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
if: ${{ github.event.inputs.update_version == 'true' }}
|
||||
@@ -101,32 +93,24 @@ jobs:
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Setup gluon
|
||||
- name: Setup surfer
|
||||
run: |
|
||||
npm i -g gluon-build@next
|
||||
npm i -g @zen-browser/surfer
|
||||
|
||||
- name: Activate gluon CLI
|
||||
- name: Activate surfer CLI
|
||||
run: |
|
||||
echo "There's a bug in the gluon CLI, we run this so that gluon sets everything up correctly"
|
||||
pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
echo "There's a bug in the surfer CLI, we run this so that surfer sets everything up correctly"
|
||||
pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Check version
|
||||
run: |
|
||||
echo "$(pwd)"
|
||||
ls .
|
||||
echo "version=$(pnpm gluon get version | xargs)" >> $GITHUB_OUTPUT
|
||||
if [[ $(pnpm gluon get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then
|
||||
echo "version=$(pnpm surfer get version | xargs)" >> $GITHUB_OUTPUT
|
||||
if [[ $(pnpm surfer get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then
|
||||
echo ">>> Version matches"
|
||||
else
|
||||
echo ">>> Version mismatch"
|
||||
@@ -165,10 +149,6 @@ jobs:
|
||||
sudo apt-get install dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm
|
||||
pip install pycairo testresources
|
||||
|
||||
- name: Disable wasm sandboxing for the sake of my sanity
|
||||
run: |
|
||||
echo "ac_add_options --without-wasm-sandboxed-libraries" >> mozconfig
|
||||
|
||||
- name: Free up space
|
||||
run: |
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
@@ -203,25 +183,17 @@ jobs:
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Load gluon CI setup
|
||||
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Download firefox source and dependencies
|
||||
run: pnpm gluon download
|
||||
run: pnpm surfer download
|
||||
|
||||
- name: Import
|
||||
run: pnpm gluon import
|
||||
run: pnpm surfer import
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
@@ -230,7 +202,9 @@ jobs:
|
||||
cd ..
|
||||
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
run: |
|
||||
export ZEN_RELEASE=1
|
||||
pnpm build
|
||||
|
||||
- name: Package
|
||||
run: pnpm package
|
||||
@@ -288,16 +262,11 @@ jobs:
|
||||
run: |
|
||||
pnpm i
|
||||
|
||||
- name: Load gluon CI setup
|
||||
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Download
|
||||
run: pnpm gluon download
|
||||
|
||||
- name: Disable wasm sandboxing for the sake of my sanity
|
||||
run: |
|
||||
cd engine/
|
||||
echo "ac_add_options --without-wasm-sandboxed-libraries" >> mozconfig
|
||||
run: pnpm surfer download
|
||||
|
||||
- name: Free up space
|
||||
run: |
|
||||
@@ -327,14 +296,16 @@ jobs:
|
||||
|
||||
cd ..
|
||||
npm install -g pnpm
|
||||
pnpm gluon bootstrap
|
||||
export SURFER_PLATFORM="win32"
|
||||
pnpm surfer bootstrap
|
||||
|
||||
cd engine/
|
||||
ls ~/.mozbuild/clang/lib/clang/
|
||||
echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig
|
||||
cat ../configs/common/mozconfig
|
||||
|
||||
ls ~/win-cross/nsis || true
|
||||
ls ~/win-cross/wine || true
|
||||
ls ~/win-cross/vs2022 || true
|
||||
|
||||
- name: setup Rust
|
||||
run: |
|
||||
@@ -351,26 +322,25 @@ jobs:
|
||||
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
|
||||
|
||||
- name: Import
|
||||
run: pnpm gluon import --verbose
|
||||
run: pnpm surfer import --verbose
|
||||
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
run: |
|
||||
unset SURFER_PLATFORM
|
||||
export ZEN_RELEASE=1
|
||||
export ZEN_CROSS_COMPILING=1
|
||||
pnpm build
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
set -x
|
||||
export SURFER_PLATFORM="win32"
|
||||
pnpm package
|
||||
mv ./dist/output.mar windows.mar
|
||||
mv ./dist/zen-$(pnpm gluon get version | xargs).en-US.win64.zip zen.win64.zip
|
||||
mv ./dist/zen-$(pnpm surfer get version | xargs).en-US.win64.zip zen.win64.zip
|
||||
ls ./dist
|
||||
ls .
|
||||
|
||||
#- name: Upload artifact
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: zen.installer.exe
|
||||
# path: ./dist/zen.installer.exe
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
@@ -383,6 +353,18 @@ jobs:
|
||||
name: windows.mar
|
||||
path: ./windows.mar
|
||||
|
||||
- name: Upload installer
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: zen.installer.exe
|
||||
path: ./dist/zen.installer.exe
|
||||
|
||||
- name: Upload installer stub
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: zen.installer.pretty.exe
|
||||
path: ./dist/zen.installer.pretty.exe
|
||||
|
||||
- name: Upload update manifests
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
@@ -422,14 +404,14 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Load gluon CI setup
|
||||
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Download firefox source and dependancies
|
||||
run: pnpm gluon download --verbose
|
||||
run: pnpm surfer download --verbose
|
||||
|
||||
- name: Import
|
||||
run: pnpm gluon import --verbose
|
||||
run: pnpm surfer import --verbose
|
||||
|
||||
- name: Compress
|
||||
run: |
|
||||
@@ -445,8 +427,7 @@ jobs:
|
||||
path: ./zen.source.tar.gz
|
||||
|
||||
mac:
|
||||
if: false
|
||||
runs-on: macos-13
|
||||
runs-on: macos-14
|
||||
needs: [build-data, check-release]
|
||||
|
||||
steps:
|
||||
@@ -493,24 +474,16 @@ jobs:
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
- name: Load gluon CI setup
|
||||
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Download firefox source and dependancies
|
||||
run: pnpm gluon download
|
||||
run: pnpm surfer download
|
||||
|
||||
- name: Import
|
||||
run: pnpm gluon import
|
||||
run: pnpm surfer import
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
@@ -518,8 +491,10 @@ jobs:
|
||||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
|
||||
- name: Gluon build
|
||||
run: pnpm build --verbose
|
||||
- name: surfer build
|
||||
run: |
|
||||
export ZEN_RELEASE=1
|
||||
pnpm build --verbose
|
||||
|
||||
- name: Package
|
||||
run: pnpm package
|
||||
@@ -551,7 +526,7 @@ jobs:
|
||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||
permissions: write-all
|
||||
name: Release
|
||||
needs: [build-data, linux, source, windows, check-release]
|
||||
needs: [build-data, linux, source, windows, check-release, mac]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -566,9 +541,8 @@ jobs:
|
||||
- name: release-github
|
||||
uses: 'marvinpinto/action-automatic-releases@latest'
|
||||
with:
|
||||
repo_token: '${{ secrets.GITHUB_TOKEN }}'
|
||||
repo_token: '${{ secrets.DEPLOY_KEY }}'
|
||||
automatic_release_tag: ${{ needs.build-data.outputs.version }}
|
||||
prerelease: true
|
||||
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
|
||||
files: |
|
||||
zen.linux.tar.bz2
|
||||
@@ -576,29 +550,66 @@ jobs:
|
||||
zen.source.tar.gz
|
||||
linux.mar
|
||||
windows.mar
|
||||
macos.mar
|
||||
zen.installer.exe
|
||||
zen.installer.pretty.exe
|
||||
zen.macos.dmg
|
||||
|
||||
- name: List
|
||||
run: find .
|
||||
|
||||
- name: Checkout tools repo
|
||||
- name: Clone updates repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: zen-browser/desktop
|
||||
path: updates
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Pull tools repo
|
||||
run: git pull && git checkout main
|
||||
repository: zen-browser/updates-server
|
||||
path: updates-server
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Copy update manifests
|
||||
run: |
|
||||
mkdir -p updates/updates
|
||||
cp -a linux_update_manifest/. updates/updates/
|
||||
cp -a windows_update_manifest/. updates/updates/
|
||||
cd updates-server
|
||||
mkdir -p updates
|
||||
cp -a ../linux_update_manifest/. updates/
|
||||
cp -a ../windows_update_manifest/. updates/
|
||||
cp -a ../macos_update_manifest/. updates/
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: 🔖 Upload update manifests ${{ needs.build-data.outputs.version }}
|
||||
commit_message: 🚀 Update update manifests
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
repository: ./updates
|
||||
repository: ./updates-server
|
||||
|
||||
distro-flatpak:
|
||||
name: Build flatpak repos
|
||||
needs: [release]
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: bilelmoussaoui/flatpak-github-actions:gnome-44
|
||||
options: --privileged
|
||||
if: ${{ github.event.inputs.create_release == 'true' && false }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: zen-browser/flatpak
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
submodules: recursive
|
||||
|
||||
- name: Ensure repo is on main branch
|
||||
run: |
|
||||
cd flatpak
|
||||
git checkout main
|
||||
git pull
|
||||
|
||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||
with:
|
||||
bundle: org.zen.browser.flatpak
|
||||
manifest-path: flatpak/org.zen.browser.flatpak.json
|
||||
cache-key: flatpak-builder-${{ github.sha }}
|
||||
|
||||
- name: Upload flatpak repo
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: flatpak-repo
|
||||
path: flatpak/repo
|
||||
|
22
.github/workflows/src/windows_mozconfig
vendored
22
.github/workflows/src/windows_mozconfig
vendored
@@ -10,10 +10,26 @@ export WINEDEBUG=-all
|
||||
ac_add_options --target=x86_64-pc-windows-msvc
|
||||
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export MOZ_MAINTENANCE_SERVICE=
|
||||
|
||||
export MOZ_PKG_FORMAT=TAR
|
||||
export MOZ_LTO=cross
|
||||
|
||||
export CROSS_BUILD=1
|
||||
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"
|
||||
TOOLS=$(echo ~)/win-cross
|
||||
|
||||
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"
|
||||
|
||||
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=x86-64"
|
||||
|
||||
ac_add_options --enable-default-browser-agent
|
||||
ac_add_options --enable-install-strip
|
||||
ac_add_options --enable-jxl
|
||||
ac_add_options --disable-maintenance-service
|
||||
|
||||
ac_add_options --disable-bits-download
|
||||
|
||||
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
|
||||
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,7 +3,7 @@
|
||||
engine/
|
||||
firefox-*/
|
||||
node_modules/
|
||||
.gluon/
|
||||
.surfer/
|
||||
|
||||
__pycache__/
|
||||
dist/
|
373
LICENSE
Normal file
373
LICENSE
Normal file
@@ -0,0 +1,373 @@
|
||||
Mozilla Public License Version 2.0
|
||||
==================================
|
||||
|
||||
1. Definitions
|
||||
--------------
|
||||
|
||||
1.1. "Contributor"
|
||||
means each individual or legal entity that creates, contributes to
|
||||
the creation of, or owns Covered Software.
|
||||
|
||||
1.2. "Contributor Version"
|
||||
means the combination of the Contributions of others (if any) used
|
||||
by a Contributor and that particular Contributor's Contribution.
|
||||
|
||||
1.3. "Contribution"
|
||||
means Covered Software of a particular Contributor.
|
||||
|
||||
1.4. "Covered Software"
|
||||
means Source Code Form to which the initial Contributor has attached
|
||||
the notice in Exhibit A, the Executable Form of such Source Code
|
||||
Form, and Modifications of such Source Code Form, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.5. "Incompatible With Secondary Licenses"
|
||||
means
|
||||
|
||||
(a) that the initial Contributor has attached the notice described
|
||||
in Exhibit B to the Covered Software; or
|
||||
|
||||
(b) that the Covered Software was made available under the terms of
|
||||
version 1.1 or earlier of the License, but not also under the
|
||||
terms of a Secondary License.
|
||||
|
||||
1.6. "Executable Form"
|
||||
means any form of the work other than Source Code Form.
|
||||
|
||||
1.7. "Larger Work"
|
||||
means a work that combines Covered Software with other material, in
|
||||
a separate file or files, that is not Covered Software.
|
||||
|
||||
1.8. "License"
|
||||
means this document.
|
||||
|
||||
1.9. "Licensable"
|
||||
means having the right to grant, to the maximum extent possible,
|
||||
whether at the time of the initial grant or subsequently, any and
|
||||
all of the rights conveyed by this License.
|
||||
|
||||
1.10. "Modifications"
|
||||
means any of the following:
|
||||
|
||||
(a) any file in Source Code Form that results from an addition to,
|
||||
deletion from, or modification of the contents of Covered
|
||||
Software; or
|
||||
|
||||
(b) any new file in Source Code Form that contains any Covered
|
||||
Software.
|
||||
|
||||
1.11. "Patent Claims" of a Contributor
|
||||
means any patent claim(s), including without limitation, method,
|
||||
process, and apparatus claims, in any patent Licensable by such
|
||||
Contributor that would be infringed, but for the grant of the
|
||||
License, by the making, using, selling, offering for sale, having
|
||||
made, import, or transfer of either its Contributions or its
|
||||
Contributor Version.
|
||||
|
||||
1.12. "Secondary License"
|
||||
means either the GNU General Public License, Version 2.0, the GNU
|
||||
Lesser General Public License, Version 2.1, the GNU Affero General
|
||||
Public License, Version 3.0, or any later versions of those
|
||||
licenses.
|
||||
|
||||
1.13. "Source Code Form"
|
||||
means the form of the work preferred for making modifications.
|
||||
|
||||
1.14. "You" (or "Your")
|
||||
means an individual or a legal entity exercising rights under this
|
||||
License. For legal entities, "You" includes any entity that
|
||||
controls, is controlled by, or is under common control with You. For
|
||||
purposes of this definition, "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or beneficial
|
||||
ownership of such entity.
|
||||
|
||||
2. License Grants and Conditions
|
||||
--------------------------------
|
||||
|
||||
2.1. Grants
|
||||
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or trademark)
|
||||
Licensable by such Contributor to use, reproduce, make available,
|
||||
modify, display, perform, distribute, and otherwise exploit its
|
||||
Contributions, either on an unmodified basis, with Modifications, or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
||||
for sale, have made, import, and otherwise transfer either its
|
||||
Contributions or its Contributor Version.
|
||||
|
||||
2.2. Effective Date
|
||||
|
||||
The licenses granted in Section 2.1 with respect to any Contribution
|
||||
become effective for each Contribution on the date the Contributor first
|
||||
distributes such Contribution.
|
||||
|
||||
2.3. Limitations on Grant Scope
|
||||
|
||||
The licenses granted in this Section 2 are the only rights granted under
|
||||
this License. No additional rights or licenses will be implied from the
|
||||
distribution or licensing of Covered Software under this License.
|
||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||
Contributor:
|
||||
|
||||
(a) for any code that a Contributor has removed from Covered Software;
|
||||
or
|
||||
|
||||
(b) for infringements caused by: (i) Your and any other third party's
|
||||
modifications of Covered Software, or (ii) the combination of its
|
||||
Contributions with other software (except as part of its Contributor
|
||||
Version); or
|
||||
|
||||
(c) under Patent Claims infringed by Covered Software in the absence of
|
||||
its Contributions.
|
||||
|
||||
This License does not grant any rights in the trademarks, service marks,
|
||||
or logos of any Contributor (except as may be necessary to comply with
|
||||
the notice requirements in Section 3.4).
|
||||
|
||||
2.4. Subsequent Licenses
|
||||
|
||||
No Contributor makes additional grants as a result of Your choice to
|
||||
distribute the Covered Software under a subsequent version of this
|
||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||
permitted under the terms of Section 3.3).
|
||||
|
||||
2.5. Representation
|
||||
|
||||
Each Contributor represents that the Contributor believes its
|
||||
Contributions are its original creation(s) or it has sufficient rights
|
||||
to grant the rights to its Contributions conveyed by this License.
|
||||
|
||||
2.6. Fair Use
|
||||
|
||||
This License is not intended to limit any rights You have under
|
||||
applicable copyright doctrines of fair use, fair dealing, or other
|
||||
equivalents.
|
||||
|
||||
2.7. Conditions
|
||||
|
||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
||||
in Section 2.1.
|
||||
|
||||
3. Responsibilities
|
||||
-------------------
|
||||
|
||||
3.1. Distribution of Source Form
|
||||
|
||||
All distribution of Covered Software in Source Code Form, including any
|
||||
Modifications that You create or to which You contribute, must be under
|
||||
the terms of this License. You must inform recipients that the Source
|
||||
Code Form of the Covered Software is governed by the terms of this
|
||||
License, and how they can obtain a copy of this License. You may not
|
||||
attempt to alter or restrict the recipients' rights in the Source Code
|
||||
Form.
|
||||
|
||||
3.2. Distribution of Executable Form
|
||||
|
||||
If You distribute Covered Software in Executable Form then:
|
||||
|
||||
(a) such Covered Software must also be made available in Source Code
|
||||
Form, as described in Section 3.1, and You must inform recipients of
|
||||
the Executable Form how they can obtain a copy of such Source Code
|
||||
Form by reasonable means in a timely manner, at a charge no more
|
||||
than the cost of distribution to the recipient; and
|
||||
|
||||
(b) You may distribute such Executable Form under the terms of this
|
||||
License, or sublicense it under different terms, provided that the
|
||||
license for the Executable Form does not attempt to limit or alter
|
||||
the recipients' rights in the Source Code Form under this License.
|
||||
|
||||
3.3. Distribution of a Larger Work
|
||||
|
||||
You may create and distribute a Larger Work under terms of Your choice,
|
||||
provided that You also comply with the requirements of this License for
|
||||
the Covered Software. If the Larger Work is a combination of Covered
|
||||
Software with a work governed by one or more Secondary Licenses, and the
|
||||
Covered Software is not Incompatible With Secondary Licenses, this
|
||||
License permits You to additionally distribute such Covered Software
|
||||
under the terms of such Secondary License(s), so that the recipient of
|
||||
the Larger Work may, at their option, further distribute the Covered
|
||||
Software under the terms of either this License or such Secondary
|
||||
License(s).
|
||||
|
||||
3.4. Notices
|
||||
|
||||
You may not remove or alter the substance of any license notices
|
||||
(including copyright notices, patent notices, disclaimers of warranty,
|
||||
or limitations of liability) contained within the Source Code Form of
|
||||
the Covered Software, except that You may alter any license notices to
|
||||
the extent required to remedy known factual inaccuracies.
|
||||
|
||||
3.5. Application of Additional Terms
|
||||
|
||||
You may choose to offer, and to charge a fee for, warranty, support,
|
||||
indemnity or liability obligations to one or more recipients of Covered
|
||||
Software. However, You may do so only on Your own behalf, and not on
|
||||
behalf of any Contributor. You must make it absolutely clear that any
|
||||
such warranty, support, indemnity, or liability obligation is offered by
|
||||
You alone, and You hereby agree to indemnify every Contributor for any
|
||||
liability incurred by such Contributor as a result of warranty, support,
|
||||
indemnity or liability terms You offer. You may include additional
|
||||
disclaimers of warranty and limitations of liability specific to any
|
||||
jurisdiction.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation
|
||||
---------------------------------------------------
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Software due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description must
|
||||
be placed in a text file included with all distributions of the Covered
|
||||
Software under this License. Except to the extent prohibited by statute
|
||||
or regulation, such description must be sufficiently detailed for a
|
||||
recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Termination
|
||||
--------------
|
||||
|
||||
5.1. The rights granted under this License will terminate automatically
|
||||
if You fail to comply with any of its terms. However, if You become
|
||||
compliant, then the rights granted under this License from a particular
|
||||
Contributor are reinstated (a) provisionally, unless and until such
|
||||
Contributor explicitly and finally terminates Your grants, and (b) on an
|
||||
ongoing basis, if such Contributor fails to notify You of the
|
||||
non-compliance by some reasonable means prior to 60 days after You have
|
||||
come back into compliance. Moreover, Your grants from a particular
|
||||
Contributor are reinstated on an ongoing basis if such Contributor
|
||||
notifies You of the non-compliance by some reasonable means, this is the
|
||||
first time You have received notice of non-compliance with this License
|
||||
from such Contributor, and You become compliant prior to 30 days after
|
||||
Your receipt of the notice.
|
||||
|
||||
5.2. If You initiate litigation against any entity by asserting a patent
|
||||
infringement claim (excluding declaratory judgment actions,
|
||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||
directly or indirectly infringes any patent, then the rights granted to
|
||||
You by any and all Contributors for the Covered Software under Section
|
||||
2.1 of this License shall terminate.
|
||||
|
||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
||||
end user license agreements (excluding distributors and resellers) which
|
||||
have been validly granted by You or Your distributors under this License
|
||||
prior to termination shall survive termination.
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 6. Disclaimer of Warranty *
|
||||
* ------------------------- *
|
||||
* *
|
||||
* Covered Software is provided under this License on an "as is" *
|
||||
* basis, without warranty of any kind, either expressed, implied, or *
|
||||
* statutory, including, without limitation, warranties that the *
|
||||
* Covered Software is free of defects, merchantable, fit for a *
|
||||
* particular purpose or non-infringing. The entire risk as to the *
|
||||
* quality and performance of the Covered Software is with You. *
|
||||
* Should any Covered Software prove defective in any respect, You *
|
||||
* (not any Contributor) assume the cost of any necessary servicing, *
|
||||
* repair, or correction. This disclaimer of warranty constitutes an *
|
||||
* essential part of this License. No use of any Covered Software is *
|
||||
* authorized under this License except under this disclaimer. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 7. Limitation of Liability *
|
||||
* -------------------------- *
|
||||
* *
|
||||
* Under no circumstances and under no legal theory, whether tort *
|
||||
* (including negligence), contract, or otherwise, shall any *
|
||||
* Contributor, or anyone who distributes Covered Software as *
|
||||
* permitted above, be liable to You for any direct, indirect, *
|
||||
* special, incidental, or consequential damages of any character *
|
||||
* including, without limitation, damages for lost profits, loss of *
|
||||
* goodwill, work stoppage, computer failure or malfunction, or any *
|
||||
* and all other commercial damages or losses, even if such party *
|
||||
* shall have been informed of the possibility of such damages. This *
|
||||
* limitation of liability shall not apply to liability for death or *
|
||||
* personal injury resulting from such party's negligence to the *
|
||||
* extent applicable law prohibits such limitation. Some *
|
||||
* jurisdictions do not allow the exclusion or limitation of *
|
||||
* incidental or consequential damages, so this exclusion and *
|
||||
* limitation may not apply to You. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
8. Litigation
|
||||
-------------
|
||||
|
||||
Any litigation relating to this License may be brought only in the
|
||||
courts of a jurisdiction where the defendant maintains its principal
|
||||
place of business and such litigation shall be governed by laws of that
|
||||
jurisdiction, without reference to its conflict-of-law provisions.
|
||||
Nothing in this Section shall prevent a party's ability to bring
|
||||
cross-claims or counter-claims.
|
||||
|
||||
9. Miscellaneous
|
||||
----------------
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. Any law or regulation which provides
|
||||
that the language of a contract shall be construed against the drafter
|
||||
shall not be used to construe this License against a Contributor.
|
||||
|
||||
10. Versions of the License
|
||||
---------------------------
|
||||
|
||||
10.1. New Versions
|
||||
|
||||
Mozilla Foundation is the license steward. Except as provided in Section
|
||||
10.3, no one other than the license steward has the right to modify or
|
||||
publish new versions of this License. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
10.2. Effect of New Versions
|
||||
|
||||
You may distribute the Covered Software under the terms of the version
|
||||
of the License under which You originally received the Covered Software,
|
||||
or under the terms of any subsequent version published by the license
|
||||
steward.
|
||||
|
||||
10.3. Modified Versions
|
||||
|
||||
If you create software not governed by this License, and you want to
|
||||
create a new license for such software, you may create and use a
|
||||
modified version of this License if you rename the license and remove
|
||||
any references to the name of the license steward (except to note that
|
||||
such modified license differs from this License).
|
||||
|
||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||
Licenses
|
||||
|
||||
If You choose to distribute Source Code Form that is Incompatible With
|
||||
Secondary Licenses under the terms of this version of the License, the
|
||||
notice described in Exhibit B of this License must be attached.
|
||||
|
||||
Exhibit A - Source Code Form License Notice
|
||||
-------------------------------------------
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular
|
||||
file, then You may include the notice in a location (such as a LICENSE
|
||||
file in a relevant directory) where a recipient would be likely to look
|
||||
for such a notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||
---------------------------------------------------------
|
||||
|
||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||
defined by the Mozilla Public License, v. 2.0.
|
@@ -5,7 +5,9 @@ Experience tranquillity while browsing the web without people tracking you!
|
||||
|
||||
# Compatibility
|
||||
|
||||
Zen is currently built using firefox version `127.0.2`!
|
||||
Zen is currently built using firefox version `128.0`!
|
||||
|
||||
* Checkout the latest [releases notes](https://get-zen.vercel.app/release-notes)!
|
||||
|
||||
## 🚀 Run Locally
|
||||
|
||||
@@ -25,7 +27,7 @@ npm i
|
||||
Download and bootstrap the browser
|
||||
|
||||
```
|
||||
npm run bootstrap
|
||||
npm run init
|
||||
```
|
||||
|
||||
Start building the browser
|
||||
@@ -51,5 +53,5 @@ Please adhere to this project's `code of conduct`.
|
||||
|
||||
## License
|
||||
|
||||
[MPL LICENSE](https://choosealicense.com/licenses/mit/)
|
||||
[MPL LICENSE](/LICENSE)
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<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" />
|
||||
<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: 228 B After Width: | Height: | Size: 226 B |
@@ -1,11 +1,13 @@
|
||||
|
||||
# Browser branding
|
||||
ac_add_options --enable-update-channel=release
|
||||
ac_add_options --with-ccache=sccache
|
||||
ac_add_options --without-wasm-sandboxed-libraries
|
||||
|
||||
# ac_add_options --with-branding=beta
|
||||
ac_add_options --with-branding=${brandingDir}
|
||||
|
||||
ac_add_options --with-app-name=${binName}
|
||||
ac_add_options --with-app-basename=Zen
|
||||
|
||||
export MOZ_USER_DIR="${name}"
|
||||
export MOZ_APP_VENDOR="${vendor}"
|
||||
export MOZ_APP_BASENAME=Zen
|
||||
@@ -15,6 +17,7 @@ export MOZ_BRANDING_DIRECTORY=${brandingDir}
|
||||
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
|
||||
export MOZ_MACBUNDLE_ID=${appId}
|
||||
export MOZ_DISTRIBUTION_ID=${appId}
|
||||
export MOZ_MACBUNDLE_NAME="Zen Browser.app"
|
||||
|
||||
# Uncomment if builds are too resource hungry
|
||||
# mk_add_options MOZ_MAKE_FLAGS="-j4"
|
||||
@@ -22,11 +25,82 @@ export MOZ_DISTRIBUTION_ID=${appId}
|
||||
|
||||
# Misc
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
|
||||
export MOZ_SOURCE_CHANGESET=${changeset}
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
|
||||
ac_add_options --enable-bootstrap
|
||||
|
||||
ac_add_options --enable-application=browser
|
||||
|
||||
if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-debug-symbols
|
||||
ac_add_options --disable-debug-js-modules
|
||||
ac_add_options --disable-tests
|
||||
ac_add_options --enable-strip
|
||||
ac_add_options --enable-install-strip
|
||||
ac_add_options --enable-lto=full
|
||||
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --disable-parental-controls
|
||||
ac_add_options --disable-crashreporter
|
||||
ac_add_options --enable-jemalloc
|
||||
mk_add_options MOZ_PARALLEL_COMPILE=1
|
||||
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
|
||||
|
||||
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --enable-sandbox
|
||||
|
||||
ac_add_options --disable-crashreporter
|
||||
ac_add_options --disable-dmd
|
||||
ac_add_options --disable-geckodriver
|
||||
ac_add_options --disable-profiling
|
||||
|
||||
ac_add_options --enable-lto
|
||||
|
||||
mk_add_options MOZILLA_OFFICIAL=1
|
||||
|
||||
MOZILLA_OFFICIAL=1
|
||||
export MOZILLA_OFFICIAL=1
|
||||
mk_add_options MOZ_OPTIMIZE=1
|
||||
MOZ_OPTIMIZE=1
|
||||
export MOZ_OPTIMIZE=1
|
||||
|
||||
export OPT_LEVEL="3"
|
||||
ac_add_options OPT_LEVEL="3"
|
||||
export RUSTC_OPT_LEVEL="3"
|
||||
ac_add_options RUSTC_OPT_LEVEL="3"
|
||||
|
||||
export MOZ_LTO=1
|
||||
ac_add_options MOZ_LTO=1
|
||||
fi
|
||||
|
||||
ac_add_options --enable-unverified-updates
|
||||
ac_add_options --enable-updater
|
||||
|
||||
ac_add_options --enable-raw
|
||||
ac_add_options --enable-webrtc
|
||||
ac_add_options --enable-jxl
|
||||
ac_add_options --enable-av1
|
||||
ac_add_options --enable-eme=widevine
|
||||
|
||||
ac_add_options --without-wasm-sandboxed-libraries
|
||||
|
||||
export MOZ_REQUIRE_SIGNING=
|
||||
export MOZ_TELEMETRY_REPORTING=
|
||||
|
||||
if test "$ZEN_CROSS_COMPILING"; then
|
||||
ac_add_options --target=x86_64-pc-linux-gnu
|
||||
fi
|
||||
|
||||
export MOZ_APP_UA_NAME="Firefox"
|
||||
|
||||
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
|
||||
|
||||
|
@@ -1,12 +1,29 @@
|
||||
# Optimise builds
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --with-ccache=sccache
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --enable-updater
|
||||
ac_add_options --enable-wasm-avx
|
||||
|
||||
# not when cross compiling
|
||||
if ! test "$ZEN_CROSS_COMPILING"; then
|
||||
if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --enable-optimize="-march=x86-64 -msse3 -mtune=haswell -O3 -w"
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --disable-elf-hack
|
||||
ac_add_options RUSTC_OPT_LEVEL=3
|
||||
export MOZILLA_OFFICIAL=1
|
||||
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=x86-64"
|
||||
fi
|
||||
|
||||
if test -d "$HOME/.mozbuild/clang/bin"; then
|
||||
export CC="$HOME"/.mozbuild/clang/bin/clang
|
||||
export CXX="$HOME"/.mozbuild/clang/bin/clang++
|
||||
else
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
fi
|
||||
|
||||
ac_add_options --enable-linker=lld
|
||||
ac_add_options --enable-strip
|
||||
export STRIP_FLAGS="--strip-debug --strip-unneeded"
|
||||
fi
|
||||
|
||||
# Disable telemetry and tracking
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
||||
|
@@ -1,14 +1,15 @@
|
||||
# Optimise builds
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --with-ccache=sccache
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --enable-updater
|
||||
mk_add_options MOZ_MAKE_FLAGS="-j4"
|
||||
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"
|
||||
|
||||
# Disable telemetry and tracking
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
||||
mk_add_options MOZ_DATA_REPORTING=
|
||||
if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --enable-optimize="-mcpu=apple-m1 -O3 -w"
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options RUSTC_OPT_LEVEL=3
|
||||
export MOZILLA_OFFICIAL=1
|
||||
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=apple-m1"
|
||||
fi
|
||||
|
||||
ac_add_options --enable-install-strip
|
||||
ac_add_options --target=aarch64-apple-darwin
|
||||
mk_add_options AUTOCLOBBER=1
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
|
@@ -1,8 +1,6 @@
|
||||
ac_add_options --target=x86_64-pc-mingw32
|
||||
|
||||
ac_add_options --enable-js-shell
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-crashreporter
|
||||
|
||||
# Disable telemetry and tracking
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
||||
mk_add_options MOZ_DATA_REPORTING=
|
||||
mk_add_options MOZ_DATA_REPORTING=
|
||||
|
5
docs/runners.md
Normal file
5
docs/runners.md
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
# Warp Build
|
||||
|
||||
For linux, we are using [warpbuild](https://warpbuild.com/) because github workflows can't handle building firefox :(
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Zen Side Panels
|
||||
|
||||
The `zen.sizepanels.data` configuration will be a JSON string that follows the following data:
|
||||
The `zen.sidepanels.data` configuration will be a JSON string that follows the following data:
|
||||
|
||||
```json
|
||||
{
|
||||
|
19
docs/workspaces.md
Normal file
19
docs/workspaces.md
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
# Workspaces Layout
|
||||
|
||||
```
|
||||
{
|
||||
"workspaces": [
|
||||
{
|
||||
"uuid": "uuid1",
|
||||
"name": "workspace1",
|
||||
"icon": "icon1",
|
||||
"default": true
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
To save the tabs and identity them, they will contain a `zen-workspace-uuid` attribute with the workspace uuid.
|
||||
|
||||
We will make use of firefox's builtin session restore feature to save the tabs and windows after the user closes the browser.
|
2147
package-lock.json
generated
2147
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@@ -3,14 +3,16 @@
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"scripts": {
|
||||
"build": "gluon build",
|
||||
"build": "surfer build",
|
||||
"build:ui": "surfer build --ui",
|
||||
"start": "cd engine && ./mach run --noprofile",
|
||||
"import": "gluon import",
|
||||
"export": "gluon export",
|
||||
"bootstrap": "gluon download && gluon bootstrap",
|
||||
"package": "gluon package",
|
||||
"import": "surfer import",
|
||||
"export": "surfer export",
|
||||
"init": "npm run bootstrap && npm run import",
|
||||
"bootstrap": "surfer download && surfer bootstrap",
|
||||
"package": "surfer package",
|
||||
"update-ff": "python3 scripts/update_ff.py",
|
||||
"update-ff:raw": "gluon update",
|
||||
"update-ff:raw": "surfer update",
|
||||
"update-newtab": "python3 update_newtab.py"
|
||||
},
|
||||
"repository": {
|
||||
@@ -25,6 +27,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/zen-browser/core#readme",
|
||||
"dependencies": {
|
||||
"gluon-build": "next"
|
||||
"@zen-browser/surfer": "^1.0.14"
|
||||
}
|
||||
}
|
||||
|
105
pnpm-lock.yaml
generated
105
pnpm-lock.yaml
generated
@@ -8,9 +8,9 @@ importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
gluon-build:
|
||||
specifier: next
|
||||
version: 1.0.0-rc.5
|
||||
'@zen-browser/surfer':
|
||||
specifier: ^1.0.14
|
||||
version: 1.0.14
|
||||
|
||||
packages:
|
||||
|
||||
@@ -109,6 +109,10 @@ packages:
|
||||
'@types/node@17.0.45':
|
||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||
|
||||
'@zen-browser/surfer@1.0.14':
|
||||
resolution: {integrity: sha512-m7RWU4LqGuC4UvEAkho5H41b8T2zMZhN/dBrm+xugZ+rGRAHcw0NMjE3YDsjDr0/r3ZcKw4INPZGhhgSwIs2TA==}
|
||||
hasBin: true
|
||||
|
||||
ansi-regex@5.0.1:
|
||||
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -169,8 +173,8 @@ packages:
|
||||
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
|
||||
engines: {node: ^12.20.0 || >=14}
|
||||
|
||||
core-js-pure@3.37.0:
|
||||
resolution: {integrity: sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==}
|
||||
core-js-pure@3.37.1:
|
||||
resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==}
|
||||
|
||||
cross-spawn@7.0.3:
|
||||
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
|
||||
@@ -236,10 +240,6 @@ packages:
|
||||
globrex@0.1.2:
|
||||
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
|
||||
|
||||
gluon-build@1.0.0-rc.5:
|
||||
resolution: {integrity: sha512-TJMv24pMQPo3eXQLacJ9xS1qcwPt/WERw9xTQImbnXWCe9dn6d0nAD9FamVZXZvNU7jzPcObjoPXytwTP1yCWw==}
|
||||
hasBin: true
|
||||
|
||||
graceful-fs@4.2.11:
|
||||
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
||||
|
||||
@@ -297,10 +297,6 @@ packages:
|
||||
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
lru-cache@6.0.0:
|
||||
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
merge-stream@2.0.0:
|
||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||
|
||||
@@ -327,8 +323,8 @@ packages:
|
||||
napi-build-utils@1.0.2:
|
||||
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
|
||||
|
||||
node-abi@3.62.0:
|
||||
resolution: {integrity: sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==}
|
||||
node-abi@3.65.0:
|
||||
resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
node-addon-api@5.1.0:
|
||||
@@ -388,8 +384,8 @@ packages:
|
||||
safe-buffer@5.2.1:
|
||||
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
||||
|
||||
semver@7.6.0:
|
||||
resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
|
||||
semver@7.6.2:
|
||||
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
@@ -478,9 +474,6 @@ packages:
|
||||
resolution: {integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==}
|
||||
engines: {node: '>=12.0'}
|
||||
|
||||
yallist@4.0.0:
|
||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||
|
||||
snapshots:
|
||||
|
||||
'@oozcitak/dom@1.15.10':
|
||||
@@ -553,6 +546,31 @@ snapshots:
|
||||
|
||||
'@types/node@17.0.45': {}
|
||||
|
||||
'@zen-browser/surfer@1.0.14':
|
||||
dependencies:
|
||||
'@resvg/resvg-js': 1.4.0
|
||||
async-icns: 1.0.2
|
||||
axios: 0.21.4
|
||||
chalk: 4.1.2
|
||||
cli-progress: 3.12.0
|
||||
commander: 6.2.1
|
||||
execa: 5.1.1
|
||||
fs-extra: 10.1.0
|
||||
ini: 3.0.1
|
||||
is-apple-silicon: https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a
|
||||
kleur: 4.1.5
|
||||
modern-async: 1.1.4
|
||||
picomatch: 2.3.1
|
||||
png-to-ico: 2.1.8
|
||||
prompts: 2.4.2
|
||||
rustic: 1.2.2
|
||||
semver: 7.6.2
|
||||
sharp: 0.30.7
|
||||
tiny-glob: 0.2.9
|
||||
xmlbuilder2: 3.1.1
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
|
||||
ansi-regex@5.0.1: {}
|
||||
|
||||
ansi-styles@4.3.0:
|
||||
@@ -617,7 +635,7 @@ snapshots:
|
||||
|
||||
commander@9.5.0: {}
|
||||
|
||||
core-js-pure@3.37.0: {}
|
||||
core-js-pure@3.37.1: {}
|
||||
|
||||
cross-spawn@7.0.3:
|
||||
dependencies:
|
||||
@@ -673,31 +691,6 @@ snapshots:
|
||||
|
||||
globrex@0.1.2: {}
|
||||
|
||||
gluon-build@1.0.0-rc.5:
|
||||
dependencies:
|
||||
'@resvg/resvg-js': 1.4.0
|
||||
async-icns: 1.0.2
|
||||
axios: 0.21.4
|
||||
chalk: 4.1.2
|
||||
cli-progress: 3.12.0
|
||||
commander: 6.2.1
|
||||
execa: 5.1.1
|
||||
fs-extra: 10.1.0
|
||||
ini: 3.0.1
|
||||
is-apple-silicon: https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a
|
||||
kleur: 4.1.5
|
||||
modern-async: 1.1.4
|
||||
picomatch: 2.3.1
|
||||
png-to-ico: 2.1.8
|
||||
prompts: 2.4.2
|
||||
rustic: 1.2.2
|
||||
semver: 7.6.0
|
||||
sharp: 0.30.7
|
||||
tiny-glob: 0.2.9
|
||||
xmlbuilder2: 3.1.1
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
|
||||
graceful-fs@4.2.11: {}
|
||||
|
||||
has-flag@4.0.0: {}
|
||||
@@ -737,10 +730,6 @@ snapshots:
|
||||
|
||||
kleur@4.1.5: {}
|
||||
|
||||
lru-cache@6.0.0:
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
|
||||
merge-stream@2.0.0: {}
|
||||
|
||||
mimic-fn@2.1.0: {}
|
||||
@@ -753,16 +742,16 @@ snapshots:
|
||||
|
||||
modern-async@1.1.4:
|
||||
dependencies:
|
||||
core-js-pure: 3.37.0
|
||||
core-js-pure: 3.37.1
|
||||
nanoassert: 2.0.0
|
||||
|
||||
nanoassert@2.0.0: {}
|
||||
|
||||
napi-build-utils@1.0.2: {}
|
||||
|
||||
node-abi@3.62.0:
|
||||
node-abi@3.65.0:
|
||||
dependencies:
|
||||
semver: 7.6.0
|
||||
semver: 7.6.2
|
||||
|
||||
node-addon-api@5.1.0: {}
|
||||
|
||||
@@ -798,7 +787,7 @@ snapshots:
|
||||
minimist: 1.2.8
|
||||
mkdirp-classic: 0.5.3
|
||||
napi-build-utils: 1.0.2
|
||||
node-abi: 3.62.0
|
||||
node-abi: 3.65.0
|
||||
pump: 3.0.0
|
||||
rc: 1.2.8
|
||||
simple-get: 4.0.1
|
||||
@@ -832,9 +821,7 @@ snapshots:
|
||||
|
||||
safe-buffer@5.2.1: {}
|
||||
|
||||
semver@7.6.0:
|
||||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
semver@7.6.2: {}
|
||||
|
||||
sharp@0.30.7:
|
||||
dependencies:
|
||||
@@ -842,7 +829,7 @@ snapshots:
|
||||
detect-libc: 2.0.3
|
||||
node-addon-api: 5.1.0
|
||||
prebuild-install: 7.1.2
|
||||
semver: 7.6.0
|
||||
semver: 7.6.2
|
||||
simple-get: 4.0.1
|
||||
tar-fs: 2.1.1
|
||||
tunnel-agent: 0.6.0
|
||||
@@ -933,5 +920,3 @@ snapshots:
|
||||
'@oozcitak/infra': 1.0.8
|
||||
'@oozcitak/util': 8.3.8
|
||||
js-yaml: 3.14.1
|
||||
|
||||
yallist@4.0.0: {}
|
||||
|
@@ -10,13 +10,13 @@ def update_ff():
|
||||
|
||||
def get_version_before():
|
||||
global last_version
|
||||
with open("gluon.json", "r") as f:
|
||||
with open("surfer.json", "r") as f:
|
||||
data = json.load(f)
|
||||
last_version = data["version"]["version"]
|
||||
|
||||
def get_version_after():
|
||||
global new_version
|
||||
with open("gluon.json", "r") as f:
|
||||
with open("surfer.json", "r") as f:
|
||||
data = json.load(f)
|
||||
new_version = data["version"]["version"]
|
||||
|
||||
|
@@ -1,10 +1,10 @@
|
||||
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
||||
index 27c2d13fbd8599a131de6b70bba581d435198793..25aa7546d57e206b76838bc23b609f602af43a83 100644
|
||||
index b8aa71126c2bb4521caf25f9caf845a8a429dc64..59cdc2e9998e802d6c79ff967eaa30088a3b7a21 100644
|
||||
--- a/browser/app/profile/firefox.js
|
||||
+++ b/browser/app/profile/firefox.js
|
||||
@@ -3061,3 +3061,5 @@ pref("startup.homepage_override_nimbus_maxVersion", "");
|
||||
pref("toolkit.contentRelevancy.enabled", false);
|
||||
// Pref to enable the ingestion through the Rust component.
|
||||
@@ -3110,3 +3110,5 @@ pref("toolkit.contentRelevancy.enabled", false);
|
||||
pref("toolkit.contentRelevancy.ingestEnabled", false);
|
||||
// Pref to enable extra logging for the content relevancy feature
|
||||
pref("toolkit.contentRelevancy.log", false);
|
||||
+
|
||||
+#include zen-browser.js
|
||||
|
@@ -3,6 +3,7 @@
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
pref("browser.tabs.cardPreview.enabled", true);
|
||||
pref("browser.tabs.hoverPreview.enabled", true);
|
||||
pref("browser.tabs.cardPreview.delayMs", 100);
|
||||
|
||||
pref("browser.urlbar.suggest.calculator", true);
|
||||
@@ -37,6 +38,12 @@ pref('browser.display.focus_ring_style', 0);
|
||||
pref('browser.display.focus_ring_width', 0);
|
||||
pref('browser.privateWindowSeparation.enabled', false); // WINDOWS
|
||||
|
||||
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
|
||||
pref('browser.translations.newSettingsUI.enable', true);
|
||||
|
||||
pref("browser.urlbar.trimHttps", true);
|
||||
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
|
||||
|
||||
// Cookie banner handling (reject by default)
|
||||
|
||||
pref('cookiebanners.service.mode', 1);
|
||||
@@ -98,6 +105,15 @@ pref('layout.css.backdrop-filter.enabled', true);
|
||||
pref("alerts.showFavicons", true);
|
||||
pref('browser.toolbars.bookmarks.visibility', 'never');
|
||||
|
||||
// Enable Do Not Track and GPC by default.
|
||||
pref("privacy.donottrackheader.enabled", true);
|
||||
pref("privacy.globalprivacycontrol.enabled", true);
|
||||
// Disable more telemetry
|
||||
pref("toolkit.telemetry.enabled", false);
|
||||
pref("browser.ping-centre.telemetry", false);
|
||||
pref("browser.attribution.enabled", false);
|
||||
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
||||
|
||||
// CUSTOM ZEN PREFS
|
||||
|
||||
pref('zen.welcomeScreen.enabled', true);
|
||||
@@ -134,6 +150,8 @@ pref('dom.enable_web_task_scheduling', true);
|
||||
pref('layout.css.has-selector.enabled', true);
|
||||
pref('dom.security.sanitizer.enabled', true);
|
||||
|
||||
pref('layers.acceleration.force-enabled', true);
|
||||
|
||||
// Pref to enable the new profiles (TODO: Check this out!)
|
||||
//pref("browser.profiles.enabled", true);
|
||||
|
||||
@@ -146,4 +164,4 @@ pref('zen.sidebar.floating', true);
|
||||
pref('zen.splitView.working', false);
|
||||
|
||||
// Zen Workspaces
|
||||
pref('zen.workspaces.enabled', false);
|
||||
pref('zen.workspaces.enabled', true);
|
||||
|
@@ -438,8 +438,7 @@ var gZenBrowserManagerSidebar = {
|
||||
let data = this.sidebarData;
|
||||
let panel = data.data[this.contextTab];
|
||||
let url = (browser == null) ? panel.url : browser.currentURI.spec;
|
||||
let tab = gBrowser.addTrustedTab(url);
|
||||
gBrowser.selectedTab = tab;
|
||||
gZenUIManager.openAndChangeToTab(url);
|
||||
this.close();
|
||||
},
|
||||
|
||||
|
19
src/browser/base/content/ZenUIManager.mjs
Normal file
19
src/browser/base/content/ZenUIManager.mjs
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
var gZenUIManager = {
|
||||
openAndChangeToTab(url, options) {
|
||||
if (window.ownerGlobal.parent) {
|
||||
let tab = window.ownerGlobal.parent.gBrowser.addTrustedTab(url, options);
|
||||
window.ownerGlobal.parent.gBrowser.selectedTab = tab;
|
||||
return tab;
|
||||
}
|
||||
let tab = window.gBrowser.addTrustedTab(url, options);
|
||||
window.gBrowser.selectedTab = tab;
|
||||
return tab;
|
||||
},
|
||||
|
||||
generateUuidv4() {
|
||||
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
|
||||
(+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)
|
||||
);
|
||||
},
|
||||
};
|
@@ -1,6 +1,13 @@
|
||||
|
||||
var ZenWorkspaces = {
|
||||
async init() {
|
||||
let docElement = document.documentElement;
|
||||
if (docElement.getAttribute("chromehidden").includes("toolbar")
|
||||
|| docElement.getAttribute("chromehidden").includes("menubar")) {
|
||||
console.log("!!! ZenWorkspaces is disabled in hidden windows !!!");
|
||||
return; // We are in a hidden window, don't initialize ZenWorkspaces
|
||||
}
|
||||
console.log("Initializing ZenWorkspaces...");
|
||||
await this.initializeWorkspaces();
|
||||
console.log("ZenWorkspaces initialized");
|
||||
},
|
||||
@@ -18,46 +25,356 @@ var ZenWorkspaces = {
|
||||
);
|
||||
},
|
||||
|
||||
async _workspaces() {
|
||||
if (!this._workspaceCache) {
|
||||
this._workspaceCache = await IOUtils.readJSON(this._storeFile);
|
||||
if (!this._workspaceCache.workspaces) {
|
||||
this._workspaceCache.workspaces = [];
|
||||
}
|
||||
}
|
||||
return this._workspaceCache;
|
||||
},
|
||||
|
||||
onWorkspacesEnabledChanged() {
|
||||
if (this.workspaceEnabled) {
|
||||
this.initializeWorkspaces();
|
||||
} else {
|
||||
this._workspaceCache = null;
|
||||
document.getElementById("zen-workspaces-button")?.remove();
|
||||
for (let tab of gBrowser.tabs) {
|
||||
gBrowser.showTab(tab);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
async initializeWorkspaces() {
|
||||
Services.prefs.addObserver("zen.workspaces.enabled", this.onWorkspacesEnabledChanged.bind(this));
|
||||
this.initializeWorkspacesButton();
|
||||
let file = new FileUtils.File(this._storeFile);
|
||||
if (!file.exists()) {
|
||||
await IOUtils.writeJSON(this._storeFile, {});
|
||||
}
|
||||
if (this.workspaceEnabled) {
|
||||
let workspaces = await this._workspaces();
|
||||
console.log("Workspaces loaded", workspaces);
|
||||
if (workspaces.workspaces.length === 0) {
|
||||
await this.createAndSaveWorkspace("Default Workspace", true);
|
||||
} else {
|
||||
let activeWorkspace = workspaces.workspaces.find(workspace => workspace.default);
|
||||
if (!activeWorkspace) {
|
||||
activeWorkspace = workspaces.workspaces.find(workspace => workspace.used);
|
||||
activeWorkspace.used = true;
|
||||
await this.saveWorkspaces();
|
||||
}
|
||||
if (!activeWorkspace) {
|
||||
activeWorkspace = workspaces.workspaces[0];
|
||||
activeWorkspace.used = true;
|
||||
await this.saveWorkspaces();
|
||||
}
|
||||
await this.changeWorkspace(activeWorkspace);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
async saveWorkspace(workspaceData, windowID) {
|
||||
async saveWorkspace(workspaceData) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
json[windowID] = workspaceData;
|
||||
if (typeof json.workspaces === "undefined") {
|
||||
json.workspaces = [];
|
||||
}
|
||||
json.workspaces.push(workspaceData);
|
||||
console.log("Saving workspace", workspaceData);
|
||||
await IOUtils.writeJSON(this._storeFile, json);
|
||||
},
|
||||
|
||||
async loadWorkspace(windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
return json[windowID];
|
||||
this._workspaceCache = null;
|
||||
},
|
||||
|
||||
async removeWorkspace(windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
delete json[windowID];
|
||||
await IOUtils.writeJSON(this._storeFile, json);
|
||||
let json = await this._workspaces();
|
||||
await this.changeWorkspace(json.workspaces.find(workspace => workspace.uuid !== windowID));
|
||||
this._deleteAllTabsInWorkspace(windowID);
|
||||
json.workspaces = json.workspaces.filter(workspace => workspace.uuid !== windowID);
|
||||
await this.unsafeSaveWorkspaces(json);
|
||||
await this._propagateWorkspaceData();
|
||||
},
|
||||
|
||||
async getWorkspaces() {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
return json;
|
||||
async saveWorkspaces() {
|
||||
await IOUtils.writeJSON(this._storeFile, await this._workspaces());
|
||||
this._workspaceCache = null;
|
||||
},
|
||||
|
||||
async getWorkspace(windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
return json[windowID];
|
||||
async unsafeSaveWorkspaces(workspaces) {
|
||||
await IOUtils.writeJSON(this._storeFile, workspaces);
|
||||
this._workspaceCache = null;
|
||||
},
|
||||
|
||||
// Workspaces dialog UI management
|
||||
|
||||
openSaveDialog() {
|
||||
let parentPanel = document.getElementById("PanelUI-zen-workspaces-multiview");
|
||||
PanelUI.showSubView("PanelUI-zen-workspaces-create", parentPanel);
|
||||
},
|
||||
|
||||
cancelWorkspaceCreation() {
|
||||
let parentPanel = document.getElementById("PanelUI-zen-workspaces-multiview");
|
||||
parentPanel.goBack();
|
||||
},
|
||||
|
||||
async _propagateWorkspaceData() {
|
||||
let currentContainer = document.getElementById("PanelUI-zen-workspaces-current-info");
|
||||
let workspaceList = document.getElementById("PanelUI-zen-workspaces-list");
|
||||
const createWorkspaceElement = (workspace) => {
|
||||
let element = document.createXULElement("toolbarbutton");
|
||||
element.className = "subviewbutton";
|
||||
element.setAttribute("tooltiptext", workspace.name);
|
||||
element.setAttribute("zen-workspace-id", workspace.uuid);
|
||||
element.setAttribute("context", "zenWorkspaceActionsMenu");
|
||||
let childs = window.MozXULElement.parseXULToFragment(`
|
||||
<div class="zen-workspace-icon">
|
||||
${workspace.name[0].toUpperCase()}
|
||||
</div>
|
||||
<div class="zen-workspace-name">
|
||||
${workspace.name}
|
||||
</div>
|
||||
<toolbarbutton closemenu="none" class="toolbarbutton-1 zen-workspace-actions">
|
||||
<image class="toolbarbutton-icon" id="zen-workspace-actions-menu-icon"></image>
|
||||
</toolbarbutton>
|
||||
`);
|
||||
childs.querySelector(".zen-workspace-actions").addEventListener("command", (event) => {
|
||||
let button = event.target;
|
||||
const popup = button.ownerDocument.getElementById(
|
||||
"zenWorkspaceActionsMenu"
|
||||
);
|
||||
popup.openPopup(button, "after_end");
|
||||
});
|
||||
element.appendChild(childs);
|
||||
element.onclick = (async () => {
|
||||
if (event.target.closest(".zen-workspace-actions")) {
|
||||
return; // Ignore clicks on the actions button
|
||||
}
|
||||
await this.changeWorkspace(workspace)
|
||||
let panel = document.getElementById("PanelUI-zen-workspaces");
|
||||
PanelMultiView.hidePopup(panel);
|
||||
}).bind(this, workspace);
|
||||
return element;
|
||||
}
|
||||
let workspaces = await this._workspaces();
|
||||
let activeWorkspace = workspaces.workspaces.find(workspace => workspace.used);
|
||||
currentContainer.innerHTML = "";
|
||||
workspaceList.innerHTML = "";
|
||||
workspaceList.parentNode.style.display = "flex";
|
||||
if (workspaces.workspaces.length - 1 <= 0) {
|
||||
workspaceList.parentNode.style.display = "none";
|
||||
}
|
||||
if (activeWorkspace) {
|
||||
let currentWorkspace = createWorkspaceElement(activeWorkspace);
|
||||
currentContainer.appendChild(currentWorkspace);
|
||||
}
|
||||
for (let workspace of workspaces.workspaces) {
|
||||
if (workspace.used) {
|
||||
continue;
|
||||
}
|
||||
let workspaceElement = createWorkspaceElement(workspace);
|
||||
workspaceList.appendChild(workspaceElement);
|
||||
}
|
||||
},
|
||||
|
||||
async openWorkspacesDialog(event) {
|
||||
if (!this.workspaceEnabled) {
|
||||
return;
|
||||
}
|
||||
let target = event.target;
|
||||
let panel = document.getElementById("PanelUI-zen-workspaces");
|
||||
await this._propagateWorkspaceData();
|
||||
PanelMultiView.openPopup(panel, target, {
|
||||
position: "bottomright topright",
|
||||
triggerEvent: event,
|
||||
}).catch(console.error);
|
||||
},
|
||||
|
||||
initializeWorkspacesButton() {
|
||||
if (!this.workspaceEnabled) {
|
||||
return;
|
||||
} else if (document.getElementById("zen-workspaces-button")) {
|
||||
let button = document.getElementById("zen-workspaces-button");
|
||||
button.removeAttribute("hidden");
|
||||
return;
|
||||
}
|
||||
let browserTabs = document.getElementById("tabbrowser-tabs");
|
||||
let button = document.createElement("toolbarbutton");
|
||||
button.id = "zen-workspaces-button";
|
||||
button.className = "toolbarbutton-1 chromeclass-toolbar-additional";
|
||||
button.setAttribute("label", "Workspaces");
|
||||
button.setAttribute("tooltiptext", "Workspaces");
|
||||
button.onclick = this.openWorkspacesDialog.bind(this);
|
||||
browserTabs.insertAdjacentElement("beforebegin", button);
|
||||
},
|
||||
|
||||
async _updateWorkspacesButton() {
|
||||
let button = document.getElementById("zen-workspaces-button");
|
||||
if (!button) {
|
||||
return;
|
||||
}
|
||||
let activeWorkspace = (await this._workspaces()).workspaces.find(workspace => workspace.used);
|
||||
if (activeWorkspace) {
|
||||
button.innerHTML = activeWorkspace.name[0].toUpperCase();
|
||||
}
|
||||
},
|
||||
|
||||
// Workspaces management
|
||||
|
||||
async saveCurrentWorkspace(windowID) {
|
||||
let workspaceData = this._createWorkspaceData(windowID);
|
||||
await this.saveWorkspace(workspaceData, windowID);
|
||||
get _workspaceInput() {
|
||||
return document.getElementById("PanelUI-zen-workspaces-create-input");
|
||||
},
|
||||
|
||||
_deleteAllTabsInWorkspace(workspaceID) {
|
||||
for (let tab of gBrowser.tabs) {
|
||||
if (tab.getAttribute("zen-workspace-id") === workspaceID) {
|
||||
gBrowser.removeTab(tab);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_prepareNewWorkspace(window) {
|
||||
document.documentElement.setAttribute("zen-workspace-id", window.uuid);
|
||||
let tabCount = 0;
|
||||
for (let tab of gBrowser.tabs) {
|
||||
if (!tab.hasAttribute("zen-workspace-id")) {
|
||||
tab.setAttribute("zen-workspace-id", window.uuid);
|
||||
tabCount++;
|
||||
}
|
||||
}
|
||||
if (tabCount === 0) {
|
||||
this._createNewTabForWorkspace(window);
|
||||
}
|
||||
},
|
||||
|
||||
_createNewTabForWorkspace(window) {
|
||||
let tab = gZenUIManager.openAndChangeToTab(Services.prefs.getStringPref("browser.startup.homepage"));
|
||||
tab.setAttribute("zen-workspace-id", window.uuid);
|
||||
},
|
||||
|
||||
async saveWorkspaceFromInput() {
|
||||
let workspaceName = this._workspaceInput.value;
|
||||
if (!workspaceName) {
|
||||
return;
|
||||
}
|
||||
this._workspaceInput.value = "";
|
||||
await this.createAndSaveWorkspace(workspaceName);
|
||||
document.getElementById("PanelUI-zen-workspaces").hidePopup(true);
|
||||
},
|
||||
|
||||
onWorkspaceNameChange(event) {
|
||||
let button = document.getElementById("PanelUI-zen-workspaces-create-save");
|
||||
if (this._workspaceInput.value === "") {
|
||||
button.setAttribute("disabled", "true");
|
||||
return;
|
||||
}
|
||||
button.removeAttribute("disabled");
|
||||
},
|
||||
|
||||
async changeWorkspace(window) {
|
||||
if (!this.workspaceEnabled) {
|
||||
return;
|
||||
}
|
||||
let firstTab = undefined;
|
||||
// Get the number of tabs that are hidden before we start hiding them
|
||||
let numHiddenTabs = gBrowser.tabs.reduce((acc, tab) => {
|
||||
return tab.getAttribute("zen-workspace-id") !== window.uuid ? acc + 1 : acc;
|
||||
}, 0);
|
||||
let workspaces = await this._workspaces();
|
||||
for (let workspace of workspaces.workspaces) {
|
||||
workspace.used = workspace.uuid === window.uuid;
|
||||
}
|
||||
this.unsafeSaveWorkspaces(workspaces);
|
||||
if (numHiddenTabs === gBrowser.tabs.length) {
|
||||
// If all tabs are hidden, we need to create a new tab
|
||||
// to show the workspace
|
||||
this._createNewTabForWorkspace(window);
|
||||
}
|
||||
for (let tab of gBrowser.tabs) {
|
||||
if (tab.getAttribute("zen-workspace-id") === window.uuid) {
|
||||
if (!firstTab) {
|
||||
firstTab = tab;
|
||||
gBrowser.selectedTab = firstTab;
|
||||
}
|
||||
gBrowser.showTab(tab);
|
||||
}
|
||||
}
|
||||
for (let tab of gBrowser.tabs) {
|
||||
if (tab.getAttribute("zen-workspace-id") !== window.uuid) {
|
||||
gBrowser.hideTab(tab);
|
||||
}
|
||||
}
|
||||
document.documentElement.setAttribute("zen-workspace-id", window.uuid);
|
||||
await this.saveWorkspaces();
|
||||
await this._updateWorkspacesButton();
|
||||
await this._propagateWorkspaceData();
|
||||
},
|
||||
|
||||
_createWorkspaceData(name, isDefault) {
|
||||
let window = {
|
||||
uuid: gZenUIManager.generateUuidv4(),
|
||||
default: isDefault,
|
||||
used: true,
|
||||
icon: "",
|
||||
name: name,
|
||||
};
|
||||
this._prepareNewWorkspace(window);
|
||||
return window;
|
||||
},
|
||||
|
||||
async createAndSaveWorkspace(name = "New Workspace", isDefault = false) {
|
||||
if (!this.workspaceEnabled) {
|
||||
return;
|
||||
}
|
||||
let workspaceData = this._createWorkspaceData(name, isDefault);
|
||||
await this.saveWorkspace(workspaceData);
|
||||
await this.changeWorkspace(workspaceData);
|
||||
},
|
||||
|
||||
async onLocationChange(browser) {
|
||||
let tab = gBrowser.getTabForBrowser(browser);
|
||||
let workspaceID = tab.getAttribute("zen-workspace-id");
|
||||
if (!workspaceID) {
|
||||
let workspaces = await this._workspaces();
|
||||
let activeWorkspace = workspaces.workspaces.find(workspace => workspace.used);
|
||||
if (!activeWorkspace) {
|
||||
return;
|
||||
}
|
||||
tab.setAttribute("zen-workspace-id", activeWorkspace.uuid);
|
||||
}
|
||||
},
|
||||
|
||||
// Context menu management
|
||||
|
||||
_contextMenuId: null,
|
||||
async updateContextMenu(event) {
|
||||
let target = event.target;
|
||||
let workspace = target.closest("[zen-workspace-id]");
|
||||
if (!workspace) {
|
||||
return;
|
||||
}
|
||||
_contextMenuId = workspace.getAttribute("zen-workspace-id");
|
||||
document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${_contextMenuId}"] .zen-workspace-actions`).setAttribute("active", "true");
|
||||
const workspaces = await this._workspaces();
|
||||
let deleteMenuItem = document.getElementById("context_zenDeleteWorkspace");
|
||||
if (workspaces.workspaces.length <= 1) {
|
||||
deleteMenuItem.setAttribute("disabled", "true");
|
||||
} else {
|
||||
deleteMenuItem.removeAttribute("disabled");
|
||||
}
|
||||
},
|
||||
|
||||
onContextMenuClose() {
|
||||
let target = document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${_contextMenuId}"] .zen-workspace-actions`);
|
||||
if (target) {
|
||||
target.removeAttribute("active");
|
||||
}
|
||||
this._contextMenuId = null;
|
||||
},
|
||||
|
||||
async contextDelete() {
|
||||
await this.removeWorkspace(_contextMenuId);
|
||||
}
|
||||
};
|
||||
|
||||
ZenWorkspaces.init();
|
||||
|
@@ -1,11 +0,0 @@
|
||||
diff --git a/browser/base/content/appmenu-viewcache.inc.xhtml b/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||
index 07b1765f18236835363fb74c898d3a690659cc9b..7b58cbb5de147ed29fbc48c0093c731fe5cca90b 100644
|
||||
--- a/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||
+++ b/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||
@@ -765,5 +765,6 @@
|
||||
</vbox>
|
||||
</panelview>
|
||||
|
||||
+#include zen-panels-ui.inc.xhtml
|
||||
#include ../../components/reportbrokensite/content/reportBrokenSitePanel.inc.xhtml
|
||||
</html:template>
|
@@ -1,12 +1,10 @@
|
||||
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
||||
index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c5d40d8c4 100644
|
||||
index 16559b2c0e3aef391b43e09281aee24007feb0bd..2579cea92a55fabb73fdd130c3706af08c3fd849 100644
|
||||
--- a/browser/base/content/browser-box.inc.xhtml
|
||||
+++ b/browser/base/content/browser-box.inc.xhtml
|
||||
@@ -18,12 +18,18 @@
|
||||
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
||||
@@ -21,11 +21,15 @@
|
||||
</vbox>
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
+ <vbox id="browser">
|
||||
<vbox id="appcontent" flex="1">
|
||||
+ <html:div id="zen-appcontent-navbar-container"></html:div>
|
||||
<!-- gNotificationBox will be added here lazily. -->
|
||||
@@ -18,6 +16,5 @@ index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c
|
||||
flex="1" selectedIndex="0"/>
|
||||
</tabbox>
|
||||
+ </hbox>
|
||||
+ </vbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
|
||||
index 6e776a9ce7c525e510b6466065daf755b21567a4..8668b27ec2126ed772a11aa77809b6f22ceab7e2 100644
|
||||
index cdd08ec8f3d3cd652be9fcf6d4fb5b50dcf270ba..6cb35378aea2e7967dff0c91d09201b053645fbd 100644
|
||||
--- a/browser/base/content/browser.css
|
||||
+++ b/browser/base/content/browser.css
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -10,32 +10,8 @@ index 6e776a9ce7c525e510b6466065daf755b21567a4..8668b27ec2126ed772a11aa77809b6f2
|
||||
+
|
||||
@namespace html url("http://www.w3.org/1999/xhtml");
|
||||
|
||||
:root,
|
||||
@@ -157,8 +159,6 @@ panelview:not([visible]) {
|
||||
flex: 100 100;
|
||||
max-width: 225px;
|
||||
min-width: var(--tab-min-width);
|
||||
- transition: min-width 100ms ease-out,
|
||||
- max-width 100ms ease-out;
|
||||
}
|
||||
|
||||
:root[uidensity=touch] .tabbrowser-tab:not([pinned]) {
|
||||
@@ -647,12 +647,12 @@ toolbar:not(#TabsToolbar) > #personal-bookmarks {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
|
||||
-#urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action,
|
||||
+#urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action:not(#zen-split-views-box),
|
||||
#identity-box.chromeUI ~ #page-action-buttons > .urlbar-page-action:not(#star-button-box),
|
||||
#urlbar[usertyping] > #urlbar-input-container > #page-action-buttons > #urlbar-zoom-button,
|
||||
#urlbar:not([usertyping]) > #urlbar-input-container > #urlbar-go-button,
|
||||
#urlbar:not([focused]) > #urlbar-input-container > #urlbar-go-button {
|
||||
- display: none;
|
||||
+ display: none !important;
|
||||
}
|
||||
|
||||
#nav-bar:not([keyNav=true]) #identity-box,
|
||||
@@ -1237,13 +1237,13 @@ printpreview-pagination:focus-within,
|
||||
panelmultiview {
|
||||
@@ -566,9 +568,9 @@ printpreview-pagination:focus-within,
|
||||
|
||||
|
||||
#sidebar-box {
|
||||
@@ -47,15 +23,11 @@ index 6e776a9ce7c525e510b6466065daf755b21567a4..8668b27ec2126ed772a11aa77809b6f2
|
||||
}
|
||||
|
||||
/* WebExtension Sidebars */
|
||||
-#sidebar-box[sidebarcommand$="-sidebar-action"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
|
||||
+#sidebar-box[sidebarcommand$="-sidebar-action"] #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
|
||||
list-style-image: var(--webextension-menuitem-image, inherit);
|
||||
-moz-context-properties: fill;
|
||||
fill: currentColor;
|
||||
@@ -1444,3 +1444,42 @@ toolbar[keyNav=true]:not([collapsed=true], [customizing=true]) toolbartabstop {
|
||||
/**
|
||||
* End Dialogs
|
||||
*/
|
||||
@@ -583,3 +585,43 @@ printpreview-pagination:focus-within,
|
||||
toolbar[keyNav=true]:not([collapsed=true], [customizing=true]) toolbartabstop {
|
||||
-moz-user-focus: normal;
|
||||
}
|
||||
+
|
||||
+
|
||||
+/**
|
||||
+ *
|
||||
|
@@ -1,33 +1,13 @@
|
||||
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
|
||||
index 0717ce21386b73fc3399c97b34c6892a674cca77..f20e8a43fdd1d885f917948a26f1c3a1bd917707 100644
|
||||
index a79a9734619f89639c15087fe28e9615354a7209..212628c6fb2bed5ba17a3d2908f5d4b2376fa95e 100644
|
||||
--- a/browser/base/content/browser-init.js
|
||||
+++ b/browser/base/content/browser-init.js
|
||||
@@ -230,6 +230,12 @@ var gBrowserInit = {
|
||||
@@ -230,6 +230,8 @@ var gBrowserInit = {
|
||||
gURLBar.readOnly = true;
|
||||
}
|
||||
|
||||
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", this);
|
||||
+
|
||||
+ // ZEN: Propagate the current profile used to the browser UI, such as
|
||||
+ // showing the avatar and profile info to the side bar
|
||||
+ zenUpdateBrowserProfiles();
|
||||
+
|
||||
+
|
||||
// Misc. inits.
|
||||
gUIDensity.init();
|
||||
TabletModeUpdater.init();
|
||||
@@ -1105,3 +1111,15 @@ var gBrowserInit = {
|
||||
};
|
||||
|
||||
gBrowserInit.idleTasksFinishedPromise = gBrowserInit.idleTasksFinished.promise;
|
||||
+
|
||||
+function zenUpdateBrowserProfiles() {
|
||||
+ const mainWindowEl = document.documentElement;
|
||||
+ // Dont override the sync avatar if it's already set
|
||||
+ if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
|
||||
+ return;
|
||||
+ }
|
||||
+ let profile = ProfileService.currentProfile;
|
||||
+ if (!profile || profile.zenAvatarPath == "") return;
|
||||
+ // TODO: actually use profile data to generate the avatar, instead of just using the name
|
||||
+ mainWindowEl.style.setProperty("--avatar-image-url", `url(${profile.zenAvatarPath})`);
|
||||
+}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cdb5315b70 100644
|
||||
index b18f371a47fec53882c3dfb68e34d1a474eaf446..2c183d7e7fc65e00403f5e40e7859b915a3ea700 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -630,6 +630,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
||||
@@ -18,16 +18,17 @@ index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cd
|
||||
customElements.setElementCreationCallback("screenshots-buttons", () => {
|
||||
Services.scriptloader.loadSubScript(
|
||||
"chrome://browser/content/screenshots/screenshots-buttons.js",
|
||||
@@ -3668,6 +3677,8 @@ var XULBrowserWindow = {
|
||||
@@ -3679,6 +3688,9 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
|
||||
+ ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
|
||||
+
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -4982,7 +4993,7 @@ function setToolbarVisibility(
|
||||
@@ -5001,7 +5013,7 @@ function setToolbarVisibility(
|
||||
);
|
||||
}
|
||||
|
||||
@@ -36,7 +37,7 @@ index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cd
|
||||
switch (isVisible) {
|
||||
case true:
|
||||
case "always":
|
||||
@@ -7813,6 +7824,12 @@ var gDialogBox = {
|
||||
@@ -7832,6 +7844,12 @@ var gDialogBox = {
|
||||
parentElement.showModal();
|
||||
this._didOpenHTMLDialog = true;
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index aec0983a6704f09300da9a3a9ab76e627695b708..4228c96f59d6054c19c95686cafa979594e7da1f 100644
|
||||
index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb513c4ec73f 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -140,6 +140,8 @@
|
||||
@@ -139,6 +139,8 @@
|
||||
window.addEventListener("DOMContentLoaded",
|
||||
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
|
||||
</script>
|
||||
@@ -11,7 +11,7 @@ index aec0983a6704f09300da9a3a9ab76e627695b708..4228c96f59d6054c19c95686cafa9795
|
||||
</head>
|
||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||
@@ -161,9 +163,12 @@
|
||||
@@ -160,9 +162,12 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
@@ -27,3 +27,10 @@ index aec0983a6704f09300da9a3a9ab76e627695b708..4228c96f59d6054c19c95686cafa9795
|
||||
|
||||
<html:template id="customizationPanel">
|
||||
<box id="customization-container" flex="1" hidden="true"><![CDATA[
|
||||
@@ -176,5 +181,6 @@
|
||||
|
||||
<!-- Put it at the very end to make sure it's not covered by anything. -->
|
||||
<html:div id="fullscr-toggler" hidden="hidden"/>
|
||||
+#include zen-watermark.inc.xhtml
|
||||
</html:body>
|
||||
</html>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index 0a67afa81ff5e10dcbfb53149f7ed9109de084ac..bdcce262b5fc18767efd1054fd724b97c42471e4 100644
|
||||
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..7c80c54dd43b5414bf5ea9101d53431c0b4a140b 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -32,10 +32,11 @@
|
||||
|
@@ -1,16 +0,0 @@
|
||||
diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js
|
||||
index 3bca0b6d30468dc3a755219723f673ec80dfce6e..200a609ea31a8c904e2d3e39a3a06ff67fb313ed 100644
|
||||
--- a/browser/base/content/tabbrowser.js
|
||||
+++ b/browser/base/content/tabbrowser.js
|
||||
@@ -7623,6 +7623,11 @@ var TabContextMenu = {
|
||||
this.contextTab.linkedBrowser,
|
||||
document.getElementById("context_sendTabToDevice")
|
||||
);
|
||||
+
|
||||
+ document
|
||||
+ .getElementById("context_zenSplitTabs")
|
||||
+ .setAttribute("data-l10n-args", tabCountInfo);
|
||||
+ document.getElementById("context_zenSplitTabs").disabled = !gZenViewSplitter.contextCanSplitTabs();
|
||||
},
|
||||
|
||||
handleEvent(aEvent) {
|
@@ -1 +1,2 @@
|
||||
<link rel="localization" href="browser/zen-web-side-panels.ftl"/>
|
||||
<link rel="localization" href="browser/zen-web-side-panels.ftl"/>
|
||||
<link rel="localization" href="browser/zen-workspaces.ftl"/>
|
||||
|
@@ -1,18 +0,0 @@
|
||||
<panelview id="PanelUI-zen-profiles" position="bottomleft topleft" mainview="true" side="right">
|
||||
<vbox>
|
||||
<html:div id="PanelUI-zen-profiles-header">
|
||||
<html:div id="PanelUI-zen-profiles-user-picture"></html:div>
|
||||
</html:div>
|
||||
<vbox id="PanelUI-zen-profiles-current-info">
|
||||
<label id="PanelUI-zen-profiles-current-name"></label>
|
||||
<p id="PanelUI-zen-profiles-current-profile-current" data-l10n-id="zen-panel-ui-current-profile-text"></p>
|
||||
</vbox>
|
||||
<toolbarbutton id="PanelUI-zen-profiles-managePrfs" oncommand="switchToTabHavingURI('about:profiles', true);" data-l10n-id="appmenu-manage-profiles" class="subviewbutton"></toolbarbutton>
|
||||
#if 0
|
||||
<toolbarbutton id="PanelUI-zen-profiles-privateWin" command="Tools:PrivateBrowsing" data-l10n-id="appmenuitem-new-private-window" class="subviewbutton"></toolbarbutton>
|
||||
<toolbarbutton id="PanelUI-zen-profiles-newProfile" oncommand="ZenProfileDialogUI.createProfileWizard();" data-l10n-id="appmenu-create-profile" class="subviewbutton"></toolbarbutton>
|
||||
#endif
|
||||
<vbox id="PanelUI-zen-profiles-list">
|
||||
</vbox>
|
||||
</vbox>
|
||||
</panelview>
|
@@ -56,3 +56,65 @@
|
||||
</panelmultiview>
|
||||
</panel>
|
||||
</html:template>
|
||||
|
||||
<panelview id="PanelUI-zen-profiles" position="bottomleft topleft" mainview="true" side="right">
|
||||
<vbox>
|
||||
<html:div id="PanelUI-zen-profiles-header">
|
||||
<html:div id="PanelUI-zen-profiles-user-picture"></html:div>
|
||||
</html:div>
|
||||
<vbox id="PanelUI-zen-profiles-current-info">
|
||||
<label id="PanelUI-zen-profiles-current-name"></label>
|
||||
<p id="PanelUI-zen-profiles-current-profile-current" data-l10n-id="zen-panel-ui-current-profile-text"></p>
|
||||
</vbox>
|
||||
<hbox id="PanelUI-zen-profiles-actions">
|
||||
<toolbarbutton id="PanelUI-zen-profiles-managePrfs" oncommand="switchToTabHavingURI('about:profiles', true);" data-l10n-id="appmenu-manage-profiles" class="subviewbutton"></toolbarbutton>
|
||||
<toolbarbutton id="PanelUI-zen-profiles-privateWin" command="Tools:PrivateBrowsing" data-l10n-id="appmenuitem-new-private-window" class="subviewbutton"></toolbarbutton>
|
||||
<toolbarbutton id="PanelUI-zen-profiles-newProfile" oncommand="ZenProfileDialogUI.createProfileWizard();" data-l10n-id="appmenu-create-profile" class="subviewbutton"></toolbarbutton>
|
||||
</hbox>
|
||||
<vbox id="PanelUI-zen-profiles-list">
|
||||
</vbox>
|
||||
</vbox>
|
||||
</panelview>
|
||||
|
||||
<panel 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 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>
|
||||
<hbox class="translations-panel-beta" role="image" aria-label="Beta">
|
||||
<image class="translations-panel-beta-icon"></image>
|
||||
</hbox>
|
||||
<toolbarbutton id="PanelUI-zen-workspaces-new" oncommand="ZenWorkspaces.openSaveDialog();" class="subviewbutton">
|
||||
<image></image>
|
||||
</toolbarbutton>
|
||||
</hbox>
|
||||
<html:div id="PanelUI-zen-workspaces-current-info">
|
||||
</html:div>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<h3 data-l10n-id="zen-panel-ui-workspaces-text"></h3>
|
||||
<html:div id="PanelUI-zen-workspaces-list">
|
||||
</html:div>
|
||||
</vbox>
|
||||
</panelview>
|
||||
<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.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>
|
||||
</panelmultiview>
|
||||
</panel>
|
||||
|
||||
<menupopup id="zenWorkspaceActionsMenu"
|
||||
onpopupshowing="ZenWorkspaces.updateContextMenu(event);"
|
||||
onpopuphidden="ZenWorkspaces.onContextMenuClose();">
|
||||
<menuitem id="context_zenDeleteWorkspace" oncommand="ZenWorkspaces.contextDelete();" data-l10n-id="zen-workspaces-panel-context-delete"/>
|
||||
</menupopup>
|
@@ -1,5 +1,6 @@
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", () => {
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenWorkspaces.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenSidebarManager.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenViewSplitter.mjs");
|
||||
|
@@ -1,6 +1,7 @@
|
||||
content/browser/zen-browser-places.js (content/zen-browser-places.js)
|
||||
content/browser/zenThemeModifier.js (content/zenThemeModifier.js)
|
||||
content/browser/ZenSidebarManager.mjs (content/ZenSidebarManager.mjs)
|
||||
content/browser/ZenUIManager.mjs (content/ZenUIManager.mjs)
|
||||
content/browser/ZenViewSplitter.mjs (content/ZenViewSplitter.mjs)
|
||||
content/browser/ZenWorkspaces.mjs (content/ZenWorkspaces.mjs)
|
||||
|
4
src/browser/base/content/zen-watermark.inc.xhtml
Normal file
4
src/browser/base/content/zen-watermark.inc.xhtml
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
<html:div id="zen-watermark">
|
||||
<image src="chrome://branding/content/about-logo.png" />
|
||||
</html:div>
|
@@ -95,6 +95,8 @@
|
||||
|
||||
_zenInitBrowserLayout() {
|
||||
if (!this._inMainBrowserWindow) return;
|
||||
this.openWatermark();
|
||||
console.log("ZenThemeModifier: init browser layout");
|
||||
const kNavbarItems = [
|
||||
"nav-bar",
|
||||
"PersonalToolbar",
|
||||
@@ -116,7 +118,34 @@
|
||||
|
||||
// move the security button to the right
|
||||
const securityButton = document.getElementById("tracking-protection-icon-container");
|
||||
document.getElementById("urlbar-input-container").insertBefore(securityButton, document.getElementById("page-action-buttons"));
|
||||
document.getElementsByClassName("urlbar-input-container")[0].insertBefore(securityButton, document.getElementById("page-action-buttons"));
|
||||
|
||||
const mainWindowEl = document.documentElement;
|
||||
// Dont override the sync avatar if it's already set
|
||||
if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
|
||||
return;
|
||||
}
|
||||
let profile = ProfileService.currentProfile;
|
||||
if (!profile || profile.zenAvatarPath == "") return;
|
||||
// TODO: actually use profile data to generate the avatar, instead of just using the name
|
||||
console.log("ZenThemeModifier: setting avatar image to", profile.zenAvatarPath);
|
||||
mainWindowEl.style.setProperty("--zen-avatar-image-url", `url(${profile.zenAvatarPath})`);
|
||||
mainWindowEl.style.setProperty("--avatar-image-url", `var(--zen-avatar-image-url)`, "important");
|
||||
this.closeWatermark();
|
||||
},
|
||||
|
||||
openWatermark() {
|
||||
const watermark = document.getElementById("zen-watermark");
|
||||
if (watermark) {
|
||||
watermark.removeAttribute("hidden");
|
||||
}
|
||||
},
|
||||
|
||||
closeWatermark() {
|
||||
const watermark = document.getElementById("zen-watermark");
|
||||
if (watermark) {
|
||||
watermark.setAttribute("hidden", "true");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@@ -1,22 +0,0 @@
|
||||
diff --git a/browser/components/controlcenter/content/protectionsPanel.inc.xhtml b/browser/components/controlcenter/content/protectionsPanel.inc.xhtml
|
||||
index 29927139181e40fa9779038f996a08a2afc6f76b..ddb95da98de6aba014d69f040aabe6b311fb6772 100644
|
||||
--- a/browser/components/controlcenter/content/protectionsPanel.inc.xhtml
|
||||
+++ b/browser/components/controlcenter/content/protectionsPanel.inc.xhtml
|
||||
@@ -8,6 +8,7 @@
|
||||
type="arrow"
|
||||
role="alertdialog"
|
||||
noautofocus="true"
|
||||
+ infoMessageShowing=""
|
||||
aria-labelledby="protections-popup-main-header-label"
|
||||
onpopupshown="gProtectionsHandler.onPopupShown(event);ReportBrokenSite.updateParentMenu(event)"
|
||||
onpopuphidden="gProtectionsHandler.onPopupHidden(event);"
|
||||
@@ -28,7 +29,7 @@
|
||||
<html:span id="protections-popup-mainView-panel-header-span"/>
|
||||
</html:h1>
|
||||
<toolbarbutton id="protections-popup-info-button" class="panel-info-button"
|
||||
- data-l10n-id="protections-panel-etp-more-info">
|
||||
+ data-l10n-id="protections-panel-etp-more-info" checked="">
|
||||
<image/>
|
||||
</toolbarbutton>
|
||||
<description id="protections-popup-toast-panel-tp-on-desc" data-l10n-id="protections-panel-etp-on-header"></description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
index 5b09402dc1e19e89dcdfc8b5b45a2004c8cec0e6..0f8d774c728087b96242f35fe038e1fef55e58b3 100644
|
||||
index f466105b8290b13c672351bb68dd92644dd670fe..b195cd59d7ff07ff512e7388c9dc33f3c661d955 100644
|
||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
@@ -25,7 +25,7 @@ ChromeUtils.defineLazyGetter(lazy, "gWidgetsBundle", function () {
|
||||
@@ -11,23 +11,19 @@ index 5b09402dc1e19e89dcdfc8b5b45a2004c8cec0e6..0f8d774c728087b96242f35fe038e1fe
|
||||
|
||||
const kSpecialWidgetPfx = "customizableui-special-";
|
||||
|
||||
@@ -249,14 +249,11 @@ var CustomizableUIInternal = {
|
||||
Services.policies.isAllowed("removeHomeButtonByDefault")
|
||||
? null
|
||||
: "home-button",
|
||||
- "spring",
|
||||
@@ -253,10 +253,9 @@ var CustomizableUIInternal = {
|
||||
"spring",
|
||||
"urlbar-container",
|
||||
- "spring",
|
||||
"spring",
|
||||
- "save-to-pocket-button",
|
||||
"downloads-button",
|
||||
AppConstants.MOZ_DEV_EDITION ? "developer-button" : null,
|
||||
- "fxa-toolbar-menu-button",
|
||||
lazy.resetPBMToolbarButtonEnabled ? "reset-pbm-toolbar-button" : null,
|
||||
+ "wrapper-sidebar-button",
|
||||
lazy.resetPBMToolbarButtonEnabled ? "reset-pbm-toolbar-button" : null,
|
||||
].filter(name => name);
|
||||
|
||||
this.registerArea(
|
||||
@@ -287,7 +284,7 @@ var CustomizableUIInternal = {
|
||||
@@ -288,7 +287,7 @@ var CustomizableUIInternal = {
|
||||
{
|
||||
type: CustomizableUI.TYPE_TOOLBAR,
|
||||
defaultPlacements: [
|
||||
|
@@ -1,14 +1,12 @@
|
||||
diff --git a/browser/components/moz.build b/browser/components/moz.build
|
||||
index 0f91b90fb0ce4eac232d71ad4f9ff82ab7316635..82aa7bb8bd41b061ac861d3fbabbf9f9879a2091 100644
|
||||
index 6cbb7ce0037c1457eeae5c331a996719691ebd6b..611707852198740c9b4103f5e2a66e8ee4099a21 100644
|
||||
--- a/browser/components/moz.build
|
||||
+++ b/browser/components/moz.build
|
||||
@@ -72,6 +72,9 @@ DIRS += [
|
||||
"urlbar",
|
||||
]
|
||||
|
||||
+# Zen Components:
|
||||
+DIRS += ["zen-welcome"]
|
||||
+
|
||||
DIRS += ["build"]
|
||||
@@ -27,6 +27,7 @@ with Files("controlcenter/**"):
|
||||
|
||||
|
||||
DIRS += [
|
||||
+ "zen-welcome",
|
||||
"about",
|
||||
"aboutlogins",
|
||||
"aboutwelcome",
|
||||
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/browser/components/newtab/content-src/styles/_theme.scss b/browser/components/newtab/content-src/styles/_theme.scss
|
||||
index 6b097ae93edc046fb82dc843357e4ce8f34aca60..a76a3d8082d611a5169b0e85053aaca05a59ede1 100644
|
||||
--- a/browser/components/newtab/content-src/styles/_theme.scss
|
||||
+++ b/browser/components/newtab/content-src/styles/_theme.scss
|
||||
@@ -25,7 +25,7 @@ $shadow-image-inset: inset 0 0 0 0.5px $black-15;
|
||||
// Default theme
|
||||
:root {
|
||||
// General styles
|
||||
- --newtab-background-color: #{$in-content-page-background};
|
||||
+ --newtab-background-color: var(--zen-colors-tertiary);
|
||||
--newtab-background-color-secondary: #{$newtab-background-secondary};
|
||||
--newtab-text-primary-color: #{$in-content-page-color};
|
||||
--newtab-primary-action-background: #{$primary-blue};
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
|
||||
index 3b60d18e483bc3c4e9b4309f0dc1e4231b7116b1..aa30bc3de15b68ac90c12142a8851af99e1209ae 100644
|
||||
index 3b60d18e483bc3c4e9b4309f0dc1e4231b7116b1..e5b679b25941a7f1ed52db9fa3f7740a7220b9e4 100644
|
||||
--- a/browser/components/preferences/jar.mn
|
||||
+++ b/browser/components/preferences/jar.mn
|
||||
@@ -23,3 +23,5 @@ browser.jar:
|
||||
@@ -7,4 +7,4 @@ index 3b60d18e483bc3c4e9b4309f0dc1e4231b7116b1..aa30bc3de15b68ac90c12142a8851af9
|
||||
content/browser/preferences/web-appearance-dark.svg
|
||||
content/browser/preferences/web-appearance-light.svg
|
||||
+
|
||||
+ content/browser/preferences/zen-looks.js
|
||||
+ content/browser/preferences/zen-settings.js
|
||||
|
@@ -1,12 +1,13 @@
|
||||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||
index c30a51c67ce636fa889090419a5c2642d74b4f49..b48ab31c564db4a4911c9fca291b4f09ba1025af 100644
|
||||
index 7e21bab426b6eb52fe84876d817fddbdb1a35ffc..fe23eb36a28a2baa4facad80a776e739ee6e43b1 100644
|
||||
--- a/browser/components/preferences/preferences.js
|
||||
+++ b/browser/components/preferences/preferences.js
|
||||
@@ -198,6 +198,7 @@ function init_all() {
|
||||
@@ -196,6 +196,8 @@ function init_all() {
|
||||
// the entire document.
|
||||
Preferences.queueUpdateOfAllElements();
|
||||
Services.telemetry.setEventRecordingEnabled("aboutpreferences", true);
|
||||
+ register_module("paneZenLooks", gZenLooksAndFeel);
|
||||
+ register_module("paneZenWorkspaces", gZenWorkspacesSettings);
|
||||
|
||||
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 eee227822a772bec128d6adbe4f6aca90ed810f6..b52ee22054e3b2c80d4b780bc01507478becc583 100644
|
||||
index 3affb19d1a243da4a5782c9a4a5588d165b4119f..ccb56cc323ff5c3e94013de782af54911fc0c360 100644
|
||||
--- a/browser/components/preferences/preferences.xhtml
|
||||
+++ b/browser/components/preferences/preferences.xhtml
|
||||
@@ -43,6 +43,8 @@
|
||||
@@ -11,7 +11,7 @@ index eee227822a772bec128d6adbe4f6aca90ed810f6..b52ee22054e3b2c80d4b780bc0150747
|
||||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<link rel="localization" href="browser/browser.ftl"/>
|
||||
<!-- Used by fontbuilder.js -->
|
||||
@@ -99,6 +101,12 @@
|
||||
@@ -97,6 +99,12 @@
|
||||
<hbox flex="1">
|
||||
|
||||
<vbox class="navigation">
|
||||
@@ -24,7 +24,7 @@ index eee227822a772bec128d6adbe4f6aca90ed810f6..b52ee22054e3b2c80d4b780bc0150747
|
||||
<!-- category list -->
|
||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||
<richlistitem id="category-general"
|
||||
@@ -112,6 +120,17 @@
|
||||
@@ -110,6 +118,28 @@
|
||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||
</richlistitem>
|
||||
|
||||
@@ -38,11 +38,22 @@ index eee227822a772bec128d6adbe4f6aca90ed810f6..b52ee22054e3b2c80d4b780bc0150747
|
||||
+ <image class="category-icon"/>
|
||||
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-looks-title"></label>
|
||||
+ </richlistitem>
|
||||
+
|
||||
+ <richlistitem id="category-zen-workspaces"
|
||||
+ class="category"
|
||||
+ value="paneZenWorkspaces"
|
||||
+ helpTopic="prefs-main"
|
||||
+ data-l10n-id="category-zen-workspaces"
|
||||
+ data-l10n-attrs="tooltiptext"
|
||||
+ align="center">
|
||||
+ <image class="category-icon"/>
|
||||
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-workspaces-title"></label>
|
||||
+ </richlistitem>
|
||||
+
|
||||
<richlistitem id="category-home"
|
||||
class="category"
|
||||
value="paneHome"
|
||||
@@ -230,11 +249,13 @@
|
||||
@@ -228,11 +258,13 @@
|
||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
@@ -56,11 +67,12 @@ index eee227822a772bec128d6adbe4f6aca90ed810f6..b52ee22054e3b2c80d4b780bc0150747
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="mainPrefPane">
|
||||
@@ -248,6 +269,7 @@
|
||||
@@ -246,6 +278,8 @@
|
||||
#include sync.inc.xhtml
|
||||
#include experimental.inc.xhtml
|
||||
#include moreFromMozilla.inc.xhtml
|
||||
+#include zenLooksAndFeel.inc.xhtml
|
||||
+#include zenWorkspaces.inc.xhtml
|
||||
</vbox>
|
||||
</vbox>
|
||||
</vbox>
|
||||
|
@@ -48,6 +48,11 @@ var gZenLooksAndFeel = {
|
||||
},
|
||||
};
|
||||
|
||||
var gZenWorkspacesSettings = {
|
||||
init() {
|
||||
},
|
||||
};
|
||||
|
||||
Preferences.addAll([
|
||||
{
|
||||
id: "zen.theme.toolbar-themed",
|
||||
@@ -64,4 +69,9 @@ Preferences.addAll([
|
||||
type: "bool",
|
||||
default: false,
|
||||
},
|
||||
{
|
||||
id: "zen.workspaces.enabled",
|
||||
type: "bool",
|
||||
default: true,
|
||||
}
|
||||
]);
|
@@ -1,4 +1,4 @@
|
||||
<script src="chrome://browser/content/preferences/zen-looks.js"/>
|
||||
<script src="chrome://browser/content/preferences/zen-settings.js"/>
|
||||
<html:template id="template-paneZenLooks">
|
||||
<hbox id="zenLooksCategory"
|
||||
class="subcategory"
|
||||
|
25
src/browser/components/preferences/zenWorkspaces.inc.xhtml
Normal file
25
src/browser/components/preferences/zenWorkspaces.inc.xhtml
Normal file
@@ -0,0 +1,25 @@
|
||||
<html:template id="template-paneZenWorkspaces">
|
||||
<hbox id="ZenWorkspacesCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenWorkspaces">
|
||||
<html:h1 data-l10n-id="pane-workspaces-title"/>
|
||||
</hbox>
|
||||
|
||||
<hbox id="zenSidePanelsCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenWorkspaces">
|
||||
<html:h1 data-l10n-id="pane-settings-workspaces-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenSidePanelsGroup" data-category="paneZenWorkspaces" hidden="true" class="highlighting-group">
|
||||
<label><html:h2 data-l10n-id="zen-settings-workspaces-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-settings-workspaces-description" />
|
||||
|
||||
<checkbox id="zenWorkspacesActivate"
|
||||
data-l10n-id="zen-settings-workspaces-enabled"
|
||||
preference="zen.workspaces.enabled"/>
|
||||
</groupbox>
|
||||
|
||||
</html:template>
|
13
src/browser/components/sessionstore/TabState-sys-mjs.patch
Normal file
13
src/browser/components/sessionstore/TabState-sys-mjs.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 26f5671c849d9b0a126d79b07bc7d3d7870826ec..decc4c975507c9111df78dbc43434fa46d5f5e82 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -98,6 +98,8 @@ var TabStateInternal = {
|
||||
tabData.muteReason = tab.muteReason;
|
||||
}
|
||||
|
||||
+ tabData.zenWorkspace = tab.getAttribute("zen-workspace-id");
|
||||
+
|
||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||
|
||||
tabData.userContextId = tab.userContextId || 0;
|
@@ -0,0 +1,13 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab-hover-preview.mjs b/browser/components/tabbrowser/content/tab-hover-preview.mjs
|
||||
index b07dba3e060dd730e603997b2c374f218a1eb591..412d35a263d1e6a789927206a506c184a5ac0d46 100644
|
||||
--- a/browser/components/tabbrowser/content/tab-hover-preview.mjs
|
||||
+++ b/browser/components/tabbrowser/content/tab-hover-preview.mjs
|
||||
@@ -7,7 +7,7 @@ var { XPCOMUtils } = ChromeUtils.importESModule(
|
||||
);
|
||||
|
||||
const POPUP_OPTIONS = {
|
||||
- position: "bottomleft topleft",
|
||||
+ position: "topright topleft",
|
||||
x: 0,
|
||||
y: -2,
|
||||
};
|
@@ -0,0 +1,39 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index 2674dc2bebf436529a46d45c52cb56e86b82c03f..960c0039cd511a9d2c78e2a0c8c78080464950ee 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -3208,6 +3208,11 @@
|
||||
) {
|
||||
tabWasReused = true;
|
||||
tab = this.selectedTab;
|
||||
+
|
||||
+ if (tabData.zenWorkspace) {
|
||||
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
|
||||
+ }
|
||||
+
|
||||
if (!tabData.pinned) {
|
||||
this.unpinTab(tab);
|
||||
} else {
|
||||
@@ -3257,6 +3262,10 @@
|
||||
preferredRemoteType,
|
||||
});
|
||||
|
||||
+ if (tabData.zenWorkspace) {
|
||||
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
|
||||
+ }
|
||||
+
|
||||
if (select) {
|
||||
tabToSelect = tab;
|
||||
}
|
||||
@@ -7878,6 +7887,11 @@ var TabContextMenu = {
|
||||
this.contextTab.linkedBrowser,
|
||||
document.getElementById("context_sendTabToDevice")
|
||||
);
|
||||
+
|
||||
+ document
|
||||
+ .getElementById("context_zenSplitTabs")
|
||||
+ .setAttribute("data-l10n-args", tabCountInfo);
|
||||
+ document.getElementById("context_zenSplitTabs").disabled = !gZenViewSplitter.contextCanSplitTabs();
|
||||
},
|
||||
|
||||
handleEvent(aEvent) {
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/tabbrowser-tabs.js b/browser/base/content/tabbrowser-tabs.js
|
||||
index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c992624170bde0e63 100644
|
||||
--- a/browser/base/content/tabbrowser-tabs.js
|
||||
+++ b/browser/base/content/tabbrowser-tabs.js
|
||||
@@ -538,19 +538,36 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf457da3500c 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -552,19 +552,36 @@
|
||||
}
|
||||
dt.setDragImage(toDrag, dragImageOffset, dragImageOffset);
|
||||
|
||||
@@ -40,7 +40,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
movingTabs: (tab.multiselected ? gBrowser.selectedTabs : [tab]).filter(
|
||||
t => t.pinned == tab.pinned
|
||||
),
|
||||
@@ -637,21 +654,30 @@
|
||||
@@ -651,21 +668,30 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
];
|
||||
}
|
||||
newMargin = pixelsToScroll > 0 ? maxMargin : minMargin;
|
||||
@@ -661,29 +687,38 @@
|
||||
@@ -675,29 +701,38 @@
|
||||
if (newIndex == children.length) {
|
||||
let tabRect = this._getVisibleTabs().at(-1).getBoundingClientRect();
|
||||
if (RTL_UI) {
|
||||
@@ -121,7 +121,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
var dt = event.dataTransfer;
|
||||
var dropEffect = dt.dropEffect;
|
||||
var draggedTab;
|
||||
@@ -740,7 +775,7 @@
|
||||
@@ -754,7 +789,7 @@
|
||||
incrementDropIndex = false;
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
for (let tab of movingTabs) {
|
||||
tab.toggleAttribute("tabdrop-samewindow", true);
|
||||
tab.style.transform = "translateX(" + newTranslateX + "px)";
|
||||
@@ -1126,10 +1161,13 @@
|
||||
@@ -1144,10 +1179,13 @@
|
||||
}
|
||||
|
||||
_initializeArrowScrollbox() {
|
||||
@@ -144,7 +144,24 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
// Ignore underflow events:
|
||||
// - from nested scrollable elements
|
||||
// - for vertical orientation
|
||||
@@ -1492,19 +1530,30 @@
|
||||
@@ -1471,11 +1509,11 @@
|
||||
for (let i = numPinned - 1; i >= 0; i--) {
|
||||
let tab = tabs[i];
|
||||
width += layoutData.pinnedTabWidth;
|
||||
- tab.style.setProperty(
|
||||
- "margin-inline-start",
|
||||
- -(width + layoutData.scrollStartOffset) + "px",
|
||||
- "important"
|
||||
- );
|
||||
+ //tab.style.setProperty(
|
||||
+ // "margin-inline-start",
|
||||
+ // -(width + layoutData.scrollStartOffset) + "px",
|
||||
+ // "important"
|
||||
+ //);
|
||||
tab._pinnedUnscrollable = true;
|
||||
}
|
||||
this.style.setProperty(
|
||||
@@ -1510,19 +1548,30 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +201,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
|
||||
let pinned = draggedTab.pinned;
|
||||
let numPinned = gBrowser._numPinnedTabs;
|
||||
@@ -1513,36 +1562,39 @@
|
||||
@@ -1531,36 +1580,39 @@
|
||||
pinned ? numPinned : undefined
|
||||
);
|
||||
|
||||
@@ -235,7 +252,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
}
|
||||
|
||||
draggedTab._dragData.translateX = translateX;
|
||||
@@ -1575,11 +1627,11 @@
|
||||
@@ -1593,11 +1645,11 @@
|
||||
if (tabs[mid] == draggedTab && ++mid > high) {
|
||||
break;
|
||||
}
|
||||
@@ -249,7 +266,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
tabCenter
|
||||
) {
|
||||
low = mid + 1;
|
||||
@@ -1602,16 +1654,16 @@
|
||||
@@ -1620,16 +1672,16 @@
|
||||
for (let tab of tabs) {
|
||||
if (tab != draggedTab) {
|
||||
let shift = getTabShift(tab, newIndex);
|
||||
@@ -269,7 +286,7 @@ index 4733e6d0b66f254c72a592bf3eabeb1a939e76fa..ab16fe96e1e8036df7e8321c99262417
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1683,9 +1735,9 @@
|
||||
@@ -1701,9 +1753,9 @@
|
||||
|
||||
// Slide the relevant tabs to their new position.
|
||||
for (let t of this._getVisibleTabs()) {
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/browser/components/tabpreview/tab-preview-panel.mjs b/browser/components/tabpreview/tab-preview-panel.mjs
|
||||
index 683b2c17ec893a97680d885c622029591dda7f29..605f8682368d691f7cc18dfb1775fa2622006ebd 100644
|
||||
--- a/browser/components/tabpreview/tab-preview-panel.mjs
|
||||
+++ b/browser/components/tabpreview/tab-preview-panel.mjs
|
||||
@@ -7,7 +7,7 @@ var { XPCOMUtils } = ChromeUtils.importESModule(
|
||||
);
|
||||
|
||||
const POPUP_OPTIONS = {
|
||||
- position: "bottomleft topleft",
|
||||
+ position: "topright topleft",
|
||||
x: 0,
|
||||
y: -2,
|
||||
};
|
@@ -36,10 +36,9 @@ button {
|
||||
}
|
||||
|
||||
.page-split:not([hidden="true"]) {
|
||||
display: flex;
|
||||
margin: 12%;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
margin: auto;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
#enableFeatures .card {
|
||||
@@ -51,13 +50,17 @@ button {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#theme .card[disabled="true"] {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.cardGroup {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: stretch;
|
||||
gap: 8px;
|
||||
margin-bottom: 8px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.cardGroup .card {
|
||||
@@ -84,6 +87,13 @@ h1 {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
margin: 16px 0 5px 0;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.page > div:nth-child(2) h1 {
|
||||
margin-bottom: 15px;
|
||||
margin-top: 10px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
p {
|
||||
@@ -134,14 +144,6 @@ input[type='checkbox'] {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#search h1 {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
#theme h1 {
|
||||
margin: 25px 0;
|
||||
}
|
||||
|
||||
.page[hidden="true"] {
|
||||
display: none;
|
||||
}
|
||||
@@ -190,16 +192,16 @@ input[type='checkbox'] {
|
||||
}
|
||||
|
||||
.dot {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: var(--in-content-primary-button-background);
|
||||
transition: all .1s;
|
||||
background: light-dark(#000, #fff);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dot.active {
|
||||
background: light-dark(#000, #fff);
|
||||
background: var(--zen-primary-color);
|
||||
}
|
||||
|
||||
#colorList {
|
||||
@@ -224,3 +226,14 @@ input[type='checkbox'] {
|
||||
width: 500px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#colorPreview {
|
||||
margin-left: 10px;
|
||||
border-radius: 5px;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: -60px;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
@@ -8,10 +8,6 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name="color-scheme" content="light dark">
|
||||
<meta
|
||||
http-equiv="Content-Security-Policy"
|
||||
content="default-src chrome:; object-src 'none'"
|
||||
/>
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
|
||||
<link
|
||||
@@ -77,6 +73,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<div id="colorListWrapper">
|
||||
<canvas id="colorList" class="cardGroup"></canvas>
|
||||
<div id="dragBall"></div>
|
||||
<div id="colorPreview"></div>
|
||||
</div>
|
||||
<button
|
||||
id="themeNext"
|
||||
|
@@ -14,9 +14,12 @@ ChromeUtils.defineModuleGetter(
|
||||
this,
|
||||
'ExtensionSettingsStore',
|
||||
'resource://gre/modules/ExtensionSettingsStore.jsm'
|
||||
)
|
||||
);
|
||||
|
||||
const welcomeSeenPref = 'zen.welcomeScreen.seen'
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
|
||||
|
||||
const kWelcomeURL = 'https://get-zen.vercel.app/welcome';
|
||||
const kWelcomeSeenPref = 'zen.welcomeScreen.seen'
|
||||
|
||||
// =============================================================================
|
||||
// Util stuff copied from browser/components/preferences/search.js
|
||||
@@ -134,11 +137,18 @@ class Themes extends Page {
|
||||
container.classList.add('card');
|
||||
container.classList.add('card-no-hover');
|
||||
|
||||
//if (theme.id == "firefox-compact-dream@mozilla.org" || theme.id == "firefox-compact-galaxy@mozilla.org") {
|
||||
// container.setAttribute('disabled', 'true')
|
||||
//}
|
||||
|
||||
if (theme.isActive) {
|
||||
container.classList.add('selected')
|
||||
}
|
||||
|
||||
container.addEventListener('click', () => {
|
||||
if (container.hasAttribute('disabled')) {
|
||||
return
|
||||
}
|
||||
document.body.classList.add('normal-background');
|
||||
themeElements.forEach((el) => el.classList.remove('selected'))
|
||||
container.classList.add('selected')
|
||||
@@ -196,12 +206,15 @@ class Themes extends Page {
|
||||
x = rect.width - 17 - (17/2);
|
||||
}
|
||||
const data = ctx.getImageData(x - 17, 1, 1, 1).data;
|
||||
Services.prefs.setStringPref('zen.theme.accent-color', `#${data[0].toString(16)}${data[1].toString(16)}${data[2].toString(16)}`);
|
||||
let color = `#${data[0].toString(16)}${data[1].toString(16)}${data[2].toString(16)}`;
|
||||
document.getElementById("colorPreview").style.backgroundColor = color;
|
||||
Services.prefs.setStringPref('zen.theme.accent-color', color);
|
||||
}
|
||||
|
||||
const onMouseUp = () => {
|
||||
document.removeEventListener('mousemove', onMouseMove);
|
||||
document.removeEventListener('mouseup', onMouseUp);
|
||||
document.getElementById("colorPreview").style.backgroundColor = '';
|
||||
}
|
||||
|
||||
document.addEventListener('mousemove', onMouseMove);
|
||||
@@ -236,8 +249,8 @@ class Search extends Page {
|
||||
|
||||
const searchElements = document.getElementById('searchList')
|
||||
|
||||
this.store.getEngine().forEach((search) => {
|
||||
const container = this.loadSpecificSearch(search, defaultEngine)
|
||||
this.store.getEngine().forEach(async (search) => {
|
||||
const container = await this.loadSpecificSearch(search, defaultEngine)
|
||||
|
||||
searchElements.appendChild(container)
|
||||
this.searchList.push(container)
|
||||
@@ -247,7 +260,7 @@ class Search extends Page {
|
||||
/**
|
||||
* @returns {HTMLDivElement}
|
||||
*/
|
||||
loadSpecificSearch(search, defaultSearch) {
|
||||
async loadSpecificSearch(search, defaultSearch) {
|
||||
const container = document.createElement('div');
|
||||
container.classList.add('card')
|
||||
container.classList.add('card-no-hover')
|
||||
@@ -263,7 +276,7 @@ class Search extends Page {
|
||||
})
|
||||
|
||||
const img = document.createElement('img');
|
||||
img.src = search.originalEngine._iconURI.spec;
|
||||
img.src = await search.originalEngine.getIconURL();
|
||||
|
||||
const name = document.createElement('h3')
|
||||
name.textContent = search.name
|
||||
@@ -295,6 +308,7 @@ class Pages {
|
||||
* @param {Page[]} pages The pages
|
||||
*/
|
||||
constructor(pages) {
|
||||
console.log("Initializing welcome pages...");
|
||||
this.pages = pages
|
||||
this.currentPage = 0;
|
||||
|
||||
@@ -314,6 +328,7 @@ class Pages {
|
||||
dots.appendChild(dot);
|
||||
}
|
||||
this._displayCurrentPage();
|
||||
console.log("Welcome pages initialized.")
|
||||
}
|
||||
|
||||
next() {
|
||||
@@ -323,15 +338,20 @@ class Pages {
|
||||
// We can use internal js apis to close the window. We also want to set
|
||||
// the settings api for welcome seen to false to stop it showing again
|
||||
|
||||
Services.prefs.setBoolPref(welcomeSeenPref, true)
|
||||
Services.prefs.setBoolPref(kWelcomeSeenPref, true)
|
||||
|
||||
close()
|
||||
close();
|
||||
this._openWelcomePage();
|
||||
return
|
||||
}
|
||||
|
||||
this._displayCurrentPage()
|
||||
}
|
||||
|
||||
_openWelcomePage() {
|
||||
gZenUIManager.openAndChangeToTab(kWelcomeURL);
|
||||
}
|
||||
|
||||
_displayCurrentPage() {
|
||||
let dots = document.getElementsByClassName("dot");
|
||||
for (let i = 0; i < dots.length; i++) {
|
||||
|
@@ -19,4 +19,17 @@ zen-side-panels-enabled =
|
||||
zen-look-and-feel-compact-view-header = Show in compact view
|
||||
zen-look-and-feel-compact-view-description = Only show the toolbars you use!
|
||||
zen-look-and-feel-compact-view-enabled =
|
||||
.label = Enable { -brand-short-name }'s compact mode
|
||||
.label = Enable { -brand-short-name }'s compact mode
|
||||
|
||||
|
||||
|
||||
pane-zen-workspaces-title = Workspaces
|
||||
category-zen-workspaces =
|
||||
.tooltiptext = { pane-workspaces-title }
|
||||
pane-settings-workspaces-title = Workspaces
|
||||
|
||||
pane-zen-workspaces-header = Workspaces
|
||||
zen-settings-workspaces-header = General settings for workspaces
|
||||
zen-settings-workspaces-description = With workspaces, you can have multiple browsing sessions at once!
|
||||
zen-settings-workspaces-enabled =
|
||||
.label = Enable Workspaces (Experimental)
|
||||
|
@@ -16,8 +16,8 @@ welcome-dialog-theme = 🎨 Choose a theme
|
||||
welcome-dialog-theme-subtext = Personalize your experience with your favorite look!
|
||||
welcome-dialog-theme-action = Continue
|
||||
|
||||
welcome-dialog-theme-header-1 = 1. Choose A theme
|
||||
welcome-dialog-theme-header-2 = 2. Find Your Perfect Color
|
||||
welcome-dialog-theme-header-1 = 1. Choose a theme
|
||||
welcome-dialog-theme-header-2 = 2. Find your perfect color
|
||||
|
||||
welcome-dialog-search = 🔍 Choose a search engine
|
||||
welcome-dialog-search-subtext = Select your preferred search engine to tailor your browsing experience!
|
||||
|
17
src/browser/locales/en-US/browser/zen-workspaces.ftl
Normal file
17
src/browser/locales/en-US/browser/zen-workspaces.ftl
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
zen-panel-ui-current-window-text = Current Window
|
||||
|
||||
zen-panel-ui-workspaces-text = Other Workspaces
|
||||
|
||||
zen-panel-ui-workspaces-create-text = Create Workspace
|
||||
|
||||
zen-panel-ui-workspaces-create-save =
|
||||
.label = Create Workspace
|
||||
.accesskey = S
|
||||
zen-panel-ui-workspaces-create-cancel =
|
||||
.label = Cancel
|
||||
.accesskey = C
|
||||
|
||||
zen-workspaces-panel-context-delete =
|
||||
.label = Delete Workspace
|
||||
.accesskey = D
|
@@ -1,7 +1,7 @@
|
||||
diff --git a/browser/modules/AsyncTabSwitcher.sys.mjs b/browser/modules/AsyncTabSwitcher.sys.mjs
|
||||
diff --git a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs
|
||||
index 9f4aa535e07adab496788165f4089be6732b1444..7b7955c0d1f2f3277cb750652458649d181e90e5 100644
|
||||
--- a/browser/modules/AsyncTabSwitcher.sys.mjs
|
||||
+++ b/browser/modules/AsyncTabSwitcher.sys.mjs
|
||||
--- a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs
|
||||
+++ b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs
|
||||
@@ -39,6 +39,10 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
||||
300
|
||||
);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/addons/dark/manifest.json b/browser/themes/addons/dark/manifest.json
|
||||
index 544986d5e93c033f944cf301af79e0750864a32c..41b15b8d1e1bb146ef0cf8357ab08d443f88b235 100644
|
||||
index bfebde683d00b0acf26509139a0f662029d37c72..976b553f49e40b7ed02743d79ccc102fccffcf6f 100644
|
||||
--- a/browser/themes/addons/dark/manifest.json
|
||||
+++ b/browser/themes/addons/dark/manifest.json
|
||||
@@ -7,10 +7,10 @@
|
||||
@@ -16,32 +16,7 @@ index 544986d5e93c033f944cf301af79e0750864a32c..41b15b8d1e1bb146ef0cf8357ab08d44
|
||||
|
||||
"icons": { "32": "icon.svg" },
|
||||
|
||||
@@ -38,19 +38,18 @@
|
||||
"ntp_background": "rgb(43, 42, 51)",
|
||||
"ntp_card_background": "rgb(66,65,77)",
|
||||
"ntp_text": "rgb(251, 251, 254)",
|
||||
- "sidebar": "#38383D",
|
||||
"sidebar_text": "rgb(249, 249, 250)",
|
||||
"sidebar_border": "rgba(255, 255, 255, 0.1)",
|
||||
"button": "rgba(0, 0, 0, .33)",
|
||||
"button_hover": "rgba(207, 207, 216, .20)",
|
||||
"button_active": "rgba(207, 207, 216, .40)",
|
||||
- "button_primary": "rgb(0, 221, 255)",
|
||||
- "button_primary_hover": "rgb(128, 235, 255)",
|
||||
- "button_primary_active": "rgb(170, 242, 255)",
|
||||
- "button_primary_color": "rgb(43, 42, 51)",
|
||||
+ "button_primary": "#fff",
|
||||
+ "button_primary_hover": "rgb(207, 207, 216)",
|
||||
+ "button_primary_active": "rgb(207, 207, 216)",
|
||||
+ "button_primary_color": "#000",
|
||||
"input_background": "#42414D",
|
||||
"input_color": "rgb(251,251,254)",
|
||||
- "input_border": "#8f8f9d",
|
||||
+ "input_border": "#fff",
|
||||
"urlbar_popup_separator": "rgb(82,82,94)",
|
||||
"appmenu_update_icon_color": "#54FFBD",
|
||||
"appmenu_info_icon_color": "#80EBFF",
|
||||
@@ -61,7 +60,8 @@
|
||||
@@ -58,7 +58,8 @@
|
||||
"color_scheme": "dark",
|
||||
"panel_active": "color-mix(in srgb, currentColor 14%, transparent)",
|
||||
"toolbar_field_icon_opacity": "1",
|
||||
@@ -51,7 +26,7 @@ index 544986d5e93c033f944cf301af79e0750864a32c..41b15b8d1e1bb146ef0cf8357ab08d44
|
||||
}
|
||||
},
|
||||
|
||||
@@ -88,7 +88,8 @@
|
||||
@@ -82,7 +83,8 @@
|
||||
"properties": {
|
||||
"panel_active": "--arrowpanel-dimmed-further",
|
||||
"toolbar_field_icon_opacity": "--urlbar-icon-fill-opacity",
|
||||
|
@@ -63,7 +63,7 @@
|
||||
"toolbar_field_icon_opacity": "0.72",
|
||||
"input_border_color": "rgba(0, 0, 0, .3)",
|
||||
"zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)",
|
||||
"zen_main_browser_background": "radial-gradient(346.69% 165.29% at 50% 50%, rgba(63, 94, 204, 0.50) 0%, rgba(249, 249, 249, 0.23) 100%), #CBD0DF"
|
||||
"zen_main_browser_background": "radial-gradient(ellipse, var(--zen-browser-gradient-base, #1B1E27) 20%, rgb(255, 255, 255) 100%)"
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -61,7 +61,7 @@
|
||||
"panel_active": "color-mix(in srgb, currentColor 14%, transparent)",
|
||||
"toolbar_field_icon_opacity": "1",
|
||||
"zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)",
|
||||
"zen_main_browser_background": "radial-gradient(236.2% 84.03% at 50% 50%, rgba(68, 0, 255, 0.20) 0%, rgba(63, 0, 0, 0.20) 100%), var(--zen-colors-primary, #1B1E27)"
|
||||
"zen_main_browser_background": "radial-gradient(ellipse, var(--zen-browser-gradient-base, #1B1E27) 20%, #1b1b1b 100%)"
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/addons/light/manifest.json b/browser/themes/addons/light/manifest.json
|
||||
index 7385970fa8e3ff9659b72cfb238003958220fb0d..be4d385cf4520a2cad437225e5fb31335bbc3091 100644
|
||||
index d490f8f08d203ded55b65fe1a19be105b61ee6c0..eb4349e939b979b3a4d7c525ee0c0f9a53079d4a 100644
|
||||
--- a/browser/themes/addons/light/manifest.json
|
||||
+++ b/browser/themes/addons/light/manifest.json
|
||||
@@ -7,10 +7,10 @@
|
||||
@@ -16,45 +16,20 @@ index 7385970fa8e3ff9659b72cfb238003958220fb0d..be4d385cf4520a2cad437225e5fb3133
|
||||
|
||||
"icons": { "32": "icon.svg" },
|
||||
|
||||
@@ -42,12 +42,12 @@
|
||||
"button": "rgba(207,207,216,.33)",
|
||||
"button_hover": "rgba(207,207,216,.66)",
|
||||
"button_active": "rgb(207,207,216)",
|
||||
- "button_primary": "rgb(0, 97, 224)",
|
||||
- "button_primary_hover": "rgb(2, 80, 187)",
|
||||
- "button_primary_active": "rgb(5, 62, 148)",
|
||||
- "button_primary_color": "rgb(251, 251, 254)",
|
||||
+ "button_primary": "#000",
|
||||
+ "button_primary_hover": "rgb(31, 31, 31)",
|
||||
+ "button_primary_active": "rgb(207,207,216)",
|
||||
+ "button_primary_color": "#fff",
|
||||
"input_color": "rgb(21,20,26)",
|
||||
- "input_background": "rgb(255,255,255)",
|
||||
+ "input_background": "#f0f0f4",
|
||||
"urlbar_popup_hover": "rgb(240,240,244)",
|
||||
"urlbar_popup_separator": "rgb(240,240,244)",
|
||||
"appmenu_update_icon_color": "#2AC3A2",
|
||||
@@ -57,12 +57,13 @@
|
||||
},
|
||||
"properties": {
|
||||
"color_scheme": "light",
|
||||
- "panel_hover": "color-mix(in srgb, currentColor 12%, transparent)",
|
||||
+ "panel_hover": "color-mix(in srgb, currentColor 10%, transparent)",
|
||||
@@ -59,7 +59,8 @@
|
||||
"panel_active": "color-mix(in srgb, currentColor 20%, transparent)",
|
||||
"panel_active_darker": "color-mix(in srgb, currentColor 27%, transparent)",
|
||||
"toolbar_field_icon_opacity": "0.72",
|
||||
- "input_border_color": "color-mix(in srgb, currentColor 41%, transparent)",
|
||||
- "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)"
|
||||
+ "input_border_color": "rgba(0, 0, 0, .3)",
|
||||
+ "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)",
|
||||
+ "zen_main_browser_background": "var(--zen-themed-toolbar-bg)"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -93,7 +94,8 @@
|
||||
@@ -86,7 +87,8 @@
|
||||
"panel_active": "--arrowpanel-dimmed-further",
|
||||
"panel_active_darker": "--panel-item-active-bgcolor",
|
||||
"toolbar_field_icon_opacity": "--urlbar-icon-fill-opacity",
|
||||
"input_border_color": "--input-border-color",
|
||||
- "zap_gradient": "--panel-separator-zap-gradient"
|
||||
+ "zap_gradient": "--panel-separator-zap-gradient",
|
||||
+ "zen_main_browser_background": "--zen-main-browser-background"
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css
|
||||
index 9e513830a9d9eeebe55cf6ab565b0575a943b088..05c8b716c0642f0ecebc47fe2759bc43474b6391 100644
|
||||
index 61119b7564d37e55f49dab7e6e14faafb4baa298..bcaad1a231cc839579ed209307c8e95cfb4c37de 100644
|
||||
--- a/browser/themes/shared/browser-shared.css
|
||||
+++ b/browser/themes/shared/browser-shared.css
|
||||
@@ -25,6 +25,8 @@
|
||||
@@ -27,6 +27,8 @@
|
||||
@import url("chrome://browser/skin/UITour.css");
|
||||
@import url("chrome://browser/skin/formautofill-notification.css");
|
||||
|
||||
@@ -10,8 +10,8 @@ index 9e513830a9d9eeebe55cf6ab565b0575a943b088..05c8b716c0642f0ecebc47fe2759bc43
|
||||
+
|
||||
@namespace html url("http://www.w3.org/1999/xhtml");
|
||||
|
||||
:root {
|
||||
@@ -49,7 +51,7 @@
|
||||
:root,
|
||||
@@ -75,7 +77,7 @@ body {
|
||||
--short-notification-gradient: #9059FF;
|
||||
|
||||
--button-bgcolor: color-mix(in srgb, currentColor 13%, transparent);
|
||||
@@ -20,23 +20,25 @@ index 9e513830a9d9eeebe55cf6ab565b0575a943b088..05c8b716c0642f0ecebc47fe2759bc43
|
||||
--button-active-bgcolor: color-mix(in srgb, currentColor 30%, transparent);
|
||||
--button-color: currentColor;
|
||||
--button-primary-bgcolor: AccentColor;
|
||||
@@ -145,9 +147,6 @@
|
||||
#navigator-toolbox {
|
||||
@@ -181,7 +183,6 @@ body {
|
||||
appearance: none;
|
||||
|
||||
- /* Toolbar / content area border */
|
||||
/* Toolbar / content area border */
|
||||
- border-bottom: 0.01px solid var(--chrome-content-separator-color);
|
||||
-
|
||||
|
||||
background-color: var(--toolbox-non-lwt-bgcolor);
|
||||
color: var(--toolbox-non-lwt-textcolor);
|
||||
|
||||
@@ -155,33 +154,8 @@
|
||||
@@ -190,37 +191,13 @@ body {
|
||||
transition: background-color var(--inactive-window-transition);
|
||||
|
||||
&:-moz-window-inactive {
|
||||
- background-color: var(--toolbox-non-lwt-bgcolor-inactive);
|
||||
color: var(--toolbox-non-lwt-textcolor-inactive);
|
||||
}
|
||||
|
||||
&[fullscreenShouldAnimate] {
|
||||
transition: 0.8s margin-top ease-out;
|
||||
}
|
||||
-
|
||||
- :root[customizing] & {
|
||||
- border-bottom-style: none;
|
||||
@@ -61,6 +63,7 @@ index 9e513830a9d9eeebe55cf6ab565b0575a943b088..05c8b716c0642f0ecebc47fe2759bc43
|
||||
- background-repeat: no-repeat, var(--lwt-background-tiling);
|
||||
- background-position: right top, var(--lwt-background-alignment);
|
||||
- }
|
||||
+
|
||||
}
|
||||
|
||||
.browser-toolbar {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/themes/shared/customizableui/panelUI-shared.css b/browser/themes/shared/customizableui/panelUI-shared.css
|
||||
index 4f282b9d5a5a3269268ae22f1702c7a6e8238375..d6e8e6cee7166f0eea99f260cca382eeece6684d 100644
|
||||
index e4409ac75f6ee794d400559b0b01ae30904d01bc..44d4e648aa5aac17b82e0e1f80c7a953c2923ebc 100644
|
||||
--- a/browser/themes/shared/customizableui/panelUI-shared.css
|
||||
+++ b/browser/themes/shared/customizableui/panelUI-shared.css
|
||||
@@ -717,8 +717,8 @@ toolbarbutton[constrain-size="true"][cui-areatype="panel"] > .toolbarbutton-badg
|
||||
@@ -720,15 +720,15 @@ toolbarbutton[constrain-size="true"][cui-areatype="panel"] > .toolbarbutton-badg
|
||||
/* Firefox Account Toolbar Panel */
|
||||
|
||||
#fxa-avatar-image {
|
||||
@@ -13,3 +13,11 @@ index 4f282b9d5a5a3269268ae22f1702c7a6e8238375..d6e8e6cee7166f0eea99f260cca382ee
|
||||
}
|
||||
|
||||
:root {
|
||||
--avatar-image-url: url(chrome://browser/skin/fxa/avatar.svg);
|
||||
|
||||
&[fxastatus="not_configured"] {
|
||||
- --avatar-image-url: url(chrome://browser/skin/fxa/avatar-empty.svg);
|
||||
+ --avatar-image-url: var(--zen-avatar-image-url);
|
||||
}
|
||||
|
||||
&:not([fxatoolbarmenu]) #fxa-toolbar-menu-button {
|
||||
|
@@ -1,17 +1,29 @@
|
||||
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
|
||||
index 39cf7c917aa8807d491cc6a3702e398569681022..6e6942d97596540b0823c7934062ad2d63fa415c 100644
|
||||
index 39ae2b00791a7bfd875961de60736612f08892ae..03fe5e42f34ad985f0e04ef46b834a9d223585ee 100644
|
||||
--- a/browser/themes/shared/identity-block/identity-block.css
|
||||
+++ b/browser/themes/shared/identity-block/identity-block.css
|
||||
@@ -65,10 +65,10 @@
|
||||
@@ -64,8 +64,9 @@
|
||||
}
|
||||
|
||||
#identity-box[pageproxystate="valid"].notSecureText > .identity-box-button,
|
||||
-#identity-box[pageproxystate="valid"].chromeUI > .identity-box-button,
|
||||
#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button,
|
||||
+#identity-box[pageproxystate="valid"] > .identity-box-button,
|
||||
#identity-box[pageproxystate="valid"].extensionPage > .identity-box-button,
|
||||
#urlbar-label-box {
|
||||
- background-color: var(--urlbar-box-bgcolor);
|
||||
+ background-color: light-dark(white, rgb(66, 65, 77));
|
||||
color: var(--urlbar-box-text-color);
|
||||
padding-inline: 8px;
|
||||
border-radius: var(--urlbar-icon-border-radius);
|
||||
@@ -154,11 +155,11 @@
|
||||
}
|
||||
|
||||
#urlbar:not(.searchButton) > .urlbar-input-container > #identity-box[pageproxystate="invalid"] #identity-icon {
|
||||
- list-style-image: url(chrome://global/skin/icons/search-glass.svg);
|
||||
+ list-style-image: url(chrome://global/skin/icons/search-glass.svg) !important;
|
||||
}
|
||||
|
||||
#urlbar[actiontype="extension"] > .urlbar-input-container > #identity-box #identity-icon {
|
||||
- list-style-image: url(chrome://mozapps/skin/extensions/extension.svg);
|
||||
+ list-style-image: url(chrome://mozapps/skin/extensions/extension.svg) !important;
|
||||
}
|
||||
|
||||
#identity-box[pageproxystate="valid"].extensionPage #identity-icon {
|
||||
|
@@ -185,3 +185,9 @@ groupbox h2 {
|
||||
position: absolute;
|
||||
background: var(--zen-colors-tertiary);
|
||||
}
|
||||
|
||||
/* Workspace */
|
||||
|
||||
#category-zen-workspaces > .category-icon {
|
||||
list-style-image: url("chrome://browser/skin/window.svg");
|
||||
}
|
||||
|
@@ -1,9 +1,9 @@
|
||||
diff --git a/browser/components/tabpreview/tabpreview.css b/browser/components/tabpreview/tabpreview.css
|
||||
index e978266e5da72f3051d5455d7a3f2867a88648c5..c57e844107ea6e99b406422496e9b41511089594 100644
|
||||
--- a/browser/components/tabpreview/tabpreview.css
|
||||
+++ b/browser/components/tabpreview/tabpreview.css
|
||||
@@ -42,3 +42,24 @@
|
||||
width: 100%;
|
||||
diff --git a/browser/themes/shared/tabbrowser/tab-hover-preview.css b/browser/themes/shared/tabbrowser/tab-hover-preview.css
|
||||
index 5df2561b9f0e5497a596e4e261ceaac30778e754..cbea9912e7ae15f7a277ecbdcd681cc4e7a4da72 100644
|
||||
--- a/browser/themes/shared/tabbrowser/tab-hover-preview.css
|
||||
+++ b/browser/themes/shared/tabbrowser/tab-hover-preview.css
|
||||
@@ -44,3 +44,24 @@
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
+
|
||||
@@ -27,4 +27,3 @@ index e978266e5da72f3051d5455d7a3f2867a88648c5..c57e844107ea6e99b406422496e9b415
|
||||
+.tab-preview-thumbnail-container canvas {
|
||||
+ border-top: 1px solid var(--zen-border-color);
|
||||
+}
|
||||
\ No newline at end of file
|
66
src/browser/themes/shared/tabbrowser/tabs-css.patch
Normal file
66
src/browser/themes/shared/tabbrowser/tabs-css.patch
Normal file
@@ -0,0 +1,66 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
||||
index 9a915ff442cc7f01ddec3fcea931c21e210cac92..19126b25ac7a63fe193628dd11a93507bd4bc63a 100644
|
||||
--- a/browser/themes/shared/tabbrowser/tabs.css
|
||||
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
#tabbrowser-tabs {
|
||||
--tab-min-width: 76px;
|
||||
- --tab-loading-fill: #0A84FF;
|
||||
+ --tab-loading-fill: var(--zen-primary-color);
|
||||
--tab-overflow-pinned-tabs-width: 0px;
|
||||
padding-inline: var(--tab-overflow-pinned-tabs-width) 0;
|
||||
/* Use a bigger flex value than the searchbar to prevent it from
|
||||
@@ -103,7 +103,7 @@
|
||||
* (we only have 2px padding in the inline direction) */
|
||||
overflow-clip-margin: 2px;
|
||||
|
||||
- &:not([pinned]) {
|
||||
+ & {
|
||||
flex: 100 100;
|
||||
max-width: 225px;
|
||||
min-width: var(--tab-min-width);
|
||||
@@ -126,7 +126,7 @@
|
||||
flex-shrink: 0;
|
||||
|
||||
#tabbrowser-tabs[positionpinnedtabs] > #tabbrowser-arrowscrollbox > & {
|
||||
- position: absolute !important;
|
||||
+ /*position: absolute !important;*/
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@@ -360,7 +360,7 @@
|
||||
&[selected]:not([src], [pinned], [crashed], [pictureinpicture]),
|
||||
&:not([src], [pinned], [crashed], [sharing], [pictureinpicture]),
|
||||
&[busy] {
|
||||
- display: none;
|
||||
+ /*display: none;*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -627,7 +627,7 @@
|
||||
|
||||
#tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) > #tabbrowser-arrowscrollbox > .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) {
|
||||
/* Add a gap between the last pinned tab and the first visible tab */
|
||||
- margin-inline-start: 12px !important; /* .tabbrowser-tab sets margin: 0 !important; */
|
||||
+ margin-inline-start: auto !important; /* .tabbrowser-tab sets margin: 0 !important; */
|
||||
}
|
||||
|
||||
.tab-label[attention]:not([selected]) {
|
||||
@@ -737,6 +737,7 @@
|
||||
.titlebar-spacer[type="pre-tabs"],
|
||||
.titlebar-spacer[type="post-tabs"] {
|
||||
width: 40px;
|
||||
+ display: none !important;
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
@@ -752,7 +753,7 @@
|
||||
toolbarbutton:not(#firefox-view-button),
|
||||
toolbarpaletteitem:not(#wrapper-firefox-view-button)
|
||||
) + #tabbrowser-tabs {
|
||||
- border-inline-start: 1px solid color-mix(in srgb, currentColor 25%, transparent);
|
||||
+ border-inline-start: transparent;
|
||||
padding-inline-start: calc(var(--tab-overflow-pinned-tabs-width) + 2px);
|
||||
margin-inline-start: 2px;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
diff --git a/browser/themes/shared/tabs.css b/browser/themes/shared/tabs.css
|
||||
index eb92f71e5942a19618fd74492354de78ac03bacf..28d23667991c9feff7a379acaa5f7c7928fb14cf 100644
|
||||
--- a/browser/themes/shared/tabs.css
|
||||
+++ b/browser/themes/shared/tabs.css
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
#tabbrowser-tabs {
|
||||
--tab-min-width: 76px;
|
||||
- --tab-loading-fill: #0A84FF;
|
||||
+ --tab-loading-fill: var(--zen-primary-color);
|
||||
--tab-overflow-pinned-tabs-width: 0px;
|
||||
padding-inline: var(--tab-overflow-pinned-tabs-width) 0;
|
||||
/* Use a bigger flex value than the searchbar to prevent it from
|
||||
@@ -618,6 +618,7 @@
|
||||
.titlebar-spacer[type="pre-tabs"],
|
||||
.titlebar-spacer[type="post-tabs"] {
|
||||
width: 40px;
|
||||
+ display: none !important;
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
@@ -633,7 +634,7 @@
|
||||
toolbarbutton:not(#firefox-view-button),
|
||||
toolbarpaletteitem:not(#wrapper-firefox-view-button)
|
||||
) + #tabbrowser-tabs {
|
||||
- border-inline-start: 1px solid color-mix(in srgb, currentColor 25%, transparent);
|
||||
+ border-inline-start: transparent;
|
||||
padding-inline-start: calc(var(--tab-overflow-pinned-tabs-width) + 2px);
|
||||
margin-inline-start: 2px;
|
||||
}
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
|
||||
index f535fba9df5e7595c974e45dd95849d05736957f..19437c90e0f438384e2a223feff99bc93a441684 100644
|
||||
--- a/browser/themes/shared/toolbarbuttons.css
|
||||
+++ b/browser/themes/shared/toolbarbuttons.css
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
> .toolbarbutton-icon,
|
||||
> .toolbarbutton-badge-stack > .toolbarbutton-icon {
|
||||
- width: 16px;
|
||||
+ width: 20px;
|
||||
}
|
||||
}
|
||||
|
@@ -1,22 +1,12 @@
|
||||
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
|
||||
index b5684c5f6f4b932070ef2bc53750504791f7f3c3..c3ffdb99adbb4a331967b93181d536dad1a41488 100644
|
||||
index 41798f42cfb365116926af97a070dce3ebf6e443..75d1cda0c7938ba36f694e0f770db1820acd01ca 100644
|
||||
--- a/browser/themes/shared/urlbar-searchbar.css
|
||||
+++ b/browser/themes/shared/urlbar-searchbar.css
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
#urlbar-background,
|
||||
#searchbar {
|
||||
- background-color: var(--toolbar-field-background-color);
|
||||
+ background-color: var(--zen-urlbar-background);
|
||||
background-clip: border-box;
|
||||
border: 1px solid var(--toolbar-field-border-color);
|
||||
border-radius: var(--toolbarbutton-border-radius);
|
||||
@@ -92,7 +92,7 @@
|
||||
--toolbar-field-focus-border-color is set equal to --focus-outline-color
|
||||
on :root, but LWT themes can override this value. */
|
||||
outline-color: var(--toolbar-field-focus-border-color);
|
||||
- border-color: transparent;
|
||||
+ /*border-color: transparent;*/
|
||||
}
|
||||
|
||||
#urlbar[focused="true"] > #urlbar-background,
|
||||
@@ -19,6 +19,7 @@
|
||||
#urlbar[breakout-extend] > .urlbar-input-container > #urlbar-label-box > #urlbar-label-search-mode,
|
||||
.urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action,
|
||||
#identity-box.chromeUI ~ #page-action-buttons > .urlbar-page-action:not(#star-button-box),
|
||||
+#urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action:not(#zen-split-views-box),
|
||||
#urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button,
|
||||
#urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
|
||||
#urlbar:not([focused]) > .urlbar-input-container > .urlbar-go-button {
|
||||
|
@@ -42,9 +42,11 @@
|
||||
/* URL and tool bars */
|
||||
|
||||
#urlbar {
|
||||
--toolbarbutton-border-radius: 999px;
|
||||
border: transparent;
|
||||
overflow: hidden;
|
||||
padding: 1px;
|
||||
border-radius: var(--toolbarbutton-border-radius);
|
||||
}
|
||||
|
||||
#zen-website-and-native-separator {
|
||||
@@ -80,12 +82,16 @@
|
||||
outline-color: none !important;
|
||||
}
|
||||
|
||||
#urlbar, #urlbar .urlbar-page-action,
|
||||
#urlbar .urlbar-page-action,
|
||||
#urlbar #tracking-protection-icon-container,
|
||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI) #identity-icon-box {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
#urlbar[breakout-extend="true"] {
|
||||
--toolbarbutton-border-radius: 6px;
|
||||
}
|
||||
|
||||
#identity-icon-label {
|
||||
padding-inline-start: 8px !important;
|
||||
}
|
||||
@@ -94,7 +100,7 @@
|
||||
border-radius: 5px !important;
|
||||
}
|
||||
|
||||
#urlbar:not([focused="true"]) #identity-box.chromeUI #identity-icon-box {
|
||||
#urlbar:not([breakout-extend="true"]) #identity-box.chromeUI #identity-icon-box {
|
||||
border-radius: 20px 10px 10px 20px !important;
|
||||
}
|
||||
|
||||
@@ -139,7 +145,7 @@
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
toolbar .toolbarbutton-1 {
|
||||
toolbar .toolbarbutton-1:not(.unified-extensions-item-action-button) {
|
||||
& > .toolbarbutton-icon,
|
||||
& > .toolbarbutton-badge-stack {
|
||||
width: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
|
||||
@@ -324,15 +330,37 @@ toolbarbutton#scrollbutton-up {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[pinned]:last-of-type {
|
||||
/** Todo: add a separator */
|
||||
}
|
||||
|
||||
.tabbrowser-tab:is([multiselected="true"], [selected]) {
|
||||
/*border-color: light-dark(var(--zen-colors-border), rgba(255, 255, 255, 0.15));*/
|
||||
background: var(--toolbarbutton-hover-background);
|
||||
}
|
||||
|
||||
.tabbrowser-tab {
|
||||
margin-inline-start: 0 !important;
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[pinned] {
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab:nth-last-child(1 of [pinned]) {
|
||||
margin-bottom: 5px !important;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -5px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 1.5px;
|
||||
border-radius: 1px;
|
||||
background: var(--zen-colors-border);
|
||||
}
|
||||
}
|
||||
|
||||
.tab-close-button {
|
||||
position: absolute;
|
||||
display: none;
|
||||
@@ -372,6 +400,7 @@ toolbarbutton#scrollbutton-up {
|
||||
|
||||
.tab-icon-overlay {
|
||||
margin-inline-end: 0 !important;
|
||||
display: none !important; /* TODO: fix this */
|
||||
}
|
||||
|
||||
/*#tabbrowser-arrowscrollbox {
|
||||
@@ -397,10 +426,6 @@ toolbarbutton#scrollbutton-up {
|
||||
--focus-outline-color: var(--zen-primary-btn-color) !important;
|
||||
}
|
||||
|
||||
menuseparator {
|
||||
--panel-separator-color: var(--zen-colors-secondary) !important;
|
||||
}
|
||||
|
||||
/** Specific dialogs override */
|
||||
|
||||
#identity-popup-multiView toolbarseparator,
|
||||
@@ -448,6 +473,7 @@ panelmultiview {
|
||||
|
||||
#tabbrowser-tabbox #tabbrowser-tabpanels .browserStack > browser {
|
||||
border-radius: var(--zen-browser-border-radius);
|
||||
clip-path: inset(0px 0px 0px round var(--zen-browser-border-radius) 0) !important;
|
||||
}
|
||||
|
||||
#nav-bar {
|
||||
@@ -465,53 +491,76 @@ panelmultiview {
|
||||
|
||||
@media (-moz-bool-pref: "zen.view.compact") {
|
||||
#navigator-toolbox,
|
||||
#zen-appcontent-navbar-container {
|
||||
position: absolute;
|
||||
#zen-appcontent-navbar-container #nav-bar {
|
||||
z-index: 1;
|
||||
overflow: hidden;
|
||||
opacity: 0;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
#navigator-toolbox {
|
||||
width: 1px;
|
||||
max-width: 1px;
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#zen-appcontent-navbar-container {
|
||||
#zen-appcontent-navbar-container #nav-bar {
|
||||
min-height: 0;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox:has([open="true"]) {
|
||||
width: unset;
|
||||
overflow: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#zen-appcontent-navbar-container:hover,
|
||||
#zen-appcontent-navbar-container:has([open="true"]) {
|
||||
height: unset;
|
||||
background: var(--zen-themed-toolbar-bg) !important;
|
||||
overflow: visible;
|
||||
border-bottom: var(--zen-appcontent-border) !important;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#navigator-toolbox:hover #titlebar,
|
||||
#navigator-toolbox:has([open="true"]) #titlebar {
|
||||
background: var(--zen-themed-toolbar-bg) !important;
|
||||
border-right: var(--zen-appcontent-border) !important;
|
||||
padding: 0 5px;
|
||||
max-height: 1px;
|
||||
}
|
||||
|
||||
#tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
|
||||
margin: 10px !important;
|
||||
margin-right: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
width: -moz-available;
|
||||
}
|
||||
|
||||
:root:has(
|
||||
:is(
|
||||
#navigator-toolbox:hover,
|
||||
#navigator-toolbox *[open="true"]:not(tab),
|
||||
#zen-appcontent-navbar-container:hover,
|
||||
#zen-appcontent-navbar-container *[open="true"]:not(tab)
|
||||
)
|
||||
) {
|
||||
& #zen-appcontent-navbar-container #nav-bar,
|
||||
& #navigator-toolbox {
|
||||
max-width: unset;
|
||||
max-height: unset;
|
||||
overflow: visible;
|
||||
opacity: 1;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
& #navigator-toolbox {
|
||||
border-right: var(--zen-appcontent-border) !important;
|
||||
width: unset;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
& #zen-appcontent-navbar-container #nav-bar {
|
||||
border-bottom: var(--zen-appcontent-border) !important;
|
||||
}
|
||||
|
||||
& #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
|
||||
margin-top: 10px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:root:is([chromehidden~="location"],[chromehidden~="toolbar"]) {
|
||||
--zen-browser-border-radius: 0 !important;
|
||||
|
||||
& #navigator-toolbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
& #tabbrowser-tabpanels {
|
||||
margin: 0 !important;
|
||||
|
||||
& .browserSidebarContainer {
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Screenshots */
|
||||
@@ -522,3 +571,31 @@ panelmultiview {
|
||||
right: 1.5%;
|
||||
}
|
||||
|
||||
/* Watermark */
|
||||
|
||||
#zen-watermark {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--zen-main-browser-background);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
#zen-watermark image {
|
||||
opacity: .2;
|
||||
filter: grayscale(100%);
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#zen-watermark[hidden="true"] {
|
||||
transition: 0.6s;
|
||||
transition-delay: 1.5s;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
@@ -81,7 +81,8 @@
|
||||
}
|
||||
|
||||
#PanelUI-menu-button,
|
||||
#appMenu-more-button2 {
|
||||
#appMenu-more-button2,
|
||||
#zen-workspace-actions-menu-icon {
|
||||
list-style-image: url("menu.svg") !important;
|
||||
}
|
||||
|
||||
@@ -153,7 +154,8 @@
|
||||
#TabsToolbar #new-tab-button,
|
||||
#appMenu-zoomEnlarge-button2,
|
||||
#PanelUI-zen-profiles-newProfile,
|
||||
#zen-sidebar-add-panel-button {
|
||||
#zen-sidebar-add-panel-button,
|
||||
#PanelUI-zen-workspaces-new image {
|
||||
list-style-image: url("plus.svg") !important;
|
||||
}
|
||||
|
||||
@@ -667,7 +669,8 @@ menuitem[id="placesContext_deleteFolder"],
|
||||
menuitem[id="placesContext_delete"],
|
||||
menuitem[id="placesContext_delete_history"],
|
||||
menuitem[id="placesContext_deleteHost"],
|
||||
#context_zenDeleteWebPanel {
|
||||
#context_zenDeleteWebPanel,
|
||||
#context_zenDeleteWorkspace {
|
||||
--menu-image: url("edit-delete.svg");
|
||||
}
|
||||
|
||||
|
@@ -122,21 +122,35 @@
|
||||
}
|
||||
|
||||
|
||||
#PanelUI-zen-profiles-managePrfs {
|
||||
#PanelUI-zen-profiles-actions {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
border-radius: 5px !important;
|
||||
padding: 5px !important;
|
||||
border-radius: 10px !important;
|
||||
padding: 1px 10px !important;
|
||||
transition: .1s;
|
||||
color: light-dark(white, black);
|
||||
background: light-dark(rgba(255, 255, 255, 0.1), rgba(0, 0, 0, 0.1));
|
||||
}
|
||||
|
||||
#PanelUI-zen-profiles-managePrfs:hover {
|
||||
background: var(--panel-item-hover-bgcolor);
|
||||
}
|
||||
|
||||
#PanelUI-zen-profiles-managePrfs label {
|
||||
#PanelUI-zen-profiles-actions toolbarbutton {
|
||||
cursor: pointer;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#PanelUI-zen-profiles-actions toolbarbutton .toolbarbutton-icon {
|
||||
width: 14px !important;
|
||||
}
|
||||
|
||||
#PanelUI-zen-profiles-actions toolbarbutton:not(:first-child) {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-profiles-actions toolbarbutton label {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@@ -220,3 +234,126 @@
|
||||
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid box:nth-child(3) {
|
||||
grid-area: c;
|
||||
}
|
||||
|
||||
/* Workspaces */
|
||||
|
||||
#zen-workspaces-button {
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
border-radius: 50px;
|
||||
height: calc(var(--zen-sidebar-action-button-width) - 10px) !important;
|
||||
margin-bottom: 5px !important;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces {
|
||||
--panel-width: 320px;
|
||||
width: var(--panel-width);
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces > panelmultiview {
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces panelmultiview panelview {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-input {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces .panel-viewcontainer,
|
||||
#PanelUI-zen-workspaces .panel-viewstack {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-current-info toolbarbutton:last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-list toolbarbutton,
|
||||
#PanelUI-zen-workspaces-current-info toolbarbutton {
|
||||
padding: 5px;
|
||||
border-radius: 7px;
|
||||
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
& .zen-workspace-icon {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 7px;
|
||||
margin-right: 10px;
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
& .zen-workspace-name {
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
& .zen-workspace-actions {
|
||||
display: none;
|
||||
margin: 0;
|
||||
margin-left: auto !important;
|
||||
}
|
||||
|
||||
&:hover .zen-workspace-actions,
|
||||
& .zen-workspace-actions[active="true"] {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-current-info toolbarbutton:first-child {
|
||||
margin-bottom: 10px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-view vbox:nth-child(2) {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-new {
|
||||
margin-left: auto;
|
||||
min-height: 1px !important;
|
||||
padding: 3px;
|
||||
border-radius: 4px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-footer {
|
||||
padding-bottom: 0 !important;
|
||||
margin-top: 20px;
|
||||
margin-left: 0;
|
||||
margin-bottom: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#PanelUI-zen-workspaces-create-footer button[default="true"] {
|
||||
width: 100%;
|
||||
}
|
||||
|
@@ -163,7 +163,6 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 3px;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
background: transparent !important;
|
||||
align-items: center;
|
||||
|
11
src/build/application-ini-in.patch
Normal file
11
src/build/application-ini-in.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
diff --git a/build/application.ini.in b/build/application.ini.in
|
||||
index 6df13230a45b2a86356f4e5a7b189c46f53e44cc..47fc729cba7d9cb612bfa0297a24644925ab53af 100644
|
||||
--- a/build/application.ini.in
|
||||
+++ b/build/application.ini.in
|
||||
@@ -52,5 +52,5 @@ ServerURL=@MOZ_CRASHREPORTER_URL@/submit?id=@MOZ_APP_ID@&version=@MOZ_APP_VERSIO
|
||||
|
||||
#if MOZ_UPDATER
|
||||
[AppUpdate]
|
||||
-URL=https://@MOZ_APPUPDATE_HOST@/update/6/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%SYSTEM_CAPABILITIES%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml
|
||||
+URL=https://@MOZ_APPUPDATE_HOST@/updates/browser/%BUILD_TARGET%/%CHANNEL%/update.xml
|
||||
#endif
|
13
src/build/moz-build.patch
Normal file
13
src/build/moz-build.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/build/moz.build b/build/moz.build
|
||||
index 7bf9c501db06d38f924c26372d4243d448af8d81..6042ccfcbfb838ffefe078a72eee00a83fb252f6 100644
|
||||
--- a/build/moz.build
|
||||
+++ b/build/moz.build
|
||||
@@ -91,7 +91,7 @@ if CONFIG["MOZ_APP_BASENAME"]:
|
||||
if CONFIG[var]:
|
||||
appini_defines[var] = True
|
||||
|
||||
- appini_defines["MOZ_APPUPDATE_HOST"] = "aus5.mozilla.org"
|
||||
+ appini_defines["MOZ_APPUPDATE_HOST"] = "zen-updates.vercel.app"
|
||||
if CONFIG["MOZ_APPUPDATE_HOST"]:
|
||||
appini_defines["MOZ_APPUPDATE_HOST"] = CONFIG["MOZ_APPUPDATE_HOST"]
|
||||
|
18
src/gfx/wr/webrender/src/picture-rs.patch
Normal file
18
src/gfx/wr/webrender/src/picture-rs.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
diff --git a/gfx/wr/webrender/src/picture.rs b/gfx/wr/webrender/src/picture.rs
|
||||
index f22bcadd0624d9a22f5c3fa318d7795e102b890f..68d1eb55abde2a9b5779b1d07c5f111f46f177a8 100644
|
||||
--- a/gfx/wr/webrender/src/picture.rs
|
||||
+++ b/gfx/wr/webrender/src/picture.rs
|
||||
@@ -7449,7 +7449,12 @@ fn get_relative_scale_offset(
|
||||
CoordinateSpaceMapping::Local => ScaleOffset::identity(),
|
||||
CoordinateSpaceMapping::ScaleOffset(scale_offset) => scale_offset,
|
||||
CoordinateSpaceMapping::Transform(m) => {
|
||||
- ScaleOffset::from_transform(&m).expect("bug: pictures caches don't support complex transforms")
|
||||
+ // Temporary fix when opening extensions (#34)
|
||||
+ // TODO: Look more into this
|
||||
+ ScaleOffset {
|
||||
+ scale: Vector2D::new(m.m11, m.m22),
|
||||
+ offset: Vector2D::new(m.m41, m.m42),
|
||||
+ }
|
||||
}
|
||||
};
|
||||
|
@@ -13,7 +13,7 @@
|
||||
toolbox#navigator-toolbox,
|
||||
#browser {
|
||||
background: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
#browser {
|
||||
width: 100%;
|
||||
|
@@ -0,0 +1,34 @@
|
||||
diff --git a/toolkit/locales/en-US/toolkit/branding/brandings.ftl b/toolkit/locales/en-US/toolkit/branding/brandings.ftl
|
||||
index cc95fbc3b8e1123b6bf3d0fb4cd35a456e413da4..9a090c6a238bdeada9e22514b21bd2b9d39a2b88 100644
|
||||
--- a/toolkit/locales/en-US/toolkit/branding/brandings.ftl
|
||||
+++ b/toolkit/locales/en-US/toolkit/branding/brandings.ftl
|
||||
@@ -20,10 +20,10 @@
|
||||
-mozmonitor-brand-name = Mozilla Monitor
|
||||
-pocket-brand-name = Pocket
|
||||
-send-brand-name = Firefox Send
|
||||
--screenshots-brand-name = Firefox Screenshots
|
||||
+-screenshots-brand-name = Zen Screenshots
|
||||
-mozilla-vpn-brand-name = Mozilla VPN
|
||||
--profiler-brand-name = Firefox Profiler
|
||||
--translations-brand-name = Firefox Translations
|
||||
+-profiler-brand-name = Zen Profiler
|
||||
+-translations-brand-name = Zen Translations
|
||||
-focus-brand-name = Firefox Focus
|
||||
-relay-brand-name = Firefox Relay
|
||||
-relay-brand-short-name = Relay
|
||||
@@ -37,12 +37,12 @@
|
||||
|
||||
# “Suggest” can be localized, “Firefox” must be treated as a brand
|
||||
# and kept in English.
|
||||
--firefox-suggest-brand-name = Firefox Suggest
|
||||
+-firefox-suggest-brand-name = Zen Suggest
|
||||
|
||||
# ”Home" can be localized, “Firefox” must be treated as a brand
|
||||
# and kept in English.
|
||||
--firefox-home-brand-name = Firefox Home
|
||||
+-firefox-home-brand-name = Zen Home
|
||||
|
||||
# View" can be localized, “Firefox” must be treated as a brand
|
||||
# and kept in English.
|
||||
--firefoxview-brand-name = Firefox View
|
||||
+-firefoxview-brand-name = Zen View
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/themes/shared/in-content/common-shared.css b/toolkit/themes/shared/in-content/common-shared.css
|
||||
index c8f4f3efd231d007e024f039170efd58a8a9de86..f5e3296d20580afc0973cc87685d2ac35b6cfc10 100644
|
||||
index 542e38159dde876566f520f7d45d5387c1982d34..92705331fa12d88e9091310c1f527562931e7132 100644
|
||||
--- a/toolkit/themes/shared/in-content/common-shared.css
|
||||
+++ b/toolkit/themes/shared/in-content/common-shared.css
|
||||
@@ -5,6 +5,8 @@
|
||||
@@ -20,3 +20,13 @@ index c8f4f3efd231d007e024f039170efd58a8a9de86..f5e3296d20580afc0973cc87685d2ac3
|
||||
|
||||
--dialog-warning-text-color: var(--red-60);
|
||||
|
||||
@@ -791,7 +793,8 @@ html|*#categories > html|*.category:dir(rtl) {
|
||||
@media not (forced-colors) {
|
||||
#categories > .category[selected],
|
||||
#categories > .category.selected {
|
||||
- color: var(--in-content-accent-color);
|
||||
+ /*color: var(--in-content-accent-color);*/
|
||||
+ opacity: .7;
|
||||
}
|
||||
|
||||
#categories > .category[selected]:not(:hover) {
|
||||
|
@@ -81,6 +81,8 @@
|
||||
--urlbar-box-bgcolor: light-dark(white, rgb(66, 65, 77)) !important;
|
||||
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77)) !important;
|
||||
|
||||
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 50%, white 50%);
|
||||
|
||||
/* TODO: Support dark themes! */
|
||||
}
|
||||
|
||||
@@ -101,7 +103,8 @@
|
||||
|
||||
--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-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, black 70%);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -36,8 +36,8 @@
|
||||
--uc-contextmenu-separator-vertical: calc(4px - var(--uc-contextmenu-menuitem-border-width));
|
||||
--uc-contextmenu-separator-horizontal: 0;
|
||||
|
||||
--panel-separator-color: var(--zen-colors-secondary) !important;
|
||||
--zen-panel-separator-width: 2px;
|
||||
--panel-separator-color: var(--zen-colors-border) !important;
|
||||
--zen-panel-separator-width: 1px;
|
||||
}
|
||||
|
||||
/* app menu */
|
||||
|
@@ -5,12 +5,10 @@
|
||||
"binaryName": "zen",
|
||||
"version": {
|
||||
"product": "firefox",
|
||||
"version": "127.0.2",
|
||||
"displayVersion": "1.0.0"
|
||||
"version": "128.0"
|
||||
},
|
||||
"buildOptions": {
|
||||
"generateBranding": true,
|
||||
"windowsUseSymbolicLinks": false
|
||||
"generateBranding": true
|
||||
},
|
||||
"addons": {},
|
||||
"brands": {
|
||||
@@ -29,7 +27,7 @@
|
||||
"brandShortName": "Zen Browser",
|
||||
"brandFullName": "Zen Browser",
|
||||
"release": {
|
||||
"displayVersion": "0.0.0-a.0",
|
||||
"displayVersion": "1.0.0-a.4",
|
||||
"github": {
|
||||
"repo": "zen-browser/desktop"
|
||||
},
|
||||
@@ -46,5 +44,6 @@
|
||||
".*\\.json"
|
||||
],
|
||||
"licenseType": "MPL-2.0"
|
||||
}
|
||||
},
|
||||
"updateHostname": "zen-updates.vercel.app"
|
||||
}
|
Reference in New Issue
Block a user