Patches Zen Browser on macOS to disable the dock download progress indicator, preserving the Tahoe "Clear" icon style.
Developed for personal use: I'm putting this up in case it helps others with this tiny nagging detail, but I'm not a professional developer so use this at your own risk.
On macOS Tahoe (26), System Settings lets you choose a "Clear" (monochrome/transparent) icon style. Zen's dock icon renders correctly in Clear style, until you download a file. Firefox's nsMacDockSupport replaces the OS-managed dock tile with a custom NSView containing a static bitmap and a progress bar. macOS can't apply Clear styling to this bitmap, so the icon reverts to full colour and stays that way until you restart the Dock.
There's no about:config preference to disable this. The progress indicator is registered unconditionally in DownloadsTaskbar.sys.mjs.
This also affects stock Firefox (tracked as Bug 1997246).
The script patches omni.ja (the main resource archive in Zen's app bundle) to skip the macOS dock progress registration. It does a same-size byte replacement directly in the archive and updates the ZIP CRC checksums. Downloads still work normally - only the dock progress bar is suppressed.
Requires Python 3.6+ (ships with macOS).
Important: Open Zen at least once before running the patch. macOS needs to approve the app through Gatekeeper first. If you patch a fresh download before opening it, macOS will flag it as "damaged" and refuse to launch it.
Quit Zen, then paste this into Terminal:
curl -sL https://raw.githubusercontent.com/baton-noir/zen-dock-patch/main/patch.py | python3 -Or if you prefer to clone first:
git clone https://github.com/baton-noir/zen-dock-patch.git
cd zen-dock-patch
python3 patch.pyOther commands (run from inside the cloned repo):
python3 patch.py status # check current patch status
python3 patch.py restore # restore original omni.ja from backup
python3 patch.py --dry-run # preview without making changes
python3 patch.py --verbose # show technical detailsOn first run, macOS will ask to allow Terminal to modify apps. Click the notification and enable it in System Settings > Privacy & Security, then re-run the command.
The script will:
- Check that Zen has been opened before (Gatekeeper-approved) and is not running
- Back up the original
omni.ja(first run only) - Apply the patch and verify it was written correctly
- Re-sign the app bundle so macOS doesn't flag it as damaged
- Clear the startup cache automatically
You need to re-run this after every Zen update, since updates replace omni.ja.
Backups are stored in ~/Library/Application Support/zen-dock-patch/ with the Zen version and a hash prefix in the filename (e.g. omni-1.19.3b-4887abe5.ja). Use patch.py status to list them and patch.py restore to roll back.