This commit is contained in:
mauro 🤙
2024-08-18 15:11:13 +00:00
100 changed files with 2541 additions and 2391 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
*.patch linguist-language=C++

View File

@@ -300,6 +300,12 @@ jobs:
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
- name: Upload artifact (ZSync)
uses: actions/upload-artifact@v4
with:
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
release:
if: ${{ github.event.inputs.create_release == 'true' }}
permissions: write-all
@@ -360,7 +366,9 @@ jobs:
zen.linux-generic.tar.bz2
zen.linux-specific.tar.bz2
zen-generic.AppImage
zen-generic.AppImage.zsync
zen-specific.AppImage
zen-specific.AppImage.zsync
zen.win-generic.zip
zen.win-specific.zip
linux.mar

View File

@@ -0,0 +1,88 @@
on:
workflow_call:
inputs:
build-version:
description: 'The version to build'
required: true
type: string
profile-data-path-archive:
description: 'The path to the zip archive containing the profile data'
required: false
type: string
jobs:
windows-profile-build:
name: Windows Profile Build - ${{ matrix.generic == true && 'generic' || 'specific' }}
strategy:
fail-fast: false
matrix:
generic: [true, false]
runs-on: windows-latest
# Script edited from https://github.com/Floorp-Projects/Floorp/blob/ESR115/.github/workflows/window-generate-profile-data-and-jarlog.yml
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js and pnpm
uses: actions/setup-node@v3
with:
node-version: 20
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install pnpm
run: npm install -g pnpm
- name: Install Surfer
run: |
npm i -g @zen-browser/surfer
- uses: actions/download-artifact@v4
name: Download artifact
with:
path: C:\artifact
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
- name: Unpack artifact
run: |
cd C:\artifact
ls
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
ls
- name: Setup
run: |
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe","C:\MozillaBuildSetup-Latest.exe")
C:\MozillaBuildSetup-Latest.exe /S | out-null
- name: Download firefox
run: |
git config --global core.safecrlf false
pnpm surfer download
- name: Generate
run: |
ls
$Env:USE_MINTTY = "0"
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
$workspace_dir = $workspace_dir_current + "/engine"
echo $workspace_dir
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> mozilla-build-run.sh
echo './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> mozilla-build-run.sh
echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
- name: 🐛 Debug Session
if: ${{ failure() }}
uses: Warpbuilds/gha-debug@v1.3
timeout-minutes: 15
- name: Publish merged.profdata
uses: actions/upload-artifact@v4
with:
path: merged-${{ matrix.generic == true && 'generic' || 'specific' }}.profdata
- name: Publish en-US.log
uses: actions/upload-artifact@v4
with:
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log

View File

@@ -14,7 +14,7 @@ Experience tranquillity while browsing the web without people tracking you!
# Compatibility
Zen is currently built using firefox version `129.0`!
Zen is currently built using firefox version `129.0.1`!
* Checkout the latest [releases notes](https://www.zen-browser.app/release-notes)!
@@ -60,9 +60,15 @@ npm start
## Special Thanks
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
- [Erlend](https://havn.blog) (For making the logo)
- [Donno 🐒](https://www.onnno.nl/) (For making the logo)
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
## Third Party Code
Zen coudn't be in its current state without the help of these amazing projects!
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
## License
[MPL LICENSE](/LICENSE)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 889 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 890 B

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 889 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 890 B

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -16,10 +16,9 @@ export MOZ_DISTRIBUTION_ID=${appId}
# ac_add_options --enable-linker=gold
# Misc
export MOZ_STUB_INSTALLER=1
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
export MOZ_SOURCE_CHANGESET=${changeset}
export MOZ_INCLUDE_SOURCE_INFO=1
#export MOZ_INCLUDE_SOURCE_INFO=1
ac_add_options --enable-application=browser
@@ -34,6 +33,8 @@ if test "$ZEN_RELEASE"; then
ac_add_options --disable-jprof
ac_add_options --enable-rust-simd
ac_add_options --enable-wasm-simd
mk_add_options MOZ_PARALLEL_COMPILE=1
ac_add_options --enable-proxy-bypass-protection
@@ -43,9 +44,9 @@ if test "$ZEN_RELEASE"; then
ac_add_options --disable-crashreporter
ac_add_options --disable-geckodriver
ac_add_options --disable-rust-tests
ac_add_options --disable-default-browser-agent
ac_add_options --disable-vtune
# Done by vlad, if something fails, it's his fault
ac_add_options --disable-default-browser-agent
if ! test "$ZEN_DISABLE_LTO"; then
export MOZ_LTO=1
@@ -74,7 +75,7 @@ if test "$ZEN_RELEASE"; then
ac_add_options --enable-updater
export MOZ_PACKAGE_JSSHELL=1
#export MOZ_PACKAGE_JSSHELL=1
fi
ac_add_options --enable-unverified-updates

View File

@@ -13,6 +13,9 @@ if test "$ZEN_RELEASE"; then
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
ac_add_options --disable-gpsd
ac_add_options --disable-necko-wifi
ac_add_options --enable-install-strip
ac_add_options --enable-strip
export STRIP_FLAGS="--strip-debug --strip-unneeded"
@@ -46,6 +49,10 @@ if test "$ZEN_RELEASE"; then
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1"
fi
export VERBOSE=1
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
fi
ac_add_options --target=x86_64-pc-linux
ac_add_options --enable-alsa
ac_add_options --enable-pulseaudio

View File

@@ -33,3 +33,4 @@ else
export RUSTFLAGS="-C target-feature=+v8.3a -C codegen-units=1 -Ctarget-cpu=apple-m1"
fi
export VERBOSE=1
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"

View File

@@ -14,8 +14,8 @@ if test "$ZEN_CROSS_COMPILING"; then
CROSS_COMPILE=1
TOOLS=$(echo ~)/win-cross
#export WIN32_REDIST_DIR="$TOOLS"/vs2022/VC/Redist/MSVC/14.34.31931/x64/Microsoft.VC143.CRT
#export WIN_UCRT_REDIST_DIR="$TOOLS/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
export WIN_UCRT_REDIST_DIR="$(echo ~)/win-cross/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
export WIN32_REDIST_DIR="$(echo ~)/win-cross/vs2022/VC/Redist/MSVC/14.38.33135/x64/Microsoft.VC143.CRT"
export MIDL="$TOOLS/wine/bin/widl"
export MOZ_INCLUDE_SOURCE_INFO=1
@@ -31,25 +31,23 @@ ac_add_options --target=x86_64-pc-windows-msvc
ac_add_options --disable-maintenance-service
ac_add_options --disable-bits-download
ac_add_options --without-wasm-sandboxed-libraries
if test "$SURFER_COMPAT" = "true"; then
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize"
ac_add_options --enable-optimize="-O2 -Qvec -mtune=haswell -march=x86-64 -w"
export CFLAGS="-mtune=haswell -march=x86-64"
export CPPFLAGS="-mtune=haswell -march=x86-64"
export CXXFLAGS="-mtune=haswell -march=x86-64"
export LDFLAGS="-Wl,-O3"
export CFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
export CPPFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
export CXXFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
export LDFLAGS="-Wl,-O2"
export RUSTFLAGS="-C codegen-units=1 -Ctarget-cpu=x86-64"
else
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -Xclang -ftree-vectorize -mpopcnt -mpclmul -w"
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -Xclang -w"
ac_add_options --enable-wasm-avx
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
export LDFLAGS="-Wl,-O3 -march=x86-64-v3 -mpopcnt -mpclmul"
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
export LDFLAGS="-Wl,-O3 -march=x86-64-v3"
export RUSTFLAGS="-C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
fi
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"

View File

@@ -16,7 +16,6 @@ finish-args:
- --persist=.zen
- --filesystem=xdg-download:rw
- --device=all
- --device=dri
- --talk-name=org.freedesktop.FileManager1
- --own-name=org.mozilla.zen.*
- --own-name=org.mpris.MediaPlayer2.firefox.*
@@ -28,7 +27,7 @@ modules:
build-commands:
- mv zen /app/
- install -Dm0755 metadata/launch-script.sh ${FLATPAK_DEST}/bin/launch-script.sh
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
- install -Dm0644 metadata/icons/io.github.zen_browser.zen.png ${{FLATPAK_DEST}}/share/icons/hicolor/256x256/apps/${{FLATPAK_ID}}.png
- install -Dm0644 metadata/io.github.zen_browser.zen.metainfo.xml ${{FLATPAK_DEST}}/share/metainfo/${{FLATPAK_ID}}.metainfo.xml

View File

@@ -27,6 +27,6 @@
},
"homepage": "https://github.com/zen-browser/core#readme",
"dependencies": {
"@zen-browser/surfer": "^1.2.7"
"@zen-browser/surfer": "^1.2.8"
}
}

10
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@zen-browser/surfer':
specifier: ^1.2.7
version: 1.2.7
specifier: ^1.2.8
version: 1.2.8
packages:
@@ -109,8 +109,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@zen-browser/surfer@1.2.7':
resolution: {integrity: sha512-VbbbB7crGXrdfk1PPnlsWFWErwjtccXbRuw5mOQzY327d2t5VraxmkqTzcuGSTxpu3CR/KvzNu0gDg/6+7b4NQ==}
'@zen-browser/surfer@1.2.8':
resolution: {integrity: sha512-eMWZur7TnBCeLOFEVjxdBQnFfMCg2yzpgKOu+Dfy3nBxqDPg6gKanNX8nUY6I+oT+fiTG3FC4cVTGdE3Ye+8MQ==}
hasBin: true
ansi-regex@5.0.1:
@@ -786,7 +786,7 @@ snapshots:
'@types/node@17.0.45': {}
'@zen-browser/surfer@1.2.7':
'@zen-browser/surfer@1.2.8':
dependencies:
'@resvg/resvg-js': 1.4.0
async-icns: 1.0.2

View File

@@ -21,7 +21,7 @@
* SECTION: FASTFOX *
****************************************************************************/
/** GENERAL ***/
pref("content.notify.interval", 100000);
pref("content.notify.interval", 100000); // (.10s); alt=500000 (.50s)
/** GFX ***/
pref("gfx.canvas.accelerated.cache-items", 4096);
@@ -32,9 +32,9 @@ pref("gfx.content.skia-font-cache-size", 20);
pref("browser.cache.jsbc_compression_level", 3);
/** MEDIA CACHE ***/
pref("media.memory_cache_max_size", 65536);
pref("media.cache_readahead_limit", 7200);
pref("media.cache_resume_threshold", 3600);
pref("media.memory_cache_max_size", 512000); // alt=512000; also in Securefox (inactive there)
pref("media.cache_readahead_limit", 9000); // default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback
pref("media.cache_resume_threshold", 6000); // default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold (in seconds)
/** IMAGE CACHE ***/
pref("image.mem.decode_bytes_at_a_time", 32768);
@@ -45,7 +45,14 @@ pref("network.http.max-persistent-connections-per-server", 10);
pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
pref("network.http.pacing.requests.enabled", false);
pref("network.dnsCacheExpiration", 3600);
pref("network.ssl_tokens_cache_capacity", 10240);
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
pref("network.websocket.max-connections", 400); // default=200
pref("network.ssl_tokens_cache_capacity", 32768);
/** MIXED CONTENT + CROSS-SITE ***/
pref("pdfjs.enableScripting", false);
pref("extensions.postDownloadThirdPartyPrompt", false);
/** EXPERIMENTAL ***/
pref("layout.css.grid-template-masonry-value.enabled", true);
@@ -56,14 +63,12 @@ pref("dom.security.sanitizer.enabled", true);
* SECTION: SECUREFOX *
****************************************************************************/
/** TRACKING PROTECTION ***/
pref("browser.contentblocking.category", "strict");
pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
pref("network.cookie.sameSite.noneRequiresSecure", true);
pref("browser.download.start_downloads_in_tmp_dir", true);
pref("browser.helperApps.deleteTempFileOnExit", true);
pref("browser.uitour.enabled", false);
pref("privacy.globalprivacycontrol.enabled", true);
/** OCSP & CERTS / HPKP ***/
pref("security.OCSP.enabled", 0);
@@ -113,27 +118,27 @@ pref("permissions.manager.defaultsUrl", "");
pref("webchannel.allowObject.urlWhitelist", "");
/** TELEMETRY ***/
pref("datareporting.policy.dataSubmissionEnabled", false);
pref("datareporting.healthreport.uploadEnabled", false);
pref("toolkit.telemetry.unified", false);
pref("toolkit.telemetry.enabled", false);
pref("toolkit.telemetry.server", "data:,");
pref("toolkit.telemetry.archive.enabled", false);
pref("toolkit.telemetry.newProfilePing.enabled", false);
pref("toolkit.telemetry.shutdownPingSender.enabled", false);
pref("toolkit.telemetry.updatePing.enabled", false);
pref("toolkit.telemetry.bhrPing.enabled", false);
pref("toolkit.telemetry.firstShutdownPing.enabled", false);
pref("toolkit.telemetry.coverage.opt-out", true);
pref("toolkit.coverage.opt-out", true);
pref("toolkit.coverage.endpoint.base", "");
pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
pref("browser.newtabpage.activity-stream.telemetry", false);
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
pref("datareporting.healthreport.uploadEnabled", false, locked);
pref("toolkit.telemetry.unified", false, locked);
pref("toolkit.telemetry.enabled", false, locked);
pref("toolkit.telemetry.server", "data:,", locked);
pref("toolkit.telemetry.archive.enabled", false, locked);
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
pref("toolkit.telemetry.updatePing.enabled", false, locked);
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
pref("toolkit.telemetry.coverage.opt-out", true, locked);
pref("toolkit.coverage.opt-out", true, locked);
pref("toolkit.coverage.endpoint.base", "", locked);
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
/** EXPERIMENTS ***/
pref("app.shield.optoutstudies.enabled", false);
pref("app.normandy.enabled", false);
pref("app.normandy.api_url", "");
pref("app.shield.optoutstudies.enabled", false, locked);
pref("app.normandy.enabled", false, locked);
pref("app.normandy.api_url", "", locked);
/** CRASH REPORTS ***/
pref("breakpad.reportURL", "");
@@ -150,7 +155,7 @@ pref("dom.private-attribution.submission.enabled", false);
* SECTION: PESKYFOX *
****************************************************************************/
/** MOZILLA UI ***/
pref("browser.privatebrowsing.vpnpromourl", "");
pref("browser.privatebrowsing.vpnpromourl", "", locked);
pref("extensions.getAddons.showPane", false);
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
pref("browser.discovery.enabled", false);

View File

@@ -63,16 +63,19 @@ pref('zen.welcomeScreen.seen', false);
pref('zen.tabs.vertical', true);
pref('zen.tabs.vertical.right-side', false);
pref('zen.theme.accent-color', "#aac7ff");
pref('zen.theme.border-radius', 10); // In pixels
pref('zen.theme.toolbar-themed', true);
pref('zen.theme.pill-button', false);
pref('zen.theme.floating-urlbar', false);
pref('zen.view.compact', false);
pref('zen.view.compact.hide-toolbar', false);
pref('zen.view.sidebar-expanded', false);
pref('zen.view.sidebar-expanded.show-button', true);
pref('zen.view.sidebar-expanded.max-width', 400);
pref('zen.keyboard.shortcuts', "{}");
pref('zen.keyboard.shortcuts.enabled', true);
pref('zen.keyboard.shortcuts', ""); // Empty string means default shortcuts
pref('zen.keyboard.shortcuts.disable-firefox', false);
pref('zen.tabs.dim-pending', true);
pref('zen.themes.updated-value-observer', false);
// Pref to enable the new profiles (TODO: Check this out!)
//pref("browser.profiles.enabled", true);
@@ -89,7 +92,7 @@ pref('zen.splitView.working', false);
pref('zen.workspaces.enabled', true);
// Zen Watermark
pref('zen.watermark.enabled', true);
pref('zen.watermark.enabled', true, sticky);
// Smooth scrolling
pref('apz.overscroll.enabled', true); // not DEFAULT on Linux
@@ -117,6 +120,13 @@ pref('browser.migrate.opera.enabled', true);
pref('xpinstall.signatures.required', false);
// Experimental Zen Features
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
pref('dom.script_loader.bytecode_cache.strategy', 2);
// Extremly experimental features
pref("dom.webgpu.enabled", true);
#include better-fox.js
// Betterfox overrides (Stay below the include directive)
@@ -131,3 +141,14 @@ pref("network.dns.disablePrefetchFromHTTPS", false);
pref("network.predictor.enable-hover-on-ssl", true);
pref("network.http.speculative-parallel-limit", 10);
pref("network.http.rcwn.enabled", false);
// Enable Browser Toolbox, Ctrl+Shift+Alt+I for debugging and modifying UI
pref("devtools.debugger.remote-enabled", true);
pref("devtools.chrome.enabled", true);
// Disable firefox's revamp
pref("sidebar.revamp", false, locked);
pref("sidebar.verticalTabs", false, locked);
// Better scrollbar for Windows
pref("widget.non-native-theme.scrollbar.style", 2);

View File

@@ -0,0 +1,106 @@
var ZenStartup = {
init() {
this._changeSidebarLocation();
this._zenInitBrowserLayout();
},
_zenInitBrowserLayout() {
if (this.__hasInitBrowserLayout) return;
this.__hasInitBrowserLayout = true;
this.openWatermark();
console.info("ZenThemeModifier: init browser layout");
const kNavbarItems = [
"nav-bar",
"PersonalToolbar"
];
const kNewContainerId = "zen-appcontent-navbar-container";
let newContainer = document.getElementById(kNewContainerId);
for (let id of kNavbarItems) {
const node = document.getElementById(id);
console.assert(node, "Could not find node with id: " + id);
if (!node) continue;
newContainer.appendChild(node);
}
// Fix notification deck
document.getElementById("zen-appcontent-navbar-container")
.appendChild(document.getElementById("tab-notification-deck-template"));
gZenVerticalTabsManager.init();
gZenCompactModeManager.init();
gZenKeyboardShortcuts.init();
function throttle(f, delay) {
let timer = 0;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => f.apply(this, args), delay);
}
}
new ResizeObserver(throttle(
this._updateTabsToolbar.bind(this), 1000
)).observe(document.getElementById("tabbrowser-tabs"));
this.closeWatermark();
},
_updateTabsToolbar() {
// Set tabs max-height to the "toolbar-items" height
const toolbarItems = document.getElementById("tabbrowser-tabs");
const tabs = document.getElementById("tabbrowser-arrowscrollbox");
tabs.style.maxHeight = '0px'; // reset to 0
const toolbarRect = toolbarItems.getBoundingClientRect();
// -5 for the controls padding
tabs.style.maxHeight = toolbarRect.height - 5 + "px";
console.info("ZenThemeModifier: set tabs max-height to", toolbarRect.height + "px");
},
openWatermark() {
if (!Services.prefs.getBoolPref("zen.watermark.enabled", false)) {
return;
}
const watermark = window.MozXULElement.parseXULToFragment(`
<html:div id="zen-watermark">
<image src="chrome://branding/content/about-logo.png" />
</html:div>
`);
document.body.appendChild(watermark);
},
closeWatermark() {
const watermark = document.getElementById("zen-watermark");
if (watermark) {
watermark.setAttribute("hidden", "true");
}
},
_changeSidebarLocation() {
const kElementsToAppend = [
"sidebar-splitter",
"sidebar-box",
"navigator-toolbox",
];
const wrapper = document.getElementById("zen-tabbox-wrapper");
const appWrapepr = document.getElementById("zen-sidebar-box-container");
for (let id of kElementsToAppend) {
const elem = document.getElementById(id);
if (elem) {
wrapper.prepend(elem);
}
}
appWrapepr.setAttribute("hidden", "true");
// Set a splitter to navigator-toolbox
const splitter = document.createXULElement("splitter");
splitter.setAttribute("id", "zen-sidebar-splitter");
splitter.setAttribute("orient", "horizontal");
splitter.setAttribute("resizebefore", "sibling");
splitter.setAttribute("resizeafter", "none");
const titlebar = document.getElementById("navigator-toolbox");
titlebar.insertAdjacentElement("afterend", splitter);
},
};
ZenStartup.init();

View File

@@ -1,12 +1,13 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index a79a9734619f89639c15087fe28e9615354a7209..edaef604d33d76b570571e1bbb2ebc590e045d87 100644
index f8d49ac2a3a62f389ea44b07a26fcb102abc0b24..c29415e10c776ebc435f33e55f8afb71f0dcf22a 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
@@ -237,6 +237,9 @@ var gBrowserInit = {
@@ -237,6 +237,10 @@ var gBrowserInit = {
gPrivateBrowsingUI.init();
BrowserSearch.init();
BrowserPageActions.init();
+
+ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+
if (gToolbarKeyNavEnabled) {

View File

@@ -1,32 +0,0 @@
diff --git a/browser/base/content/browser-siteProtections.js b/browser/base/content/browser-siteProtections.js
index 5364aa74cd938141e85e3a3333e8d1fa58ea3ae4..5cd1748a883b19caa2977c1047d51b9551686bf4 100644
--- a/browser/base/content/browser-siteProtections.js
+++ b/browser/base/content/browser-siteProtections.js
@@ -1904,9 +1904,14 @@ var gProtectionsHandler = {
// the information contained there would mostly be broken and/or
// irrelevant anyway.
this._trackingProtectionIconContainer.hidden = true;
+ // ZEN: We make a clear distinction between native UI and websites for security reasons.
+ // we can remove the separator for websites that dont need it, like "about:*" pages, where
+ // they are safe to use.
+ this._nativeSeparatorForWebsitesContainer.hidden = true;
return;
}
this._trackingProtectionIconContainer.hidden = false;
+ this._nativeSeparatorForWebsitesContainer.hidden = false;
// Check whether the user has added an exception for this site.
this.hasException = ContentBlockingAllowList.includes(
@@ -2882,4 +2887,12 @@ var gProtectionsHandler = {
return messageEl;
},
+
+ get _nativeSeparatorForWebsitesContainer() {
+ delete this._nativeSeparatorForWebsitesContainer;
+ return (this._nativeSeparatorForWebsitesContainer = document.getElementById(
+ "zen-website-and-native-separator"
+ ));
+ },
+
};

View File

@@ -1,17 +1,17 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb513c4ec73f 100644
index 481ebbee437250c71e9bd10c4fb6fc0c31314925..3bb046a4635fad831cc447e29516ee5ed407a3f2 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -139,6 +139,8 @@
@@ -138,6 +138,8 @@
window.addEventListener("DOMContentLoaded",
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
</script>
+#include zen-locales.inc.xhtml
+#include zen-scripts.inc.xhtml
+#include zen-assets.inc.xhtml
</head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles)
@@ -160,9 +162,12 @@
@@ -159,9 +161,12 @@
</vbox>
</html:template>
@@ -27,10 +27,3 @@ index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb51
<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>

View File

@@ -0,0 +1,37 @@
<!-- Styles used all over the browser -->
<linkset>
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-theme.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-animations.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-buttons.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-toolbar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-tabs.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-browser-ui.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-panel-ui.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-single-components.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-browser-container.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-urlbar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-workspaces.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-decks.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-profile-dialog.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar-panels.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-popup.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-compact-mode.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/skin/zen-icons/icons.css" />
</linkset>
<!-- Scripts used all over the browser -->
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", async () => {
// Theme importer always needs to be loaded first
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenSidebarManager.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenProfileDialogUI.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs");
}, { once: true });
</script>

View File

@@ -0,0 +1,41 @@
content/browser/zenThemeModifier.js (content/zenThemeModifier.js)
content/browser/ZenStartup.mjs (content/ZenStartup.mjs)
content/browser/ZenUIManager.mjs (content/ZenUIManager.mjs)
content/browser/zen-components/ZenViewSplitter.mjs (content/zen-components/src/ZenViewSplitter.mjs)
content/browser/zen-components/ZenWorkspaces.mjs (content/zen-components/src/ZenWorkspaces.mjs)
content/browser/zen-components/ZenSidebarManager.mjs (content/zen-components/src/ZenSidebarManager.mjs)
content/browser/zen-components/ZenProfileDialogUI.mjs (content/zen-components/src/ZenProfileDialogUI.mjs)
content/browser/zen-components/ZenKeyboardShortcuts.mjs (content/zen-components/src/ZenKeyboardShortcuts.mjs)
content/browser/zen-components/ZenThemeBuilder.mjs (content/zen-components/src/ZenThemeBuilder.mjs)
content/browser/zen-components/ZenThemesImporter.mjs (content/zen-components/src/ZenThemesImporter.mjs)
content/browser/zen-styles/zen-theme.css (content/zen-styles/zen-theme.css)
content/browser/zen-styles/zen-buttons.css (content/zen-styles/zen-buttons.css)
content/browser/zen-styles/zen-tabs.css (content/zen-styles/zen-tabs.css)
content/browser/zen-styles/zen-tabs/vertical-tabs.css (content/zen-styles/zen-tabs/vertical-tabs.css)
content/browser/zen-styles/zen-browser-ui.css (content/zen-styles/zen-browser-ui.css)
content/browser/zen-styles/zen-animations.css (content/zen-styles/zen-animations.css)
content/browser/zen-styles/zen-panel-ui.css (content/zen-styles/zen-panel-ui.css)
content/browser/zen-styles/zen-single-components.css (content/zen-styles/zen-single-components.css)
content/browser/zen-styles/zen-sidebar.css (content/zen-styles/zen-sidebar.css)
content/browser/zen-styles/zen-toolbar.css (content/zen-styles/zen-toolbar.css)
content/browser/zen-styles/zen-decks.css (content/zen-styles/zen-decks.css)
content/browser/zen-styles/zen-browser-container.css (content/zen-styles/zen-browser-container.css)
content/browser/zen-styles/zen-workspaces.css (content/zen-styles/zen-workspaces.css)
content/browser/zen-styles/zen-profile-dialog.css (content/zen-styles/zen-profile-dialog.css)
content/browser/zen-styles/zen-urlbar.css (content/zen-styles/zen-urlbar.css)
content/browser/zen-styles/zen-popup.css (content/zen-styles/zen-popup.css)
content/browser/zen-styles/zen-sidebar-panels.css (content/zen-styles/zen-sidebar-panels.css)
content/browser/zen-styles/zen-panels/bookmarks.css (content/zen-styles/zen-panels/bookmarks.css)
content/browser/zen-styles/zen-panels/extensions.css (content/zen-styles/zen-panels/extensions.css)
content/browser/zen-styles/zen-panels/print.css (content/zen-styles/zen-panels/print.css)
content/browser/zen-styles/zen-panels/welcome.css (content/zen-styles/zen-panels/welcome.css)
content/browser/zen-styles/zen-compact-mode.css (content/zen-styles/zen-compact-mode.css)
# Actors
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceParent.sys.mjs)
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceChild.sys.mjs)

View File

@@ -1,10 +0,0 @@
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", async () => {
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenSidebarManager.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenProfileDialogUI.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs");
}, { once: true });
</script>

View File

@@ -1,9 +0,0 @@
content/browser/zenThemeModifier.js (content/zenThemeModifier.js)
content/browser/ZenUIManager.mjs (content/ZenUIManager.mjs)
content/browser/zen-components/ZenViewSplitter.mjs (content/zen-components/src/ZenViewSplitter.mjs)
content/browser/zen-components/ZenWorkspaces.mjs (content/zen-components/src/ZenWorkspaces.mjs)
content/browser/zen-components/ZenSidebarManager.mjs (content/zen-components/src/ZenSidebarManager.mjs)
content/browser/zen-components/ZenProfileDialogUI.mjs (content/zen-components/src/ZenProfileDialogUI.mjs)
content/browser/zen-components/ZenKeyboardShortcuts.mjs (content/zen-components/src/ZenKeyboardShortcuts.mjs)
content/browser/zen-components/ZenThemeBuilder.mjs (content/zen-components/src/ZenThemeBuilder.mjs)

View File

@@ -0,0 +1,109 @@
@keyframes zen-jello-animation {
0% {
transform: scale3d(0.8, 0.8, 0.8);
}
60% {
transform: scale3d(1.02, 1.02, 1.02);
}
to {
opacity: 1;
transform: scale3d(1, 1, 1);
}
}
@keyframes zen-jello-out-animation {
0% {
transform: scale3d(1, 1, 1);
}
60% {
transform: scale3d(1.02, 1.02, 1.02);
}
99% {
opacity: 0;
transform: scale3d(0.8, 0.8, 0.8);
}
100% {
-moz-window-transform: none;
transform: none;
}
}
@keyframes zen-slide-in {
from {
transform: translateX(-10px);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
@keyframes zen-zoom-in {
from {
transform: scale(0.5);
opacity: 0;
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes zen-deck-fadeIn {
0% {
transform: scale(0.9);
opacity: 0;
}
100% {
transform: scale(1);
opacity: 1;
}
}
@keyframes zen-sidebar-panel-animation {
0% {
opacity: 0;
transform: scale3d(0.9, 0.9, 0.9);
}
100% {
opacity: 1;
transform: scale3d(1, 1, 1);
}
}
@keyframes zen-sidebar-panel-animation-2 {
0% {
opacity: 0;
transform: translateX(-50px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@keyframes zen-sidebar-panel-animation-reverse {
0% {
opacity: 1;
transform: translateX(0);
}
99% {
opacity: 0;
transform: translateX(-50px);
}
100% {
display: none !important;
}
}

View File

@@ -0,0 +1,12 @@
:root:not([inDOMFullscreen="true"]):not([chromehidden~="location"]):not([chromehidden~="toolbar"]) {
& #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
width: -moz-available;
margin: 0 var(--zen-element-separation) var(--zen-element-separation) 0;
box-shadow: 0 0 0 1px var(--zen-colors-border);
clip-path: inset(-5px -5px -5px round var(--zen-border-radius));
border-radius: var(--zen-border-radius);
transform: translate3d(0, 0, 0);
overflow: hidden;
}
}

View File

@@ -0,0 +1,35 @@
#navigator-toolbox,
#browser,
#appcontent,
#tabbrowser-tabpanels {
background: transparent !important;
}
#browser {
width: 100%;
}
html#main-window > body {
background: var(--zen-main-browser-background) !important;
}
:not([inDOMFullscreen="true"]) #appcontent {
overflow: hidden;
}
:not([inDOMFullscreen="true"]) #appcontent,
#sidebar-box {
/** Sidebar is already hidden in full screen mode */
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
border: none;
}
#zen-main-app-wrapper {
background: var(--zen-main-browser-background);
}
#tabbrowser-tabbox {
display: flex;
flex-direction: row;
}

View File

@@ -25,9 +25,19 @@ button:active {
html|button:not(:is(
.tab-button, .ghost-button,
.button-toggle, .button-edit,
.button-add
)) {
.button-add,
)),
xul|button:is(
.expander-down
) {
transition: .2s;
min-width: unset !important;
border-radius: 6px !important;
min-width: 80px !important;
}
@media (-moz-bool-pref: "zen.theme.pill-button") {
:host(:is(.anonymous-content-host, notification-message)),
:root {
--zen-button-border-radius: 20px;
}
}

View File

@@ -0,0 +1,155 @@
/* All overrides for compact mode go here */
@media not (-moz-bool-pref: "zen.view.compact") {
#sidebar-box {
margin-top: 0 !important;
}
}
@media (-moz-bool-pref: "zen.view.compact") {
:root[sizemode="fullscreen"],
#navigator-toolbox[inFullscreen]{ margin-top: 0 !important; }
#navigator-toolbox {
--zen-compact-toolbox-margin-single: 15px;
--zen-compact-toolbox-margin: var(--zen-compact-toolbox-margin-single);
position: absolute;
display: block;
transition: 200ms ease-in-out !important;
transform: translateX(calc(-100% + var(--zen-compact-toolbox-margin-single) + 2px));
opacity: 0;
line-height: 0;
z-index: 1;
height: 100%;
margin: 0;
padding: var(--zen-compact-toolbox-margin);
padding-top: calc(var(--zen-compact-toolbox-margin-single) - var(--zen-element-separation));
& #titlebar {
border: 1px solid var(--zen-colors-border);
background: var(--zen-colors-tertiary) !important;
padding: 0 5px;
border-radius: var(--zen-panel-radius);
}
}
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
width: fit-content !important;
}
}
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
min-width: calc(var(--zen-navigation-toolbar-min-width) + var(--zen-compact-toolbox-margin-single) * 2) !important;
}
}
#zen-sidebar-web-panel-wrapper:not(:has(#zen-sidebar-web-panel[hidden="true"])),
#sidebar-box:not([positionend="true"]) {
margin-right: 0 !important;
margin-left: var(--zen-sidebar-web-panel-spacing) !important;
}
#sidebar-box[positionend="true"] {
margin-left: 0 !important;
margin-right: var(--zen-sidebar-web-panel-spacing) !important;
}
#sidebar-splitter {
margin: 0 !important;
}
@media not (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
#navigator-toolbox {
/* Remove the top margin */
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) / 3) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
}
#zen-sidebar-web-panel-wrapper,
#sidebar-box {
margin-top: 0 !important;
}
}
#navigator-toolbox:hover,
#navigator-toolbox:focus-within,
#navigator-toolbox[zen-user-show],
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
transition-delay: 33ms !important;
transform: none !important;
opacity: 1;
}
#navigator-toolbox > *{ line-height: normal; pointer-events: auto }
#navigator-toolbox,
#navigator-toolbox > *{
-moz-appearance: none !important;
}
#zen-sidebar-splitter {
display: none !important;
}
/* Don't apply transform before window has been fully created */
:root:not([sessionrestored]) #navigator-toolbox{ transform:none !important }
:root[customizing] #navigator-toolbox{
position: relative !important;
transform: none !important;
opacity: 1 !important;
}
#navigator-toolbox[inFullscreen] > #PersonalToolbar,
#PersonalToolbar[collapsed="true"]{ display: none }
:root:not([inDOMFullscreen="true"]) #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
margin-left: var(--zen-element-separation) !important;
}
@media (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
#navigator-toolbox {
padding-top: var(--zen-compact-toolbox-margin);
}
#zen-appcontent-navbar-container {
--urlbar-height: unset;
transition: .2s ease-in-out;
transform: translateY(calc(-100% + 5px));
opacity: 0;
position: absolute;
width: 100%;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
border-bottom: 1px solid var(--zen-colors-border);
top: 0;
background: var(--zen-colors-tertiary);
z-index: 2;
transition: .2s ease-in-out;
}
#zen-appcontent-navbar-container:hover,
#zen-appcontent-navbar-container:focus-within,
#zen-appcontent-navbar-container[zen-user-show],
#mainPopupSet:has(> #appMenu-popup:hover) ~ #zen-appcontent-navbar-container,
#zen-appcontent-navbar-container:has(*[open="true"]) {
transform: translateY(0);
opacity: 1;
}
:root:not([inDOMFullscreen="true"]) #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
margin-top: var(--zen-element-separation) !important;
}
#titlebar {
padding-top: 5px !important;
}
#zen-sidebar-web-panel-wrapper {
margin-top: 10px !important;
}
}
}

View File

@@ -0,0 +1,120 @@
/*
* 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/.
*/
/** Zen Decks - ONLY USED FOR SPLIT VIEWS, DO NOT USE THIS CLASS FOR ANY OTHER PURPOSE **/
#tabbrowser-tabpanels[zen-split-view="true"] {
display: flex;
flex-direction: row;
}
#tabbrowser-tabpanels[zen-split-view="true"] > *:not([zen-split="true"]) {
flex: 0;
margin: 0;
}
#tabbrowser-tabpanels[zen-split-view="true"] > [zen-split="true"] {
flex: 1;
margin-right: 5px;
}
#tabbrowser-tabpanels[zen-split-view="true"] > [zen-split-anim="true"] {
animation: zen-deck-fadeIn 0.2s forwards;
}
#tabbrowser-tabpanels[zen-split-view="true"] .browserSidebarContainer[zen-split-active="true"] {
box-shadow: 0 0 0 2px var(--zen-primary-color) !important;
}
#tabbrowser-tabpanels:has(> [zen-split="true"]) {
display: grid;
grid-gap: 5px;
}
#zen-split-views-box:not([hidden="true"]) {
display: flex !important;
}
/* Split view panel */
#zenSplitViewModifierViewDefault {
min-width: 180px;
min-height: 180px;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 10px;
padding: 15px;
}
#zenSplitViewModifierViewDefault > vbox {
display: flex;
align-items: center;
flex-direction: column;
cursor: pointer;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview {
border-radius: 5px;
border: 1px solid var(--zen-colors-border);
width: 100px;
height: 70px;
overflow: hidden;
padding: 5px;
user-select: none;
font-weight: 500;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.active {
box-shadow: 0 0 0 2px var(--zen-primary-color);
border-width: 0px;
}
#zenSplitViewModifierViewDefault p {
margin-top: 5px;
margin-bottom: 0;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview box {
background-color: var(--zen-colors-secondary);
border-radius: 3px;
width: 100%;
height: 100%;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.hsep {
display: flex;
flex-direction: column;
justify-content: space-between;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.hsep box:last-child {
margin-top: 5px;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.vsep box:last-child {
margin-left: 5px;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid {
display: grid;
grid-template-areas: "a b" "c b";
gap: 5px;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid box:nth-child(1) {
grid-area: a;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid box:nth-child(2) {
grid-area: b;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid box:nth-child(3) {
grid-area: c;
}

View File

@@ -0,0 +1,8 @@
panel[type="arrow"][animate][animate="open"] {
animation: zen-jello-animation 0.2s ease-in-out;
}
panel[type="arrow"][animate][animate="cancel"] {
animation: zen-jello-out-animation 0.2s ease-in-out;
}

View File

@@ -0,0 +1,65 @@
#zenEditBookmarkPanelFaviconContainer {
border: 1px solid var(--input-border-color);
width: 100px;
height: 100px;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
margin: 16px;
background: light-dark(#fff, rgba(255,255,255,.1));
}
#editBookmarkPanel::part(content) {
display: flex;
flex-direction: row;
}
#zenEditBookmarkPanelFavicon {
width: 20px;
height: 20px;
}
#editBookmarkPanel .panel-header {
min-height: 0;
padding-bottom: 0;
padding-top: 16px;
}
#editBMPanel_namePicker {
width: -moz-available;
}
label.editBMPanel_folderRow,
label.editBMPanel_nameRow {
min-width: 60px;
}
hbox.editBMPanel_folderRow {
width: -moz-available;
}
.zenEditBMPanel_fieldContainer:not(:first-child) {
margin-top: 10px;
}
.zenEditBMPanel_fieldContainer {
align-items: center;
}
#editBookmarkPanelBottomContent {
display: none;
}
:host(:not([native])) #label-box {
font-weight: 500;
}
#editBMPanel_folderMenuList::part(icon) {
margin-right: 10px;
}
/* Bookmarks in toolbar */
#PersonalToolbar {
background: transparent;
}

View File

@@ -0,0 +1,69 @@
#unified-extensions-manage-extensions {
padding-left: 20px;
}
panelview .unified-extensions-item-action-button {
padding: 5px 20px;
}
#unified-extensions-description {
padding: 0 20px;
margin: 0;
}
.unified-extensions-item {
padding: 0;
}
#unified-extensions-view {
--uei-icon-size: 16px;
.unified-extensions-item {
margin-block: 0;
border-radius: var(--arrowpanel-menuitem-border-radius);
> .unified-extensions-item-action-button {
.unified-extensions-item-message-deck {
display: none;
}
&:hover {
background-color: initial;
}
}
> .unified-extensions-item-menu-button {
list-style-image: url("chrome://global/skin/icons/more.svg");
padding: 0;
> .toolbarbutton-icon {
padding: var(--arrowpanel-menuitem-padding-block) var(--arrowpanel-menuitem-padding-inline);
border: none;
opacity: 0;
}
&:hover {
> .toolbarbutton-icon {
background-color: initial;
}
&:active {
color: var(--button-primary-hover-bgcolor);
}
}
}
&:hover {
background-color: var(--panel-item-hover-bgcolor);
> .unified-extensions-item-menu-button > .toolbarbutton-icon {
opacity: 1;
}
}
&:has(> .unified-extensions-item-action-button:not([disabled]):hover:active) {
background-color: var(--panel-item-active-bgcolor);
}
}
}

View File

@@ -0,0 +1,7 @@
.printDialogBox {
max-width: 90vw;
}
.printSettingsBrowser {
min-width: 350px;
}

View File

@@ -0,0 +1,30 @@
/* Zen Welcome idalog override */
.dialogBox:not(.spotlightBox) {
border: 1px solid var(--zen-dialog-border-color);
}
#window-modal-dialog:not([zen-dialog-welcome-element="true"]) .dialogBox:not(.spotlightBox) {
transform: translateY(-9px);
}
#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogBox:not(.spotlightBox) {
margin: 0 !important;
}
#window-modal-dialog[zen-dialog-welcome-element="true"],
#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogOverlay,
#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogFrame,
#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogBox {
width: 100% !important;
height: 100% !important;
max-height: none !important;
max-width: none !important;
}
#window-modal-dialog[zen-dialog-welcome-element="true"] {
--zen-welcome-dialog-space: 7px;
margin: 0 auto !important;
max-width: calc(100% - calc(var(--zen-welcome-dialog-space) * 2)) !important;
max-height: calc(100% - calc(var(--zen-welcome-dialog-space) * 2)) !important;
margin-top: var(--zen-welcome-dialog-space) !important;
}

View File

@@ -1,20 +1,20 @@
/*
* 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/.
*/
@import url("chrome://browser/content/zen-styles/zen-panels/bookmarks.css");
@import url("chrome://browser/content/zen-styles/zen-panels/extensions.css");
@import url("chrome://browser/content/zen-styles/zen-panels/print.css");
@import url("chrome://browser/content/zen-styles/zen-panels/welcome.css");
:root {
--panel-subview-body-padding: 2px 0 !important;
--arrowpanel-menuitem-border-radius: 5px !important;
--arrowpanel-menuitem-margin: var(--uc-arrowpanel-menuitem-margin-block) var(--uc-arrowpanel-menuitem-margin-inline) !important;
--arrowpanel-menuitem-padding-block: 8px !important;
--arrowpanel-menuitem-padding-inline: 14px !important;
--panel-subview-body-padding: 2px 0;
--arrowpanel-menuitem-border-radius: 5px;
--arrowpanel-menuitem-margin: var(--uc-arrowpanel-menuitem-margin-block) var(--uc-arrowpanel-menuitem-margin-inline);
--arrowpanel-menuitem-padding-block: 8px;
--arrowpanel-menuitem-padding-inline: 14px;
--uc-arrowpanel-menuicon-margin-inline: 14px;
--uc-arrowpanel-menuitem-margin-inline: 4px;
--uc-arrowpanel-menuitem-margin-block: 2px;
--panel-separator-margin-vertical: 2px !important;
--panel-separator-margin-horizontal: 1px !important;
--panel-separator-margin-vertical: 2px;
--panel-separator-margin-horizontal: 1px;
--uc-panel-zoom-button-padding: 8px;
--uc-panel-zoom-button-inline-padding: 9px;
@@ -41,39 +41,45 @@
--uc-contextmenu-separator-vertical: calc(4px - var(--uc-contextmenu-menuitem-border-width));
--uc-contextmenu-separator-horizontal: 0;
--panel-separator-color: var(--zen-colors-border) !important;
--panel-separator-color: var(--zen-colors-border);
--zen-panel-separator-width: 1px;
}
menupopup, panel {
--panel-background: var(--arrowpanel-background);
--panel-border-radius: var(--zen-panel-radius);
}
/* app menu */
.addon-banner-item,
.panel-banner-item {
margin: 2px 4px 2px !important;
padding-inline: 4px 12px !important;
padding-block: var(--arrowpanel-menuitem-padding-block) !important;
border-radius: var(--arrowpanel-menuitem-border-radius) !important;
margin: 2px 4px 2px;
padding-inline: 4px 12px;
padding-block: var(--arrowpanel-menuitem-padding-block);
border-radius: var(--arrowpanel-menuitem-border-radius);
}
#appMenu-fxa-label2 label,
#PanelUI-fxa-menu-syncnow-button label {
margin-block: 0 !important;
margin-block: 0;
}
.widget-overflow-list .toolbarbutton-1:not(.toolbarbutton-combined)>.toolbarbutton-text,
.subviewbutton:not(#appMenu-zoom-controls > .subviewbutton)>.toolbarbutton-icon+.toolbarbutton-text,
#appMenu-fxa-label2>vbox {
padding-inline-start: var(--uc-arrowpanel-menuicon-margin-inline) !important;
padding-inline-start: var(--uc-arrowpanel-menuicon-margin-inline);
}
/* special case menuitems with no icons */
#appMenu-zoom-controls>.toolbarbutton-text,
#fxa-manage-account-button>vbox,
#PanelUI-fxa-menu-syncnow-button>hbox {
padding-inline-start: calc(16px + var(--uc-arrowpanel-menuicon-margin-inline)) !important;
padding-inline-start: calc(16px + var(--uc-arrowpanel-menuicon-margin-inline));
}
.subviewbutton>.toolbarbutton-icon {
width: 15px !important;
width: 15px;
}
/* firefox profile avatar in appmenu */
@@ -89,37 +95,37 @@
/* disable proton account separator */
#appMenu-fxa-separator {
border-image: none !important;
border-image: none;
}
#appMenu-fxa-status2:not([fxastatus]) {
padding-block: 0 !important;
padding-block: 0;
}
#appMenu-fxa-status2:not([fxastatus])>#appMenu-fxa-label2 {
margin-inline-end: calc(var(--arrowpanel-menuitem-padding-inline) * -1) !important;
margin-inline-end: calc(var(--arrowpanel-menuitem-padding-inline) * -1);
}
/* zoom controls */
#appMenu-zoom-controls {
border-top: 1px solid var(--panel-separator-color) !important;
padding-inline: calc(var(--arrowpanel-menuitem-padding-inline) + var(--uc-arrowpanel-menuitem-margin-inline)) var(--uc-arrowpanel-menuitem-margin-inline) !important;
padding-block: var(--uc-panel-zoom-padding-block) !important;
margin: var(--panel-separator-margin-vertical) 0 calc(var(--panel-separator-margin-vertical) * -1) !important;
border-top: 1px solid var(--panel-separator-color);
padding-inline: calc(var(--arrowpanel-menuitem-padding-inline) + var(--uc-arrowpanel-menuitem-margin-inline)) var(--uc-arrowpanel-menuitem-margin-inline);
padding-block: var(--uc-panel-zoom-padding-block);
margin: var(--panel-separator-margin-vertical) 0 calc(var(--panel-separator-margin-vertical) * -1);
}
#appMenu-zoom-controls>.subviewbutton {
padding: var(--uc-panel-zoom-button-padding) var(--uc-panel-zoom-button-inline-padding) !important;
margin: 0 !important;
padding: var(--uc-panel-zoom-button-padding) var(--uc-panel-zoom-button-inline-padding);
margin: 0;
}
#appMenu-zoom-controls>#appMenu-zoomReset-button2 {
padding: var(--uc-panel-zoom-button-padding) calc(var(--uc-panel-zoom-button-padding) / 2) !important;
padding: var(--uc-panel-zoom-button-padding) calc(var(--uc-panel-zoom-button-padding) / 2);
}
/* #appMenu-zoomReduce-button2, */
#appMenu-zoom-controls>#appMenu-fullscreen-button2 {
margin-left: calc((var(--panel-separator-margin-vertical) + var(--uc-arrowpanel-menuitem-margin-block)) * 2 + 1px) !important;
margin-left: calc((var(--panel-separator-margin-vertical) + var(--uc-arrowpanel-menuitem-margin-block)) * 2 + 1px);
}
#appMenu-zoom-controls>#appMenu-fullscreen-button2::before {
@@ -133,65 +139,65 @@
}
#appMenu-zoomReset-button2 {
height: calc(16px + var(--uc-panel-zoom-button-padding) * 2) !important;
min-height: calc(16px + var(--uc-panel-zoom-button-padding) * 2) !important;
height: calc(16px + var(--uc-panel-zoom-button-padding) * 2);
min-height: calc(16px + var(--uc-panel-zoom-button-padding) * 2);
}
#appMenu-zoomReduce-button2:not([disabled], [open], :active):is(:hover),
#appMenu-zoomEnlarge-button2:not([disabled], [open], :active):is(:hover),
#appMenu-fullscreen-button2:not([disabled], [open], :active):is(:hover),
#appMenu-zoomReset-button2:not([disabled], [open], :active):is(:hover) {
background-color: var(--panel-item-hover-bgcolor) !important;
background-color: var(--panel-item-hover-bgcolor);
}
#appMenu-zoomReduce-button2:not([disabled]):is([open], :hover:active),
#appMenu-zoomEnlarge-button2:not([disabled]):is([open], :hover:active),
#appMenu-fullscreen-button2:not([disabled]):is([open], :hover:active),
#appMenu-zoomReset-button2:not([disabled]):is([open], :hover:active) {
background-color: var(--panel-item-active-bgcolor) !important;
background-color: var(--panel-item-active-bgcolor);
}
#appMenu-zoomReset-button2>.toolbarbutton-text,
#appMenu-fullscreen-button2>.toolbarbutton-icon {
background-color: transparent !important;
padding: 0 !important;
background-color: transparent;
padding: 0;
}
.subviewbutton[shortcut]::after {
opacity: 0.7 !important;
opacity: 0.7;
}
#widget-overflow-mainView .panel-subview-body {
padding-bottom: 0 !important;
padding-bottom: 0;
}
.PanelUI-subView>.panel-header+toolbarseparator {
margin-bottom: 0 !important;
margin-bottom: 0;
}
.PanelUI-subView>.panel-header+toolbarseparator+.panel-subview-body {
padding-top: var(--panel-separator-margin-vertical) !important;
padding-top: var(--panel-separator-margin-vertical);
}
#identity-popup-security-button {
margin-bottom: var(--panel-separator-margin-vertical) !important;
margin-bottom: var(--panel-separator-margin-vertical);
}
#permission-popup-mainView-panel-header,
#identity-popup-mainView-panel-header,
#protections-popup-mainView-panel-header,
.panel-header {
min-height: calc((var(--arrowpanel-menuitem-padding-block) + 4px) * 2 + 16px) !important;
min-height: calc((var(--arrowpanel-menuitem-padding-block) + 4px) * 2 + 16px);
}
/* URL bar popup */
.identity-popup-security-connection>hbox>description {
margin-inline-start: 0 !important;
margin-inline-start: 0;
}
.identity-popup-security-connection.identity-button {
margin-inline-end: calc(-1 * (var(--arrowpanel-menuitem-padding-inline) - 10px)) !important;
margin-inline-end: calc(-1 * (var(--arrowpanel-menuitem-padding-inline) - 10px));
}
#identity-popup-mainView-panel-header-span,
@@ -199,42 +205,42 @@
#identity-popup-mainView-panel-header label,
#permission-popup-mainView-panel-header label,
#protections-popup-mainView-panel-header-span {
margin-block: 0 !important;
margin-block: 0;
}
.permission-popup-section {
padding-block: var(--uc-permission-itemcontainer-padding-block) !important;
padding-block: var(--uc-permission-itemcontainer-padding-block);
}
#permission-popup-permissions-content {
padding-inline: var(--uc-permission-item-padding-inline) !important;
padding-inline: var(--uc-permission-item-padding-inline);
}
.permission-popup-permission-item,
#permission-popup-storage-access-permission-list-header {
margin-block: var(--uc-permission-item-margin-block) !important;
margin-block: var(--uc-permission-item-margin-block);
}
.permission-popup-permission-label,
.permission-popup-permission-header-label {
margin-inline-start: var(--uc-arrowpanel-menuicon-margin-inline) !important;
margin-inline-start: var(--uc-arrowpanel-menuicon-margin-inline);
}
#editBookmarkPanel>#editBookmarkHeaderSeparator,
#editBookmarkPanel>.panel-subview-body>#editBookmarkSeparator {
margin-inline: 0 !important;
margin-inline: 0;
}
#identity-popup-mainView > toolbarseparator:first-child,
#unified-extensions-view > toolbarseparator:first-child {
display: none !important;
opacity: 0 !important;
display: none;
opacity: 0;
}
menupopup::part(content),
panel::part(content) {
border: var(--zen-appcontent-border) !important;
border: var(--zen-appcontent-border);
}
menupopup,
@@ -242,143 +248,32 @@ panel {
box-shadow: none;
}
/*toolbarbutton:not(:is(
#appMenu-fxa-label2,
.subviewbutton-iconic,
.zen-sidebar-action-button,
.all-tabs-close-button,
.zen-sidebar-panel-button,
#zen-sidebar-web-panel-pinned,
#PanelUI-zen-profiles-managePrfs,
.bookmark-item,
#urlbar-zoom-button,
.panel-info-button,
)),*/
#PanelUI-zen-profiles menuitem {
/** ADD HERE ALL TYPES OF BUTTONS THAT WANT TO LOOK CHROME LIKE!!! */
margin: 0 !important;
border-radius: 0 !important;
}
.panel-subview-footer-button {
padding-top: 10px !important;
padding-bottom: 10px !important;
}
#PanelUI-zen-profiles menuitem {
padding: 5px !important;
}
#PanelUI-zen-profiles menuitem:last-child {
margin-bottom: 5px !important;
}
panelview .unified-extensions-item-action-button {
padding: 5px 20px !important;
}
#unified-extensions-description {
padding: 0 20px;
margin: 0 !important;
}
.unified-extensions-item {
padding: 0 !important;
}
.panel-subview-footer-button {
--arrowpanel-menuitem-padding-block: 20px !important;
--arrowpanel-menuitem-padding-inline: 15px !important;
}
toolbarseparator, menuseparator {
border-width: var(--zen-panel-separator-width) !important;
}
#appMenu-zoom-controls {
border-top-width: var(--zen-panel-separator-width) !important;
}
#zenEditBookmarkPanelFaviconContainer {
border: 1px solid var(--input-border-color);
width: 100px;
height: 100px;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
margin: 16px;
background: light-dark(#fff, rgba(255,255,255,.1));
}
#editBookmarkPanel::part(content) {
display: flex;
flex-direction: row !important;
}
#zenEditBookmarkPanelFavicon {
width: 20px;
height: 20px;
}
#editBookmarkPanel .panel-header {
min-height: 0 !important;
padding-bottom: 0;
padding-top: 16px;
}
#editBMPanel_namePicker {
width: -moz-available;
}
label.editBMPanel_folderRow,
label.editBMPanel_nameRow {
min-width: 60px;
}
hbox.editBMPanel_folderRow {
width: -moz-available;
}
.zenEditBMPanel_fieldContainer:not(:first-child) {
margin-top: 10px;
}
.zenEditBMPanel_fieldContainer {
align-items: center;
}
#editBookmarkPanelBottomContent {
display: none;
}
:host(:not([native])) #label-box {
font-weight: 500 !important;
}
#editBMPanel_folderMenuList::part(icon) {
margin-right: 10px;
}
/**/
#unified-extensions-manage-extensions {
padding-left: 20px;
padding-top: 10px;
padding-bottom: 10px;
}
#identity-popup-clear-sitedata-footer {
margin-bottom: 0 !important;
padding-top: 0 !important;
margin: 0;
padding: 0;
}
/* Dialog box */
.printDialogBox {
max-width: 90vw !important;
.panel-subview-footer-button {
--arrowpanel-menuitem-padding-block: 20px;
--arrowpanel-menuitem-padding-inline: 15px;
}
.printSettingsBrowser {
min-width: 350px !important;
toolbarseparator, menuseparator {
border-width: var(--zen-panel-separator-width);
}
#appMenu-zoom-controls {
border-top-width: var(--zen-panel-separator-width);
}
#identity-popup-multiView toolbarseparator,
#editBookmarkHeaderSeparator {
display: none;
}
/* Context menu */
@@ -389,57 +284,3 @@ menu, menuitem {
}
}
/** Unified Extensions View */
#unified-extensions-view {
--uei-icon-size: 16px !important;
.unified-extensions-item {
margin-block: 0 !important;
border-radius: var(--arrowpanel-menuitem-border-radius) !important;
> .unified-extensions-item-action-button {
.unified-extensions-item-message-deck {
display: none;
}
&:hover {
background-color: initial !important;
}
}
> .unified-extensions-item-menu-button {
list-style-image: url("chrome://global/skin/icons/more.svg") !important;
padding: 0 !important;
> .toolbarbutton-icon {
padding: var(--arrowpanel-menuitem-padding-block) var(--arrowpanel-menuitem-padding-inline) !important;
border: none !important;
opacity: 0;
}
&:hover {
> .toolbarbutton-icon {
background-color: initial !important;
}
&:active {
color: var(--button-primary-hover-bgcolor) !important;
}
}
}
&:hover {
background-color: var(--panel-item-hover-bgcolor);
> .unified-extensions-item-menu-button > .toolbarbutton-icon {
opacity: 1;
}
}
&:has(> .unified-extensions-item-action-button:not([disabled]):hover:active) {
background-color: var(--panel-item-active-bgcolor);
}
}
}

View File

@@ -0,0 +1,169 @@
#PanelUI-zen-profiles {
--menu-panel-width: 19em;
position: relative;
padding-bottom: 5px;
}
#PanelUI-zen-profiles-header {
width: 280px;
height: 130px;
background: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%);
position: relative;
}
#PanelUI-zen-profiles-user-picture {
background-image: var(--avatar-image-url);
width: 75px;
height: 75px;
border: 4px var(--arrowpanel-background) solid;
background-color: var(--zen-colors-primary-foreground);
border-radius: 50%;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
margin: 0 auto;
transform: translateY(100%);
}
.PanelUI-zen-profiles-item {
position: relative;
display: flex;
padding: 6px 10px;
font: menu;
align-items: center;
}
#PanelUI-zen-profiles-list .PanelUI-zen-profiles-item {
margin-bottom: 2px;
border-radius: 5px;
margin: 2px 5px;
}
#PanelUI-zen-profiles-list > toolbarseparator:first-child {
margin: 5px;
}
.PanelUI-zen-profiles-item:hover {
background: var(--panel-item-hover-bgcolor);
color: inherit;
}
.PanelUI-zen-profiles-item::after {
content: '';
background-image: url("chrome://global/skin/icons/arrow-right.svg");
background-size: 1em;
background-repeat: no-repeat;
background-position: center;
width: 1em;
height: 1em;
margin-left: auto;
pointer-events: none;
top: 50%;
right: 1em;
transform: translateY(-50%);
position: absolute;
}
@media (prefers-color-scheme: dark) {
.PanelUI-zen-profiles-item::after {
filter: invert(1);
}
}
#PanelUI-zen-profiles-list .PanelUI-zen-profiles-item-avatar {
width: 20px;
height: 20px;
border-radius: 5px;
margin: 1px 0.5em 1px 1px;
}
#PanelUI-zen-profiles-list .PanelUI-zen-profiles-item-name {
font-weight: normal;
font-size: 15px;
margin-left: 5px;
}
#PanelUI-zen-profiles-current-info {
--zen-separation-from-content: 35px;
margin-top: calc(var(--zen-separation-from-content) + 30px); /** Ignore the profile picture */
}
#PanelUI-zen-profiles-current-name {
font-size: 1.3em;
font-weight: 600;
line-height: 0.5;
padding: 5px 10px;
border-radius: 5px;
margin: 0 auto;
}
#PanelUI-zen-profiles toolbarbutton::after {
display: none;
}
#PanelUI-zen-profiles toolbarbutton {
padding-left: 16px;
padding-right: 16px;
}
#PanelUI-zen-profiles toolbarbutton:last-child {
margin-bottom: 5px !important;
}
#PanelUI-zen-profiles-current-profile-current {
font-size: 13px;
opacity: 0.5;
margin: 0 auto var(--zen-separation-from-content) auto;
font-size: 15px;
font-weight: 600;
}
#PanelUI-zen-profiles-actions {
color-scheme: dark;
position: absolute;
top: 10px;
right: 10px;
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-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;
}
#PanelUI-zen-profiles menuitem {
/** ADD HERE ALL TYPES OF BUTTONS THAT WANT TO LOOK CHROME LIKE!!! */
margin: 0;
border-radius: 0;
}
#PanelUI-zen-profiles menuitem {
padding: 5px;
}
#PanelUI-zen-profiles menuitem:last-child {
margin-bottom: 5px;
}

View File

@@ -4,7 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#zen-sidebar-panels-wrapper {
#zen-sidebar-panels-wrapper {
/*min-height: 500px;*/
display: flex;
align-items: center;
@@ -53,6 +53,7 @@
#zen-sidebar-web-panel-wrapper {
--zen-default-sidebar-width: 300px;
--zen-sidebar-web-panel-spacing: var(--zen-element-separation);
position: relative;
margin-right: 0;
display: flex;
@@ -67,17 +68,12 @@
}
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned="true"]) {
--zen-sidebar-web-panel-spacing: 10px;
margin: var(--zen-appcontent-separator-from-window);
position: absolute;
z-index: 1;
width: -moz-available;
padding: var(--zen-sidebar-web-panel-spacing);
height: calc(100% - 10px);
}
#zen-sidebar-web-panel:not([pinned="true"]) {
--zen-sidebar-web-panel-spacing: calc(10px / 3);
height: calc(100% - var(--zen-element-separation));
}
#zen-sidebar-web-panel {
@@ -126,7 +122,7 @@
#zen-sidebar-web-panel[hidden="true"] #zen-sidebar-web-panel-hsplitter,
#zen-sidebar-web-panel-wrapper[hidden="true"] + #zen-sidebar-web-panel-splitter,
#zen-sidebar-web-panel-wrapper[hidden="true"] + #zen-sidebar-web-panel-hsplitter,
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel:not([pinned="true"])) + #zen-sidebar-web-panel-splitter {
#zen-sidebar-web-panel:not([pinned="true"]) #zen-sidebar-web-panel-hsplitter {
display: none;
margin: 0;
}
@@ -159,46 +155,6 @@
animation: zen-sidebar-panel-animation-reverse 0.2s ease-in-out forwards;
}
@keyframes zen-sidebar-panel-animation {
0% {
opacity: 0;
transform: scale3d(0.9, 0.9, 0.9);
}
100% {
opacity: 1;
transform: scale3d(1, 1, 1);
}
}
@keyframes zen-sidebar-panel-animation-2 {
0% {
opacity: 0;
transform: translateX(-50px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@keyframes zen-sidebar-panel-animation-reverse {
0% {
opacity: 1;
transform: translateX(0);
}
99% {
opacity: 0;
transform: translateX(-50px);
}
100% {
display: none !important;
}
}
#zen-sidebar-web-header,
#zen-sidebar-panels-wrapper {
width: 100%;
@@ -275,4 +231,4 @@
width: -moz-available;
text-align: center;
display: block;
}
}

View File

@@ -4,35 +4,30 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
@import url("zen-sidebar-panels.css");
:root {
--sidebar-background-color: var(--toolbar-bgcolor) !important;
--zen-sidebar-box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
}
#sidebar-box {
--zen-sidebar-box-border-radius: var(--zen-browser-border-radius);
margin: 10px !important;
border-radius: var(--zen-sidebar-box-border-radius) !important;
--zen-sidebar-box-border-radius: var(--zen-panel-radius);
margin: var(--zen-element-separation);
border-radius: var(--zen-sidebar-box-border-radius);
overflow: hidden;
transition: .2s;
margin-left: 0 !important;
margin-left: 0;
border: var(--zen-appcontent-border);
box-shadow: none;
margin-top: 0;
}
#sidebar-box[hidden="true"] {
width: 0 !important;
opacity: 0 !important;
width: 0;
opacity: 0;
}
#sidebar-box[positionend="true"] {
order: 1 !important;
}
#sidebar-box:not([positionend ="true"]) {
margin-right: 0 !important;
#sidebar-box:not([positionend="true"]) {
margin-right: 0;
}
#zen-main-app-wrapper:has(#sidebar-box:not([hidden="true"], [positionend="true"])) #TabsToolbar {
@@ -167,13 +162,13 @@
#zen-sidebar-icons-wrapper {
display: flex;
flex-direction: column;
padding: 0 3px;
margin: 0 var(--zen-tabbrowser-padding);
position: relative;
background: transparent !important;
align-items: center;
justify-content: end;
min-height: fit-content;
--zen-sidebar-action-content-separator: 15px;
--zen-sidebar-action-content-separator: calc(10px + var(--zen-tabbrowser-padding));
padding-top: var(--zen-sidebar-action-content-separator);
margin-top: var(--zen-sidebar-action-content-separator);
}
@@ -197,9 +192,24 @@
display: none;
}
:root:not([inDOMFullscreen="true"]) #zen-sidebar-splitter {
display: block;
width: 1px;
opacity: 0;
}
:root[inDOMFullscreen="true"] #zen-sidebar-splitter {
display: none;
}
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
width: 0 !important;
width: 0;
padding-right: 2px;
}
#zen-sidebar-splitter {
display: none !important;
}
}
@@ -208,4 +218,7 @@
display: block;
}
}
:root:is([chromehidden~="location"], [chromehidden~="toolbar"]) #navigator-toolbox {
display: none !important;
}

View File

@@ -0,0 +1,50 @@
/* Screenshots */
#screenshotsPagePanel {
position: absolute !important;
top: 3%;
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: .5s;
opacity: 0;
pointer-events: none;
}
#zen-workspaces-button .zen-workspace-sidebar-name {
margin-left: 10px;
display: none;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
@media not (-moz-bool-pref: "zen.watermark.enabled") {
#zen-watermark {
display: none;
}
}

View File

@@ -0,0 +1,8 @@
/* Styles for both vertical and horizontal tabs */
/*@import url("chrome://browser/content/zen-styles/zen-tabs/horizontal-tabs.css");*/
@import url("chrome://browser/content/zen-styles/zen-tabs/vertical-tabs.css");
#zen-tabbox-wrapper {
position: relative;
}

View File

@@ -0,0 +1,382 @@
@media (-moz-bool-pref: "zen.tabs.vertical") {
#titlebar {
height: 100%;
}
#navigator-toolbox {
--zen-tabbrowser-padding: 5px;
margin-top: 0; /* Issue #156 */
}
:root[inFullscreen="true"] #navigator-toolbox {
margin-top: 0 !important;
}
#zen-tabbox-wrapper:has(#zen-sidebar-splitter:not([state="dragging"])) #navigator-toolbox {
transition: .3s;
}
#navigator-toolbox toolbar#TabsToolbar {
margin: var(--zen-appcontent-separator-from-window);
overflow: hidden;
transition: .2s;
flex-direction: column;
padding: 5px 0;
margin-right: 0;
-moz-window-dragging: no-drag;
--zen-sidebar-action-button-width: 38px;
padding-bottom: calc(5px + 5px); /* Taking into consideration the padding of the sidebar without being inlined */
}
#TabsToolbar-customization-target {
flex-direction: column;
}
:root[customizing] .customization-target:not(#widget-overflow-fixed-list) {
min-width: 0;
}
toolbarpaletteitem {
justify-content: center;
}
toolbarbutton#scrollbutton-down,
toolbarbutton#scrollbutton-up {
display: none;
}
#toolbar-menubar {
display: none;
}
.tab-label-container {
display: none;
}
.tab-icon-stack > .tab-icon-image,
.tab-icon-stack > .tab-throbber {
width: var(--zen-browser-tab-icon-size);
height: var(--zen-browser-tab-icon-size);
margin-inline-end: 0;
}
.tab-icon-stack .tab-icon-image {
transform: scale(0.5);
opacity: 0;
animation: zen-zoom-in 0.12s ease-in-out 0.3s forwards;
}
.tab-background {
display: none;
}
.tabbrowser-tab {
--zen-browser-tab-icon-size: 18px;
--tab-min-width: 36px;
margin: 0 auto;
border-radius: 8px;
position: relative;
color-scheme: var(--tab-selected-color-scheme);
border: 2px solid transparent;
background: transparent;
padding: 0;
align-items: center;
min-height: var(--tab-min-width); /* Make a box */
animation: zen-slide-in 0.3s;
width: calc(var(--zen-browser-tab-icon-size) + 2px);
transition: .1s background, .1s border-color;
min-width: var(--tab-min-width);
display: flex;
justify-content: center;
align-items: center;
}
@media (-moz-bool-pref: "zen.tabs.dim-pending") {
.tabbrowser-tab[pending]:not(:hover) {
opacity: 0.5;
}
}
.tabbrowser-tab[hidden="true"] {
display: none;
}
.tabbrowser-tab:hover {
background: var(--toolbarbutton-hover-background);
}
.tabbrowser-tab:active,
.zen-sidebar-panel-button:active {
transform: scale(0.9);
}
.tab-stack {
width: 30px;
height: 30px;
min-width: 30px;
min-height: 30px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.tabbrowser-tab:not([fadein]) {
display: none;
}
.tabbrowser-tab:is([multiselected="true"], [selected]) {
background: var(--toolbarbutton-hover-background);
}
#private-browsing-indicator-with-label {
display: none;
}
.tabbrowser-tab::after {/* Containers */
background: var(--identity-tab-color, transparent);
border-radius: 2px;
height: 80%;
width: 2px;
position: absolute;
top: 50%;
transform: translateY(-50%);
left: -2px;
content: '';
pointer-events: none;
}
.tabbrowser-tab {
margin-inline-start: 0;
margin: 0 auto;
margin-bottom: 1.5px;
}
.tabbrowser-tab[pinned] {
position: relative;
display: flex;
}
#tabbrowser-tabs:has(.tabbrowser-tab[pinned]) .tabbrowser-tab:nth-child(1 of [fadein]:not([pinned]):not([hidden])) {
margin-top: 15px;
position: relative;
overflow: visible;
& .tab-stack::before {
content: '';
position: absolute;
top: -11px;
left: 0;
width: 100%;
height: 1.5px;
border-radius: 1px;
background: var(--zen-colors-border);
}
}
.tab-close-button {
position: absolute;
display: none;
left: 0;
top: 50%;
}
.tabbrowser-tab[open="true"]:hover .tab-close-button {
/* TODO: fix this */
/*display: block;*/
}
.tab-content {
padding: 0;
width: fit-content;
&[pinned] {
padding: 0 !important;
}
}
.toolbar-items > toolbartabstop:first-child {
display: none;
}
#nav-bar > *:not(.titlebar-buttonbox-container) {
padding-top: 5px;
padding-bottom: 5px;
}
#TabsToolbar-customization-target {
height: 100%;
}
#tabbrowser-tabs {
margin-inline-start: 0;
padding-inline-start: 0;
border: none;
/*background: light-dark(rgba(0,0,0,.05), rgba(255,255,255,.05));*/
margin: 0;
border: none;
height: 100%;
padding-inline-start: 0 !important;
margin-inline-start: 0 !important;
}
#tabbrowser-arrowscrollbox {
margin: 3px 0;
}
#alltabs-button stack {
transform: rotate(-90deg);
}
.tab-icon-overlay {
margin-inline-end: 0;
display: none; /* TODO: fix this */
}
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
width: fit-content !important;
}
}
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
--zen-navigation-toolbar-min-width: 155px;
min-width: var(--zen-navigation-toolbar-min-width) !important;
align-items: start;
transition: .2s;
width: 170px;
border: none;
padding-left: 2px;
}
.tab-label-container {
display: block;
}
#titlebar,
#TabsToolbar,
#TabsToolbar .toolbar-items {
width: 100%;
align-items: flex-start;
}
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) {
width: 100% !important;
border-radius: 8px;
}
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button):hover {
background: var(--button-hover-bgcolor);
}
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-text,
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-icon,
#TabsToolbar > .toolbar-items toolbarbutton:not(#zen-workspaces-button) .toolbarbutton-badge-stack {
background: transparent !important;
}
#tabbrowser-arrowscrollbox-periphery > toolbarbutton {
display: flex;
justify-content: center;
align-items: center;
}
.tabbrowser-tab {
max-width: unset !important;
&:not([pinned]) {
width: 100%;
&:hover .tab-close-button {
display: block !important;
}
& .tab-content {
position: relative;
width: 100%;
}
& .tab-stack {
justify-content: start;
padding: 10px;
width: 100% !important;
}
& .tab-label-container {
#tabbrowser-tabs:not([secondarytext-unsupported]) & {
display: flex;
align-items: center;
padding-left: 10px;
}
}
}
&:active,
.zen-sidebar-panel-button:active {
transform: scale(0.96) !important;
}
&[pinned] {
margin: 0 !important;
}
}
#tabbrowser-arrowscrollbox::part(scrollbox) {
/* We have the pinned tabs on the top, next to each other,
* and the rest of the tabs are below them. */
display: grid;
grid-template-columns: repeat(auto-fill, minmax(var(--tab-min-height), 1fr));
padding: calc(var(--zen-tabbrowser-padding) / 2);
}
.tabbrowser-tab:not([pinned]),
#tabbrowser-arrowscrollbox-periphery {
grid-column: 1 / -1;
}
.tabbrowser-tab[pinned] {
grid-column: span 1;
min-width: 100%;
}
#zen-sidebar-icons-wrapper {
width: -moz-available;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(37px, 1fr));
transition: .1s;
}
#zen-sidebar-icons-wrapper::before {
width: 100%;
}
}
/* Display the vertical tabs on the right side */
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") and (not (-moz-bool-pref: "zen.view.compact")) {
#navigator-toolbox {
order: 4;
padding-left: 0;
}
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
padding-right: 3px !important;
}
}
#zen-sidebar-splitter {
order: 3;
}
#tabbrowser-tabbox {
padding-left: 10px;
}
#tabbrowser-tabpanels .browserSidebarContainer {
margin-right: 0 !important;
}
}
}

View File

@@ -1,27 +1,20 @@
/*
* 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/.
*/
@import url("zen-common-shared-ui-override.css");
/* Here, we contain all the theme related variables, for example theme
* colors, border radius, etc.
* We have `--zen-border-radius` and `--zen-primary-color` as variables.
*/
:host(:is(.anonymous-content-host, notification-message)),
:root,
.zenLooksAndFeelColorOption {
/** We also add `.zenLooksAndFeelColorOption` so that it recalculates the colors when the theme changes
* in the preferences page.
*/
* in the preferences page.
*/
/** Primary colors examples:
* - green: #96D785;
* - blue: #0b57d0;
* - yellow: #F8BC48;
*/
/** Primary color will be injected by the theme as `--zen-primary-color` */
--zen-primary-color: #aac7ff; /* This is the default blue color, in case the theme doesn't provide a primary color */
/* Default values */
--zen-border-radius: 7px;
--zen-primary-color: #4a90e2;
/** Zen colors are generated automatically from the primary color */
--zen-colors-primary: color-mix(in srgb, var(--zen-primary-color) 50%, black 50%);
@@ -37,6 +30,8 @@
--zen-dialog-background: var(--zen-colors-tertiary);
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, #f1f1f1 92%);
--zen-secondary-btn-color: var(--zen-colors-primary-foreground);
--in-content-primary-button-background: light-dark(
color-mix(in srgb, var(--zen-primary-color) 35%, black 65%),
color-mix(in srgb, var(--zen-primary-color) 35%, white 65%)
@@ -50,7 +45,6 @@
--in-content-primary-button-border-color: transparent !important;
--in-content-primary-button-border-hover: transparent !important;
--in-content-primary-button-border-active: var(--zen-colors-border) !important;
--zen-characteristic-gradient: linear-gradient(135deg, #fac89a 0%, #e290ff 100%);
--in-content-accent-color: var(--zen-colors-primary) !important;
@@ -65,7 +59,6 @@
) !important;
--button-bgcolor: var(--in-content-button-background) !important;
--button-hover-bgcolor: var(--in-content-button-background-hover) !important;
--zen-secondary-btn-color: var(--zen-colors-primary-foreground);
--focus-outline-color: var(--button-bgcolor) !important;
--in-content-button-text-color: var(--zen-secondary-btn-color) !important;
@@ -74,7 +67,7 @@
--button-primary-bgcolor: var(--in-content-primary-button-background) !important;
--button-primary-hover-bgcolor: var(--in-content-primary-button-background-hover) !important;
--button-primary-active-bgcolor: var(--in-content-primary-button-background-active) !important;
--button-primary-color: var(--in-content-primary-button-text-color) !important;
--button-primary-color: var(--in-content-primary-button-text-color) !important;
--in-content-page-background: var(--zen-colors-tertiary) !important;
--zen-in-content-dialog-background: var(--zen-colors-tertiary);
@@ -85,9 +78,41 @@
/* Other colors */
--urlbar-box-bgcolor: var(--zen-urlbar-background) !important;
--toolbar-field-focus-background-color: var(--urlbar-box-bgcolor) !important;
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77)) !important;
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77));
/* Constants */
--zen-element-separation: .5rem;
/* XUL */
--zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b);
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 50%, white 50%);
--zen-appcontent-border: 1px solid var(--zen-colors-border);
--zen-panel-radius: var(--zen-border-radius);
--toolbarbutton-border-radius: 6px;
--fp-contextmenu-border-radius: 8px;
--fp-contextmenu-padding: calc(4px - var(--fp-contextmenu-menuitem-border-width)) 0;
--fp-contextmenu-menuitem-border-radius: calc(4px + var(--fp-contextmenu-menuitem-border-width));
--fp-contextmenu-menuitem-padding-block: 6px;
--fp-contextmenu-menuitem-padding-inline: 10px;
--fp-contextmenu-menuitem-border-width: 2px;
--fp-contextmenu-menuicon-margin-inline: 12px;
--fp-contextmenu-menuitem-margin-inline: calc(4px - var(--fp-contextmenu-menuitem-border-width));
--fp-contextmenu-menuitem-margin-block: 0px;
--fp-contextmenu-menuitem-margin: var(--fp-contextmenu-menuitem-margin-block) var(--fp-contextmenu-menuitem-margin-inline);
--fp-contextmenu-separator-vertical: calc(4px - var(--fp-contextmenu-menuitem-border-width));
--fp-contextmenu-separator-horizontal: 0;
--fp-contextmenu-bgcolor: light-dark(Menu, rgb(43 42 51 / 0.95));
--toolbar-bgcolor: transparent;
--input-bgcolor: var(--zen-colors-tertiary) !important;
--input-border-color: var(--zen-input-border-color) !important;
--zen-themed-toolbar-bg: var(--zen-colors-tertiary);
--toolbar-field-background-color: var(--zen-colors-input-bg);
--arrowpanel-background: var(--zen-dialog-background) !important;
}
@media (prefers-color-scheme: dark) {
@@ -106,19 +131,15 @@
--zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 80%, black 20%);
--zen-dialog-background: color-mix(in srgb, var(--zen-primary-color) 10%, black 90%);
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, black 92%);
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, black 92%);
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, black 70%);
}
}
window#commonDialogWindow {
background-color: var(--zen-in-content-dialog-background) !important;
}
@media (-moz-bool-pref: "zen.theme.pill-button") {
:host(:is(.anonymous-content-host, notification-message)),
@media not (-moz-bool-pref: "zen.theme.toolbar-themed") {
:root {
--zen-button-border-radius: 20px;
--toolbar-bgcolor: light-dark(white, #1b1b1b) !important;
--zen-themed-toolbar-bg: var(--toolbar-bgcolor);
}
}

View File

@@ -0,0 +1,8 @@
#nav-bar {
background: transparent;
}
:root[inDOMFullscreen="true"] #zen-appcontent-navbar-container {
display: none;
}

View File

@@ -0,0 +1,151 @@
/* URL and tool bars */
#urlbar {
--toolbarbutton-border-radius: 999px;
border: transparent;
overflow: hidden;
padding: 1px;
border-radius: var(--toolbarbutton-border-radius);
}
#urlbar[focused="true"][breakout-extend="true"] {
overflow: visible;
}
#urlbar {
border: 1px solid light-dark(rgba(0,0,0,.2), rgba(255,255,255,.2))
}
#searchbar:focus-within {
border-color: transparent !important;
}
#urlbar[focused="true"] {
box-shadow: var(--panel-shadow) !important;
}
#urlbar[focused="true"] > #urlbar-background {
background: var(--zen-dialog-background) !important;
}
#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background,
#searchbar:focus-within {
outline: none !important;
outline-offset: none !important;
outline-color: none !important;
}
#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-box {
background: var(--zen-colors-secondary) !important;
}
#urlbar:is([focused], [open]) > #urlbar-background, #searchbar:focus-within {
background: var(--urlbar-box-bgcolor);
}
#identity-icon-label {
padding-inline-start: 8px !important;
}
#urlbar #identity-box.chromeUI #identity-icon-box {
border-radius: 5px !important;
}
#urlbar:not([breakout-extend="true"]) #identity-box.chromeUI #identity-icon-box {
border-radius: 20px 10px 10px 20px !important;
}
#urlbar .urlbar-page-action,
#urlbar #identity-box #identity-icon-box,
#urlbar #tracking-protection-icon-container {
margin: 0 1px;
}
#urlbar:not([extend="true"]) #identity-box #identity-icon-box { position: relative;}
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI):not(.localResource) #identity-icon-box {
margin-right: 5px;
}
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI):not(.localResource) {
margin-inline-end: 0 !important;
}
.urlbar-page-action {
width: calc(var(--urlbar-min-height) - 5px - 2 * var(--urlbar-container-padding)) !important;
height: calc(var(--urlbar-min-height) - 5px - 2 * var(--urlbar-container-padding)) !important;
padding: 0 !important;
justify-content: center !important;
align-items: center !important;
}
toolbar .toolbarbutton-1:not(.unified-extensions-item-action-button) {
& > .toolbarbutton-icon,
& > .toolbarbutton-badge-stack {
width: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
height: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
}
}
toolbar .zen-sidebar-panel-button {
& > .toolbarbutton-icon,
& > .toolbarbutton-badge-stack {
width: calc(2 * var(--toolbarbutton-inner-padding) + 20px) !important;
height: calc(2 * var(--toolbarbutton-inner-padding) + 20px) !important;
}
}
#identity-permission-box {
margin: 0 5px 0 0 !important;
border-top-left-radius: 0 !important;
border-bottom-left-radius: 0 !important;
}
#identity-box:has(#identity-permission-box:is([hasPermissions], [hasSharingIcon])) #identity-icon-box {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
margin-right: 0 !important;
}
#tracking-protection-icon-container,
#page-action-buttons {
order: 2 !important;
}
#notification-popup-box {
border-radius: 999px;
margin-right: 5px;
transition: .2s;
height: 100%;
padding: 7px;
}
button.popup-notification-dropmarker {
border-top-left-radius: 0 !important;
border-bottom-left-radius: 0 !important;
}
.panel-footer:has(button.popup-notification-dropmarker:not([hidden="true"])) button.popup-notification-secondary-button {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
.searchbar-engine-one-off-item {
max-width: 20px;
min-width: 20px !important;
justify-content: center;
}
#downloadsHistory {
margin-top: 5px
}

View File

@@ -0,0 +1,184 @@
#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: .1rem !important;
justify-content: center;
align-items: center;
display: flex;
}
#zen-workspaces-button .zen-workspace-sidebar-name {
margin-left: .1rem;
display: none;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
#zen-workspaces-button .zen-workspace-sidebar-name {
display: block;
}
#zen-workspaces-button .zen-workspace-sidebar-icon[no-icon="true"] {
display: none;
}
#zen-workspaces-button .zen-workspace-sidebar-icon[no-icon="true"] + .zen-workspace-sidebar-name {
margin-left: 0;
}
#zen-workspaces-button {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
display: flex;
padding: 2px 10px;
width: calc(100% - var(--zen-tabbrowser-padding) * 8) !important;
}
}
/* Workspaces Panel UI */
#PanelUI-zen-workspaces {
--panel-width: 320px;
--panel-padding: 0;
}
#PanelUI-zen-workspaces > panelmultiview {
align-items: flex-start;
}
#PanelUI-zen-workspaces panelmultiview panelview {
position: relative;
padding: 15px;
width: var(--panel-width);
min-height: 150px;
}
#PanelUI-zen-workspaces-create-input {
margin-top: 10px;
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton {
width: 30px;
height: 30px;
display: flex;
justify-content: center;
align-items: center;
border: 2px solid transparent;
border-radius: 7px;
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton[selected="true"] {
border-color: var(--zen-colors-secondary);
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-icon {
display: none;
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-text {
min-width: unset;
}
#PanelUI-zen-workspaces-create-icons-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(30px, 1fr));
gap: 8px;
}
#PanelUI-zen-workspaces-list {
display: flex;
flex-direction: column;
}
#PanelUI-zen-workspaces-list[empty="true"] {
font-weight: 600;
padding: 10px;
width: 100%;
text-align: start;
opacity: 0.5;
}
#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%;
}

View File

@@ -1,4 +0,0 @@
<html:div id="zen-watermark">
<image src="chrome://branding/content/about-logo.png" />
</html:div>

View File

@@ -12,6 +12,7 @@
*/
const kZenThemeAccentColorPref = "zen.theme.accent-color";
const kZenThemeBorderRadiusPref = "zen.theme.border-radius";
/**
* ZenThemeModifier controls the application of theme data to the browser,
@@ -32,13 +33,15 @@ var ZenThemeModifier = {
init() {
this._inMainBrowserWindow = window.location.href == "chrome://browser/content/browser.xhtml";
this.listenForEvents();
this.updateExtraBrowserStyles();
this.updateAllThemeBasics();
this._zenInitBrowserLayout();
this._onPrefersColorSchemeChange();
},
listenForEvents() {
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', this._onPrefersColorSchemeChange.bind(this));
Services.prefs.addObserver(kZenThemeAccentColorPref, this.handleEvent.bind(this));
Services.prefs.addObserver(kZenThemeBorderRadiusPref, this.handleEvent.bind(this));
},
handleEvent(event) {
@@ -51,6 +54,12 @@ var ZenThemeModifier = {
*/
updateAllThemeBasics() {
this.updateAccentColor();
this.updateBorderRadius();
},
updateBorderRadius() {
const borderRadius = Services.prefs.getIntPref(kZenThemeBorderRadiusPref, 4);
document.documentElement.style.setProperty("--zen-border-radius", borderRadius + "px");
},
/**
@@ -66,99 +75,14 @@ var ZenThemeModifier = {
}
},
updateExtraBrowserStyles() {
// If we are in the main browser window, we can add some extra styles.
if (!this._inMainBrowserWindow) return;
this._changeSidebarLocation();
},
_changeSidebarLocation() {
const kElementsToAppend = [
"sidebar-splitter",
"sidebar-box",
"navigator-toolbox",
];
const wrapper = document.getElementById("zen-tabbox-wrapper");
const appWrapepr = document.getElementById("zen-sidebar-box-container");
for (let id of kElementsToAppend) {
const elem = document.getElementById(id);
if (elem) {
wrapper.prepend(elem);
}
}
appWrapepr.setAttribute("hidden", "true");
// Set a splitter to navigator-toolbox
const splitter = document.createXULElement("splitter");
splitter.setAttribute("id", "zen-sidebar-splitter");
splitter.setAttribute("orient", "horizontal");
splitter.setAttribute("resizebefore", "sibling");
splitter.setAttribute("resizeafter", "none");
const titlebar = document.getElementById("navigator-toolbox");
titlebar.insertAdjacentElement("afterend", splitter);
},
_zenInitBrowserLayout() {
if (!this._inMainBrowserWindow) return;
if (this.__hasInitBrowserLayout) return;
this.__hasInitBrowserLayout = true;
this.openWatermark();
console.info("ZenThemeModifier: init browser layout");
const kNavbarItems = [
"nav-bar",
"PersonalToolbar"
];
const kSeparatorId = "zen-website-and-native-separator";
const kNewContainerId = "zen-appcontent-navbar-container";
let newContainer = document.getElementById(kNewContainerId);
for (let id of kNavbarItems) {
const node = document.getElementById(id);
console.assert(node, "Could not find node with id: " + id);
if (!node) continue;
newContainer.appendChild(node);
}
// Add the separator
const separator = document.createElement("span");
separator.id = kSeparatorId;
newContainer.appendChild(separator);
gZenVerticalTabsManager.init();
gZenCompactModeManager.init();
_onPrefersColorSchemeChange() {
this._updateZenAvatar();
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', this._onPrefersColorSchemeChange.bind(this));
function throttle(f, delay) {
let timer = 0;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => f.apply(this, args), delay);
}
}
new ResizeObserver(throttle(
this._updateTabsToolbar.bind(this), 1000
)).observe(document.getElementById("tabbrowser-tabs"));
this.closeWatermark();
},
_onPrefersColorSchemeChange(event) {
this._updateZenAvatar();
},
_updateTabsToolbar() {
// Set tabs max-height to the "toolbar-items" height
const toolbarItems = document.getElementById("tabbrowser-tabs");
const tabs = document.getElementById("tabbrowser-arrowscrollbox");
tabs.style.maxHeight = '0px'; // reset to 0
const toolbarRect = toolbarItems.getBoundingClientRect();
// -7 for the controls padding
tabs.style.maxHeight = toolbarRect.height - 7 + "px";
console.info("ZenThemeModifier: set tabs max-height to", toolbarRect.height + "px");
},
_updateZenAvatar() {
if (typeof ProfileService === "undefined") {
return;
}
const mainWindowEl = document.documentElement;
// Dont override the sync avatar if it's already set
if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
@@ -184,23 +108,6 @@ var ZenThemeModifier = {
let scheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? "dark" : "light";
return `${withoutExtension}-${scheme}.svg`;
},
openWatermark() {
if (!Services.prefs.getBoolPref("zen.watermark.enabled", false)) {
return;
}
const watermark = document.getElementById("zen-watermark");
if (watermark) {
watermark.removeAttribute("hidden");
}
},
closeWatermark() {
const watermark = document.getElementById("zen-watermark");
if (watermark) {
watermark.setAttribute("hidden", "true");
}
},
};
if (typeof Services !== "undefined")

View File

@@ -1,12 +1,12 @@
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
index e3eb0e6e5f30152905456a07cfe532fe173375fb..9d356d62421d779f9e16f6761cce97826c7943ed 100644
index c724d243dc62a039d75aaee25cc956193589d9dc..04819ec5e17bd2023dbfb3e9dd812f832d9a7e92 100644
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -105,3 +105,6 @@ browser.jar:
@@ -103,3 +103,6 @@ browser.jar:
# L10n resources and overrides.
% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
+
+#include content/zen-avatars/jar.inc.mn
+#include content/zen-scripts.jar.inc.mn
+#include content/zen-assets.jar.inc.mn
\ No newline at end of file

View File

@@ -0,0 +1,12 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index 4c2637db10b7ad5d253d9588be3610c1ec5ad330..b8445b808cf9dcb54d380ae78172db4bf8250cd4 100644
--- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml
@@ -369,6 +369,7 @@
languages-customize-add.label,
" />
</hbox>
+ <label class="zenLanguageWarning-label"><html:b data-l10n-id="zen-warning-language"/></label>
<checkbox id="useSystemLocale" hidden="true"
data-l10n-id="use-system-locale"

View File

@@ -15,11 +15,137 @@ const kZenColors = [
"#d4bbff",
];
var gZenMarketplaceManager = {
init() {
this._buildThemesList();
Services.prefs.addObserver(this.updatePref, this._buildThemesList.bind(this));
},
get updatePref() {
return "zen.themes.updated-value-observer";
},
triggerThemeUpdate() {
Services.prefs.setBoolPref(this.updatePref, !Services.prefs.getBoolPref(this.updatePref));
},
get themesList() {
return document.getElementById("zenThemeMarketplaceList");
},
get themesDataFile() {
return PathUtils.join(
PathUtils.profileDir,
"zen-themes.json"
);
},
get themesRootPath() {
return PathUtils.join(
PathUtils.profileDir,
"chrome",
"zen-themes"
);
},
async removeTheme(themeId) {
const themePath = PathUtils.join(this.themesRootPath, themeId);
console.info("ZenThemeMarketplaceParent(settings): Removing theme ", themePath);
await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true });
let themes = await this._getThemes();
delete themes[themeId];
await IOUtils.writeJSON(this.themesDataFile, themes);
this.triggerThemeUpdate();
},
async _getThemes() {
if (!this._themes) {
if (!(await IOUtils.exists(this.themesDataFile))) {
await IOUtils.writeJSON(this.themesDataFile, {});
}
this._themes = await IOUtils.readJSON(this.themesDataFile);
}
return this._themes;
},
async _getThemePreferences(theme) {
const themePath = PathUtils.join(this.themesRootPath, theme.id, "preferences.json");
if (!(await IOUtils.exists(themePath)) || !theme.preferences) {
return {};
}
return await IOUtils.readJSON(themePath);
},
async _buildThemesList() {
let themes = await this._getThemes();
this.themesList.innerHTML = "";
for (let theme of Object.values(themes)) {
const fragment = window.MozXULElement.parseXULToFragment(`
<hbox class="zenThemeMarketplaceItem">
<vbox class="zenThemeMarketplaceItemContent">
<label><h3 class="zenThemeMarketplaceItemTitle"></h3></label>
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
</vbox>
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
</hbox>
`);
fragment.querySelector(".zenThemeMarketplaceItemTitle").textContent = theme.name;
fragment.querySelector(".zenThemeMarketplaceItemDescription").textContent = theme.description;
fragment.querySelector(".zenThemeMarketplaceItemUninstallButton").addEventListener("click", async (event) => {
if (!confirm("Are you sure you want to remove this theme?")) {
return;
}
const target = event.target;
const themeId = target.getAttribute("zen-theme-id");
await this.removeTheme(themeId);
});
this.themesList.appendChild(fragment);
const preferences = await this._getThemePreferences(theme);
if (Object.keys(preferences).length > 0) {
let preferencesWrapper = document.createXULElement("vbox");
preferencesWrapper.classList.add("indent");
preferencesWrapper.classList.add("zenThemeMarketplaceItemPreferences");
for (let [key, value] of Object.entries(preferences)) {
const fragment = window.MozXULElement.parseXULToFragment(`
<hbox class="zenThemeMarketplaceItemPreference">
<checkbox class="zenThemeMarketplaceItemPreferenceCheckbox" zen-pref="${key}"></checkbox>
<vbox class="zenThemeMarketplaceItemPreferenceData">
<label class="zenThemeMarketplaceItemPreferenceLabel">${key}</label>
<description class="description-deemphasized zenThemeMarketplaceItemPreferenceValue">${value}</description>
</vbox>
</hbox>
`);
// Checkbox only works with "true" and "false" values, it's not like HTML checkboxes.
if (Services.prefs.getBoolPref(key, false)) {
fragment.querySelector(".zenThemeMarketplaceItemPreferenceCheckbox").setAttribute("checked", "true");
}
fragment.querySelector(".zenThemeMarketplaceItemPreferenceCheckbox").addEventListener("click", (event) => {
let target = event.target.closest(".zenThemeMarketplaceItemPreferenceCheckbox");
let key = target.getAttribute("zen-pref");
let checked = target.hasAttribute("checked");
if (!checked) {
target.removeAttribute("checked");
} else {
target.setAttribute("checked", "true");
}
Services.prefs.setBoolPref(key, !checked);
});
preferencesWrapper.appendChild(fragment);
}
this.themesList.appendChild(preferencesWrapper);
}
}
}
};
var gZenLooksAndFeel = {
init() {
this._initializeColorPicker(this._getInitialAccentColor());
window.zenPageAccentColorChanged = this._handleAccentColorChange.bind(this);
gZenThemeBuilder.init();
gZenMarketplaceManager.init();
},
_initializeColorPicker(accentColor) {
@@ -109,8 +235,8 @@ var gZenCKSSettings = {
const group = data[2];
let fragment = window.MozXULElement.parseXULToFragment(`
<hbox class="zenCKSOption">
<label class="zenCKSOption-label"></label>
<html:input readonly="1" class="zenCKSOption-input"/>
<label class="zenCKSOption-label" for="zenCKSOption-${key}"></label>
<html:input readonly="1" class="zenCKSOption-input" id="zenCKSOption-${key}" />
</hbox>
`);
document.l10n.setAttributes(fragment.querySelector(".zenCKSOption-label"), l10nId);
@@ -164,13 +290,15 @@ var gZenCKSSettings = {
meta: event.metaKey
};
if (event.key === "Tab") {
const shortcutWithoutModifiers = !shortcut.ctrl && !shortcut.alt && !shortcut.shift && !shortcut.meta;
if (event.key === "Tab" && shortcutWithoutModifiers) {
return;
} else if (event.key === "Escape") {
} else if (event.key === "Escape" && shortcutWithoutModifiers) {
this._currentAction = null;
input.blur();
return;
} else if (event.key === "Backspace") {
} else if (event.key === "Backspace" && shortcutWithoutModifiers) {
this._resetCKS(input, this._currentAction);
return;
}
@@ -248,11 +376,6 @@ Preferences.addAll([
type: "bool",
default: true,
},
{
id: "zen.theme.floating-urlbar",
type: "bool",
default: false,
},
{
id: "zen.keyboard.shortcuts.disable-firefox",
type: "bool",

View File

@@ -34,6 +34,33 @@
</vbox>
</groupbox>
<hbox id="zenThemeCategory"
class="subcategory"
hidden="true"
data-category="paneZenLooks">
<html:h1 data-l10n-id="pane-zen-theme-title"/>
</hbox>
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
<label><html:h2 data-l10n-id="zen-theme-marketplace-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-description" />
<hbox class="indent">
<html:a id="zenThemeMarketplaceLink" href="https://zen-browser.app/themes" target="_blank" data-l10n-id="zen-theme-marketplace-link" />
</hbox>
<vbox id="zenThemeMarketplaceList"></vbox>
<label><html:h2 data-l10n-id="zen-look-and-feel-buttons-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-buttons-description" />
<checkbox id="zenLooksAndFeelPilledButtons"
data-l10n-id="zen-look-and-feel-pilled-buttons"
preference="zen.theme.pill-button"/>
<label><html:h2 data-l10n-id="zen-look-and-feel-urlbar-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-urlbar-description" />
</groupbox>
<hbox id="zenSidePanelsCategory"
class="subcategory"
hidden="true"
@@ -74,27 +101,4 @@
preference="zen.view.sidebar-expanded"/>
</groupbox>
<hbox id="zenThemeCategory"
class="subcategory"
hidden="true"
data-category="paneZenLooks">
<html:h1 data-l10n-id="pane-zen-theme-title"/>
</hbox>
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
<label><html:h2 data-l10n-id="zen-look-and-feel-buttons-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-buttons-description" />
<checkbox id="zenLooksAndFeelPilledButtons"
data-l10n-id="zen-look-and-feel-pilled-buttons"
preference="zen.theme.pill-button"/>
<label><html:h2 data-l10n-id="zen-look-and-feel-urlbar-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-urlbar-description" />
<checkbox id="zenLooksAndFeelFloatingUrlbar"
data-l10n-id="zen-look-and-feel-floating-urlbar"
preference="zen.theme.floating-urlbar"/>
</groupbox>
</html:template>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index 2674dc2bebf436529a46d45c52cb56e86b82c03f..06d30b3e33562d8eaa04522d3719728126c59a81 100644
index 6e7a8ca21a20626a0607d860c56e39991b4aa2b8..d998059907f2467b0648c94c54c502278e2b188d 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -3208,6 +3208,11 @@
@@ -3214,6 +3214,11 @@
) {
tabWasReused = true;
tab = this.selectedTab;
@@ -14,7 +14,7 @@ index 2674dc2bebf436529a46d45c52cb56e86b82c03f..06d30b3e33562d8eaa04522d37197281
if (!tabData.pinned) {
this.unpinTab(tab);
} else {
@@ -3257,6 +3262,10 @@
@@ -3263,6 +3268,10 @@
preferredRemoteType,
});
@@ -25,3 +25,11 @@ index 2674dc2bebf436529a46d45c52cb56e86b82c03f..06d30b3e33562d8eaa04522d37197281
if (select) {
tabToSelect = tab;
}
@@ -4150,6 +4159,7 @@
isLastTab ||
aTab.pinned ||
aTab.hidden ||
+ true ||
this._removingTabs.size >
3 /* don't want lots of concurrent animations */ ||
!aTab.hasAttribute(

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01bef0c21b 100644
index e9aa0f03c26dc26e1a2e56d28fadb70e60c8e8ca..9c209752b01bd07a3f38452da4bc8efc7433466c 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -552,19 +552,36 @@
@@ -146,21 +146,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01
children.pop();
this._allTabs = children;
return children;
@@ -1144,10 +1188,13 @@
}
_initializeArrowScrollbox() {
+ this.toggleAttribute("overflow", true);
+
let arrowScrollbox = this.arrowScrollbox;
let previewElement = document.getElementById("tab-preview-panel");
arrowScrollbox.shadowRoot.addEventListener(
"underflow",
event => {
+ return;
// Ignore underflow events:
// - from nested scrollable elements
@@ -1471,11 +1518,11 @@
@@ -1476,11 +1520,11 @@
for (let i = numPinned - 1; i >= 0; i--) {
let tab = tabs[i];
width += layoutData.pinnedTabWidth;
@@ -177,7 +163,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01
tab._pinnedUnscrollable = true;
}
this.style.setProperty(
@@ -1510,19 +1557,30 @@
@@ -1515,19 +1559,30 @@
}
}
@@ -217,7 +203,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01
let pinned = draggedTab.pinned;
let numPinned = gBrowser._numPinnedTabs;
@@ -1531,36 +1589,39 @@
@@ -1536,36 +1591,39 @@
pinned ? numPinned : undefined
);
@@ -268,7 +254,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01
}
draggedTab._dragData.translateX = translateX;
@@ -1593,11 +1654,11 @@
@@ -1598,11 +1656,11 @@
if (tabs[mid] == draggedTab && ++mid > high) {
break;
}
@@ -282,7 +268,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01
tabCenter
) {
low = mid + 1;
@@ -1620,16 +1681,16 @@
@@ -1625,16 +1683,16 @@
for (let tab of tabs) {
if (tab != draggedTab) {
let shift = getTabShift(tab, newIndex);
@@ -302,7 +288,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01
}
return 0;
}
@@ -1701,9 +1762,9 @@
@@ -1706,9 +1764,9 @@
// Slide the relevant tabs to their new position.
for (let t of this._getVisibleTabs()) {

View File

@@ -79,6 +79,7 @@ body {
display: flex;
justify-content: space-between;
align-items: center;
z-index: 2;
}
#second-view {
@@ -336,10 +337,23 @@ input[type='checkbox'] {
#searchList.cardGroup {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 15px;
}
#searchList .card {
width: -moz-available !important;
margin: 20px;
padding: 20% 0 !important;
margin: 0;
display: flex;
flex-direction: row;
border-radius: 15px;
& h3 {
text-align: start;
margin: 0;
margin-left: 20px;
}
&.selected {
transform: scale(1.01);
}
}

View File

@@ -63,7 +63,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
</div>
<h2 data-l10n-id="welcome-dialog-theme-header-2"></h2>
<div id="themeList" class="cardGroup">
<svg width="700" height="700" viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
<svg viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_404_2706)">
<rect width="700" height="700" fill="#F4F4F4"/>
<g filter="url(#filter0_d_404_2706)">
@@ -92,7 +92,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
</clipPath>
</defs>
</svg>
<svg width="700" height="700" viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
<svg viewBox="0 0 700 700" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_404_2709)">
<rect width="700" height="700" fill="#515151"/>
<g filter="url(#filter0_d_404_2709)">

View File

@@ -1,8 +1,9 @@
pane-zen-looks-title = Looks And Feel
pane-zen-looks-title = Look And Feel
category-zen-looks =
.tooltiptext = { pane-zen-looks-title }
zen-warning-language = Changing the default language could make it easier for Websites to track you.
zen-look-and-feel-colors-header = Pick a theme colour
zen-look-and-feel-colors-description = Make { -brand-short-name } look and feel the way you like
@@ -48,9 +49,6 @@ pane-zen-theme-title = Theme Settings
zen-look-and-feel-urlbar-header = Awesome Bar Settings
zen-look-and-feel-urlbar-description = Customize the look and feel of the Awesome Bar
zen-look-and-feel-floating-urlbar =
.label = Floating URL Bar when focused
zen-vertical-tabs-title = Sidebar and tabs layout
zen-vertical-tabs-header = Vertical Tabs
zen-vertical-tabs-description = Manage your tabs in a vertical layout
@@ -59,6 +57,12 @@ zen-vertical-tabs-show-expand-button =
zen-vertical-tabs-expand-tabs-by-default =
.label = Expand Tabs by Default
zen-theme-marketplace-header = Theme Store
zen-theme-marketplace-description = Find and install themes from the store.
zen-theme-marketplace-remove-button =
.label = Remove Theme
zen-theme-marketplace-link = Visit Store
pane-zen-CKS-title = Keyboard Shortcuts
category-zen-CKS =
@@ -82,6 +86,8 @@ zen-cks-group-open-page-action = Open Page Actions
zen-cks-group-downloads-action = Downloads Actions
zen-cks-group-sidebar-action = Sidebar Actions
zen-cks-group-compact-mode-action = Compact Mode Actions
zen-cks-group-split-view-action = Split View Actions
zen-cks-group-workspace-action = Workspace Actions
open-new-tab = Open New Tab
close-tab = Close Tab
@@ -146,3 +152,8 @@ zen-toggle-web-panels = Toggle Web Panels
zen-toggle-compact-mode = Toggle Compact Mode
zen-toggle-compact-mode-sidebar = Toggle Compact Mode Sidebar
zen-toggle-compact-mode-toolbar = Toggle Compact Mode Toolbar
zen-change-workspace = Cycle Workspaces
zen-split-view-grid = Split View Grid
zen-split-view-vertical = Split View Vertical
zen-split-view-horizontal = Split View Horizontal
zen-split-view-close = Close Split View

View File

@@ -15,3 +15,7 @@ zen-panel-ui-workspaces-create-cancel =
zen-workspaces-panel-context-delete =
.label = Delete Workspace
.accesskey = D
context-zen-change-workspace-tab =
.label = Change Tab(s) To Workspace
.accesskey = C

View File

@@ -1,27 +1,8 @@
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css
index f2171eb033a1143870f4708c63f565fabb535c4b..a21631e56e74d5d1887554d2752a612887ed20c5 100644
index f2171eb033a1143870f4708c63f565fabb535c4b..4280bc4b0f7cdbd94179fa2111f8001a331ea42b 100644
--- a/browser/themes/shared/browser-shared.css
+++ b/browser/themes/shared/browser-shared.css
@@ -27,6 +27,9 @@
@import url("chrome://browser/skin/UITour.css");
@import url("chrome://browser/skin/formautofill-notification.css");
+@import url("chrome://global/skin/zen-global-shared.css");
+@import url("chrome://browser/skin/zen-browser-shared.css");
+
@namespace html url("http://www.w3.org/1999/xhtml");
:root,
@@ -73,7 +76,7 @@ body {
--short-notification-gradient: #9059FF;
--button-bgcolor: color-mix(in srgb, currentColor 13%, transparent);
- --button-hover-bgcolor: color-mix(in srgb, currentColor 17%, transparent);
+ --button-hover-bgcolor: color-mix(in srgb, currentColor 15%, transparent);
--button-active-bgcolor: color-mix(in srgb, currentColor 30%, transparent);
--button-color: currentColor;
--button-primary-bgcolor: AccentColor;
@@ -179,7 +182,6 @@ body {
@@ -179,7 +179,6 @@ body {
appearance: none;
/* Toolbar / content area border */
@@ -29,7 +10,7 @@ index f2171eb033a1143870f4708c63f565fabb535c4b..a21631e56e74d5d1887554d2752a6128
background-color: var(--toolbox-non-lwt-bgcolor);
color: var(--toolbox-non-lwt-textcolor);
@@ -188,37 +190,13 @@ body {
@@ -188,7 +187,6 @@ body {
transition: background-color var(--inactive-window-transition);
&:-moz-window-inactive {
@@ -37,34 +18,35 @@ index f2171eb033a1143870f4708c63f565fabb535c4b..a21631e56e74d5d1887554d2752a6128
color: var(--toolbox-non-lwt-textcolor-inactive);
}
&[fullscreenShouldAnimate] {
@@ -196,6 +194,31 @@ body {
transition: 0.8s margin-top ease-out;
}
-
- :root[customizing] & {
- border-bottom-style: none;
- }
-
- :root[lwtheme] & {
- background-image: var(--lwt-additional-images);
- background-repeat: var(--lwt-background-tiling);
- background-position: var(--lwt-background-alignment);
- background-color: var(--lwt-accent-color);
- color: inherit;
-
- &:-moz-window-inactive {
- background-color: var(--lwt-accent-color-inactive, var(--lwt-accent-color));
- }
- }
-
- /* When a theme defines both theme_frame and additional_backgrounds, show
- the latter atop the former. */
- :root[lwtheme-image] & {
- background-image: var(--lwt-header-image), var(--lwt-additional-images);
- background-repeat: no-repeat, var(--lwt-background-tiling);
- background-position: right top, var(--lwt-background-alignment);
- }
+
}
.browser-toolbar {
+
+ :root[customizing] & {
+ border-bottom-style: none;
+ }
+
+ :root[lwtheme] & {
+ background-image: var(--lwt-additional-images);
+ background-repeat: var(--lwt-background-tiling);
+ background-position: var(--lwt-background-alignment);
+ background-color: var(--lwt-accent-color);
+ color: inherit;
+
+ &:-moz-window-inactive {
+ background-color: var(--lwt-accent-color-inactive, var(--lwt-accent-color));
+ }
+ }
+
+ /* When a theme defines both theme_frame and additional_backgrounds, show
+ the latter atop the former. */
+ :root[lwtheme-image] & {
+ background-image: var(--lwt-header-image), var(--lwt-additional-images);
+ background-repeat: no-repeat, var(--lwt-background-tiling);
+ background-position: right top, var(--lwt-background-alignment);
+ }
+
:root[customizing] & {
border-bottom-style: none;
}

View File

@@ -49,7 +49,8 @@ groupbox:has(+ .subcategory) {
}
.navigation {
padding: 50px;
padding: 4%;
background: var(--zen-colors-tertiary);
}
groupbox button {
@@ -297,3 +298,33 @@ groupbox h2 {
transform: translate(-50%, -50%);
}
/* THemes marketplace */
.zenThemeMarketplaceItem {
width: 100%;
&:not(:first-of-type), .zenThemeMarketplaceItemPreferences {
margin-top: 15px;
}
}
.zenThemeMarketplaceItemPreferenceCheckbox {
margin-right: 10px;
}
.zenThemeMarketplaceItemPreference:not(:last-of-type) {
margin-bottom: 10px;
}
.zenThemeMarketplaceItemPreferenceData > * {
margin: 0;
}
#zenThemeMarketplaceList:has(> *) {
margin: 15px 0;
}
.zenThemeMarketplaceItemUninstallButton {
margin-left: auto;
}

View File

@@ -1,13 +0,0 @@
diff --git a/browser/themes/shared/sidebar.css b/browser/themes/shared/sidebar.css
index a9b3886e1ff4a36c5bd161985719f66a41d95458..242b3ad30785bed1937d9bf99e8abc7427111541 100644
--- a/browser/themes/shared/sidebar.css
+++ b/browser/themes/shared/sidebar.css
@@ -2,6 +2,8 @@
* 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/. */
+@import url("chrome://browser/skin/zen-sidebar.css");
+
@namespace html url("http://www.w3.org/1999/xhtml");
:root {

View File

@@ -0,0 +1,13 @@
diff --git a/browser/themes/shared/tabbrowser/fullscreen-and-pointerlock.css b/browser/themes/shared/tabbrowser/fullscreen-and-pointerlock.css
index 787e3153e2e07b383445e94aa9e25177eb49c929..c2bbde0458808e7e788f3d8d7b8c8409e6b5afc0 100644
--- a/browser/themes/shared/tabbrowser/fullscreen-and-pointerlock.css
+++ b/browser/themes/shared/tabbrowser/fullscreen-and-pointerlock.css
@@ -7,7 +7,7 @@
:root[inDOMFullscreen] #sidebar-box,
:root[inDOMFullscreen] #sidebar-main,
:root[inDOMFullscreen] #sidebar-splitter,
-:root[inFullscreen]:not([macOSNativeFullscreen]) toolbar:not([fullscreentoolbar=true]),
+:root[inFullscreen]:not([macOSNativeFullscreen]) toolbar:not([fullscreentoolbar=true]):not(#zen-sidebar-icons-wrapper),
:root[inFullscreen] .global-notificationbox {
visibility: collapse;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,51 +0,0 @@
/*
* 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/.
*/
/** Zen Decks - ONLY USED FOR SPLIT VIEWS, DO NOT USE THIS CLASS FOR ANY OTHER PURPOSE **/
#tabbrowser-tabpanels[zen-split-view="true"] {
display: flex;
flex-direction: row;
}
#tabbrowser-tabpanels[zen-split-view="true"] > *:not([zen-split="true"]) {
flex: 0;
margin: 0 !important;
}
#tabbrowser-tabpanels[zen-split-view="true"] > [zen-split="true"] {
flex: 1;
margin-right: 5px !important;
}
#tabbrowser-tabpanels[zen-split-view="true"] > [zen-split-anim="true"] {
animation: zen-deck-fadeIn 0.2s forwards;
}
#tabbrowser-tabpanels[zen-split-view="true"] .browserSidebarContainer[zen-split-active="true"] {
box-shadow: 0 0 0 2px var(--zen-primary-color) !important;
}
#tabbrowser-tabpanels:has(> [zen-split="true"]) {
display: grid;
grid-gap: 0 5px !important;
}
@keyframes zen-deck-fadeIn {
0% {
transform: scale(0.9);
opacity: 0;
}
100% {
transform: scale(1);
opacity: 1;
}
}
#zen-split-views-box:not([hidden="true"]) {
display: flex !important;
}

View File

@@ -45,6 +45,10 @@
--menu-image: url("sidebars-right.svg") !important;
}
#context-zen-change-workspace-tab {
--menu-image: url("move-tab.svg") !important;
}
#context-zenSplitLink {
--menu-image: url("link.svg") !important;
}

View File

@@ -1,395 +0,0 @@
/*
* 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/.
*/
#PanelUI-zen-profiles {
--menu-panel-width: 19em;
position: relative;
padding-bottom: 5px;
}
#PanelUI-zen-profiles-header {
width: 280px;
height: 130px;
background: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%);
position: relative;
}
#PanelUI-zen-profiles-user-picture {
background-image: var(--avatar-image-url);
width: 75px;
height: 75px;
border: 4px var(--arrowpanel-background) solid;
background-color: var(--zen-colors-primary-foreground);
border-radius: 50%;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
margin: 0 auto;
transform: translateY(100%);
}
.PanelUI-zen-profiles-item {
position: relative;
display: flex;
padding: 6px 10px;
font: menu;
align-items: center;
}
#PanelUI-zen-profiles-list .PanelUI-zen-profiles-item {
margin-bottom: 2px;
border-radius: 5px;
margin: 2px 5px;
}
#PanelUI-zen-profiles-list > toolbarseparator:first-child {
margin: 5px;
}
.PanelUI-zen-profiles-item:hover {
background: var(--panel-item-hover-bgcolor);
color: inherit;
}
.PanelUI-zen-profiles-item::after {
content: '';
background-image: url("chrome://global/skin/icons/arrow-right.svg");
background-size: 1em;
background-repeat: no-repeat;
background-position: center;
width: 1em;
height: 1em;
margin-left: auto;
pointer-events: none;
top: 50%;
right: 1em;
transform: translateY(-50%);
position: absolute;
}
@media (prefers-color-scheme: dark) {
.PanelUI-zen-profiles-item::after {
filter: invert(1);
}
}
#PanelUI-zen-profiles-list .PanelUI-zen-profiles-item-avatar {
width: 20px;
height: 20px;
border-radius: 5px;
margin: 1px 0.5em 1px 1px;
}
#PanelUI-zen-profiles-list .PanelUI-zen-profiles-item-name {
font-weight: normal;
font-size: 15px;
margin-left: 5px;
}
#PanelUI-zen-profiles-current-info {
--zen-separation-from-content: 35px;
margin-top: calc(var(--zen-separation-from-content) + 30px); /** Ignore the profile picture */
}
#PanelUI-zen-profiles-current-name {
font-size: 1.3em;
font-weight: 600;
line-height: 0.5;
padding: 5px 10px;
border-radius: 5px;
margin: 0 auto;
}
#PanelUI-zen-profiles toolbarbutton::after {
display: none;
}
#PanelUI-zen-profiles toolbarbutton {
padding-left: 16px;
padding-right: 16px;
}
#PanelUI-zen-profiles toolbarbutton:last-child {
margin-bottom: 5px !important;
}
#PanelUI-zen-profiles-current-profile-current {
font-size: 13px;
opacity: 0.5;
margin: 0 auto var(--zen-separation-from-content) auto;
font-size: 15px;
font-weight: 600;
}
#PanelUI-zen-profiles-actions {
color-scheme: dark;
position: absolute;
top: 10px;
right: 10px;
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-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;
}
/* Split view panel */
#zenSplitViewModifierViewDefault {
min-width: 180px;
min-height: 180px;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 10px;
padding: 15px;
}
#zenSplitViewModifierViewDefault > vbox {
display: flex;
align-items: center;
flex-direction: column;
cursor: pointer;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview {
border-radius: 5px;
border: 1px solid var(--zen-colors-border);
width: 100px;
height: 70px;
overflow: hidden;
padding: 5px;
user-select: none;
font-weight: 500;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.active {
box-shadow: 0 0 0 2px var(--zen-primary-color);
border-width: 0px;
}
#zenSplitViewModifierViewDefault p {
margin-top: 5px;
margin-bottom: 0;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview box {
background-color: var(--zen-colors-secondary);
border-radius: 3px;
width: 100%;
height: 100%;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.hsep {
display: flex;
flex-direction: column;
justify-content: space-between;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.hsep box:last-child {
margin-top: 5px;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.vsep box:last-child {
margin-left: 5px;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid {
display: grid;
grid-template-areas: "a b" "c b";
gap: 5px;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid box:nth-child(1) {
grid-area: a;
}
#zenSplitViewModifierViewDefault .zen-split-view-modifier-preview.grid box:nth-child(2) {
grid-area: b;
}
#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;
}
#PanelUI-zen-workspaces {
--panel-width: 320px;
--panel-padding: 0;
}
#PanelUI-zen-workspaces > panelmultiview {
align-items: flex-start;
}
#PanelUI-zen-workspaces panelmultiview panelview {
position: relative;
padding: 15px;
width: var(--panel-width);
min-height: 150px;
}
#PanelUI-zen-workspaces-create-input {
margin-top: 10px;
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton {
width: 30px;
height: 30px;
display: flex;
justify-content: center;
align-items: center;
border: 2px solid transparent;
border-radius: 7px;
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton[selected="true"] {
border-color: var(--zen-colors-secondary);
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-icon {
display: none;
}
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-text {
min-width: unset;
}
#PanelUI-zen-workspaces-create-icons-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(30px, 1fr));
gap: 8px;
}
#PanelUI-zen-workspaces-list {
display: flex;
flex-direction: column;
}
#PanelUI-zen-workspaces-list[empty="true"] {
font-weight: 600;
padding: 10px;
width: 100%;
text-align: start;
opacity: 0.5;
}
#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%;
}

View File

@@ -1,8 +1,3 @@
skin/classic/browser/zen-browser-shared.css (../shared/zen-browser-shared.css)
skin/classic/browser/zen-sidebar.css (../shared/zen-sidebar.css)
skin/classic/browser/zen-panel-ui.css (../shared/zen-panel-ui.css)
skin/classic/browser/zen-sidebar-panels.css (../shared/zen-sidebar-panels.css)
skin/classic/browser/preferences/zen-preferences.css (../shared/preferences/zen-preferences.css)
skin/classic/browser/zen-decks.css (../shared/zen-decks.css)
#include zen-icons/jar.inc.mn

View File

@@ -0,0 +1,13 @@
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
index b5cbdd7d226e4b7c8909688b05763db74f0b87fb..b5247cd4f43a906f72f34169775531e2266cb215 100644
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -47,7 +47,7 @@
}
&[sizemode="normal"] #navigator-toolbox {
- border-top: .5px solid ActiveBorder;
+ /* border-top: .5px solid ActiveBorder; Zen: Remove annoying top border, dont remove */
&:-moz-window-inactive {
border-top-color: InactiveBorder;
}

View File

@@ -0,0 +1,41 @@
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
index e65533af04ea5f42c10477314c594c2c7bbc67b3..df4d63dafb838b67e64a91f26487106a77494516 100644
--- a/dom/script/ScriptLoader.cpp
+++ b/dom/script/ScriptLoader.cpp
@@ -2401,6 +2401,36 @@ void ScriptLoader::CalculateBytecodeCacheFlag(ScriptLoadRequest* aRequest) {
hasFetchCountMin = false;
break;
}
+ case 1: {
+ // 1!
+ hasSourceLengthMin = true;
+ hasFetchCountMin = true;
+ sourceLengthMin = 1024;
+ // If we were to optimize only for speed, without considering the impact
+ // on memory, we should set this threshold to 2. (Bug 900784 comment 120)
+ fetchCountMin = 1;
+ break;
+ }
+ case 2: {
+ // 2!
+ hasSourceLengthMin = true;
+ hasFetchCountMin = true;
+ sourceLengthMin = 1024;
+ // If we were to optimize only for speed, without considering the impact
+ // on memory, we should set this threshold to 2. (Bug 900784 comment 120)
+ fetchCountMin = 2;
+ break;
+ }
+ case 3: {
+ // 3!
+ hasSourceLengthMin = true;
+ hasFetchCountMin = true;
+ sourceLengthMin = 1024;
+ // If we were to optimize only for speed, without considering the impact
+ // on memory, we should set this threshold to 2. (Bug 900784 comment 120)
+ fetchCountMin = 3;
+ break;
+ }
default:
case 0: {
hasSourceLengthMin = true;

View File

@@ -1,12 +0,0 @@
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
index 8b18c945253d00603891cc5f0b989476318e219c..c5368eec8d9a760c19a827fe7a4b9afb4b702976 100644
--- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn
@@ -143,3 +143,7 @@ toolkit.jar:
# Third party files
content/global/third_party/d3/d3.js (/third_party/js/d3/d3.js)
content/global/third_party/cfworker/json-schema.js (/third_party/js/cfworker/json-schema.js)
+
+# Zen modules
+ content/global/zen-xul.css
+ content/global/zen-fullscreen-override.css

View File

@@ -1,17 +1,8 @@
diff --git a/toolkit/content/xul.css b/toolkit/content/xul.css
index 908132d598083dd43ee62940f4bac84e49238c92..eb7edf3870032fe796b3fa676de96e1dbb5eea85 100644
index 26c11188d3edcc9806fab7144aa0e22540a32a57..df3dbca06ede3eda1854febe314c38779f754c03 100644
--- a/toolkit/content/xul.css
+++ b/toolkit/content/xul.css
@@ -12,6 +12,8 @@
* browser.css.
*/
+@import url("chrome://global/content/zen-xul.css");
+
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */
@namespace html url("http://www.w3.org/1999/xhtml"); /* namespace for HTML elements */
@@ -485,7 +487,8 @@ deck > *|*:not(:-moz-native-anonymous) {
@@ -485,7 +485,8 @@ deck > *|*:not(:-moz-native-anonymous) {
}
tabpanels > .deck-selected,

View File

@@ -1,16 +0,0 @@
/*
* 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/.
*/
[inDOMFullscreen="true"] #nav-bar,
[inDOMFullscreen="true"] #zen-sidebar-web-panel {
display: none !important;
}
[inDOMFullscreen="true"] #appcontent {
margin: 0 !important;
border-radius: 0 !important;
}

View File

@@ -1,85 +0,0 @@
/*
* 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/.
*/
@import url("zen-fullscreen-override.css");
:root {
--zen-main-browser-background: light-dark(white, #1b1b1b);
--zen-appcontent-border: 1px solid var(--zen-colors-border);
--zen-browser-border-radius: var(--zen-panel-radius);
}
toolbox#navigator-toolbox,
#browser {
background: transparent !important;
}
#browser {
width: 100%;
}
html#main-window > body {
background: var(--zen-main-browser-background) !important;
}
:not([inDOMFullscreen="true"]) #appcontent {
overflow: hidden;
}
#appcontent {
background: var(--toolbar-bgcolor);
}
:not([inDOMFullscreen="true"]) #appcontent,
#sidebar-box {
/** Sidebar is already hidden in full screen mode */
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
border: none;
}
panel[type="arrow"][animate][animate="open"] {
animation: zen-jello-animation 0.2s ease-in-out;
}
panel[type="arrow"][animate][animate="cancel"] {
animation: zen-jello-out-animation 0.2s ease-in-out;
}
@keyframes zen-jello-animation {
0% {
transform: scale3d(0.8, 0.8, 0.8);
}
60% {
transform: scale3d(1.02, 1.02, 1.02);
}
to {
opacity: 1;
transform: scale3d(1, 1, 1);
}
}
@keyframes zen-jello-out-animation {
0% {
transform: scale3d(1, 1, 1);
}
60% {
transform: scale3d(1.02, 1.02, 1.02);
}
99% {
opacity: 0;
transform: scale3d(0.8, 0.8, 0.8);
}
100% {
-moz-window-transform: none;
transform: none;
}
}

View File

@@ -0,0 +1,25 @@
diff --git a/toolkit/modules/ActorManagerParent.sys.mjs b/toolkit/modules/ActorManagerParent.sys.mjs
index 71409e58271802fc506999712519df63eff3b1a6..a136eb21a8abf1697b820ae4ab85224c56b725ec 100644
--- a/toolkit/modules/ActorManagerParent.sys.mjs
+++ b/toolkit/modules/ActorManagerParent.sys.mjs
@@ -666,6 +666,20 @@ if (!Services.prefs.getBoolPref("browser.pagedata.enabled", false)) {
};
}
+JSWINDOWACTORS.ZenThemeMarketplace = {
+ parent: {
+ esModuleURI: "chrome://browser/content/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs",
+ },
+ child: {
+ esModuleURI: "chrome://browser/content/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs",
+ events: {
+ DOMContentLoaded: {},
+ },
+ },
+ matches: ["https://*.zen-browser.app/*"],
+ allFrames: true,
+};
+
if (AppConstants.platform != "android") {
// Note that GeckoView has another implementation in mobile/android/actors.
JSWINDOWACTORS.Select = {

View File

@@ -1,11 +0,0 @@
diff --git a/toolkit/themes/shared/desktop-jar.inc.mn b/toolkit/themes/shared/desktop-jar.inc.mn
index 5907a9773fe608520b0088c1fc40c23a7003530f..535a7fae17f295a3bc97cf807d9c9dd496ec2352 100644
--- a/toolkit/themes/shared/desktop-jar.inc.mn
+++ b/toolkit/themes/shared/desktop-jar.inc.mn
@@ -162,3 +162,5 @@
skin/classic/global/reader/content-width-20.svg (../../shared/reader/content-width-20.svg)
skin/classic/global/tree/sort-asc.svg (../../shared/tree/sort-asc.svg)
skin/classic/global/tree/sort-dsc.svg (../../shared/tree/sort-dsc.svg)
+
+#include zen-desktop.jar.inc.mn
\ No newline at end of file

View File

@@ -1,12 +1,12 @@
diff --git a/toolkit/themes/shared/in-content/common-shared.css b/toolkit/themes/shared/in-content/common-shared.css
index 2b59a0604b4bfefd3bdcfdb9a3964937e9699114..92705331fa12d88e9091310c1f527562931e7132 100644
index 2b59a0604b4bfefd3bdcfdb9a3964937e9699114..d9f5f81158790336c7fa5ad366fd815abfe67087 100644
--- a/toolkit/themes/shared/in-content/common-shared.css
+++ b/toolkit/themes/shared/in-content/common-shared.css
@@ -5,6 +5,8 @@
@import url("chrome://global/skin/design-system/tokens-brand.css");
@import url("chrome://global/skin/design-system/text-and-typography.css");
+@import url("chrome://global/skin/in-content/zen-common-shared.css");
+@import url("chrome://browser/content/zen-styles/zen-theme.css");
+
@namespace html "http://www.w3.org/1999/xhtml";
@namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

View File

@@ -1,39 +1,8 @@
diff --git a/toolkit/themes/shared/popup.css b/toolkit/themes/shared/popup.css
index ed230860215c734e6fb903b3660d0c679043e3f3..348436a56cecdf101da66cdec9d64f1bb851ba4d 100644
index ed230860215c734e6fb903b3660d0c679043e3f3..1e54e023c930db04a532b2b125f44e73912f63ad 100644
--- a/toolkit/themes/shared/popup.css
+++ b/toolkit/themes/shared/popup.css
@@ -2,6 +2,8 @@
* 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/. */
+@import url("zen-popup.css");
+
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: menupopup ::::: */
@@ -13,16 +15,16 @@ panel {
color-scheme: light dark;
min-width: 1px;
- --panel-background: Menu;
+ --panel-background: var(--arrowpanel-background);
--panel-color: MenuText;
--panel-padding-block: 4px;
- --panel-padding: var(--panel-padding-block) 0;
- --panel-border-radius: 4px;
- --panel-border-color: ThreeDShadow;
+ --panel-padding: var(--panel-padding-block) 0 5px 0;
+ --panel-border-radius: 10px;
+ --panel-border-color: transparent /* var(--arrowpanel-border-color) */ !important;
--panel-width: initial;
--panel-shadow-margin: 0px;
- --panel-shadow: 0 0 var(--panel-shadow-margin) hsla(0,0%,0%,.2);
+ --panel-shadow: rgba(0, 0, 0, 0.05) 0px 4px 10px;
-moz-window-input-region-margin: var(--panel-shadow-margin);
margin: calc(-1 * var(--panel-shadow-margin));
@@ -30,8 +32,6 @@ panel {
@@ -30,8 +30,6 @@ panel {
--background-color-canvas: var(--panel-background);
@media (-moz-platform: linux) {
@@ -42,7 +11,7 @@ index ed230860215c734e6fb903b3660d0c679043e3f3..348436a56cecdf101da66cdec9d64f1b
@media (prefers-contrast) {
--panel-border-color: color-mix(in srgb, currentColor 60%, transparent);
@@ -43,18 +43,7 @@ panel {
@@ -43,18 +41,7 @@ panel {
--panel-shadow-margin: 4px;
}
@@ -62,7 +31,7 @@ index ed230860215c734e6fb903b3660d0c679043e3f3..348436a56cecdf101da66cdec9d64f1b
&::part(content) {
display: flex;
@@ -193,6 +182,6 @@ panel[type="arrow"] {
@@ -193,6 +180,6 @@ panel[type="arrow"] {
}
&[animating] {

View File

@@ -1,5 +0,0 @@
skin/classic/global/in-content/zen-common-shared.css (../../shared/in-content/zen-common-shared.css)
skin/classic/global/zen-global-shared.css (../../shared/zen-global-shared.css)
skin/classic/global/zen-popup.css (../../shared/zen-popup.css)
skin/classic/global/in-content/zen-common-shared-ui-override.css (../../shared/in-content/zen-common-shared-ui-override.css)

View File

@@ -1,26 +0,0 @@
/*
* 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/.
*/
@import url("./in-content/zen-common-shared.css");
:root {
--zen-panel-radius: 9px;
--arrowpanel-background: var(--zen-dialog-background) !important;
--arrowpanel-border-color: var(--zen-dialog-border-color) !important;
--arrowpanel-border-radius: var(--zen-panel-radius) !important;
&:-moz-lwtheme {
color: var(--lwt-text-color);
--link-color: light-dark(rgb(0, 97, 224), rgb(0, 221, 255));
}
}
@media (prefers-color-scheme: dark) {
:root {
--zen-dialog-border-color: rgba(255,255,255,.1);
}
}

View File

@@ -5,7 +5,7 @@
"binaryName": "zen",
"version": {
"product": "firefox",
"version": "129.0"
"version": "129.0.1"
},
"buildOptions": {
"generateBranding": true
@@ -27,7 +27,7 @@
"brandShortName": "Zen Browser",
"brandFullName": "Zen Browser",
"release": {
"displayVersion": "1.0.0-a.16",
"displayVersion": "1.0.0-a.22",
"github": {
"repo": "zen-browser/desktop"
},