On macOS, Zen Browser's beautiful transparency/vibrancy effect only works when the window is focused. When you switch to another app, the transparency disappears and the window becomes opaque gray.
This Frida script hooks into macOS's window management to make Zen Browser think it's always focused, keeping the transparency effect active at all times.
| Requirement | Details |
|---|---|
| 💻 macOS | 14.0+ (may work on earlier versions) |
| 🔓 SIP | Must be disabled (required for Frida) |
| 🌐 Zen Browser | Latest version installed |
| 🐍 Python | For Frida installation |
Before installing the patch, you must configure Zen Browser settings:
- Open Zen Browser
- Navigate to
about:configin the address bar - Set the following preferences:
browser.tabs.allow_transparent_browser→truezen.view.grey-out-inactive-windows→false
⚠️ Important: These settings are required for the transparency patch to work correctly.
The following Zen Browser extensions must be installed and configured:
- 🎨 Transparent Zen extension
- 🌐 Zen Internet extension
⚠️ Important: Both extensions are required for the transparency patch to function properly.
- Restart your Mac and hold
Command + Rto enter Recovery Mode - Open Utilities > Terminal
- Run:
csrutil disable - Restart your Mac
⚠️ Warning: Disabling SIP reduces system security. Re-enable after use if needed.
pip3 install frida-toolsgit clone https://github.com/hmmhmmhm/zen-transparency-patch.git
cd zen-transparency-patch
sudo ./install-daemon.shThe installer will:
- ✅ Automatically detect your Frida installation path
- ✅ Set up automatic patching when Zen Browser launches
- ✅ Start the daemon immediately
Open Zen Browser and enjoy the always-transparent vibrancy!
tail -f ~/zen-transparency-patch/patch.log# Start Zen Browser first, then:
sudo $(which frida) -n zen -l zen-transparency.jsThe script hooks into these macOS methods:
| Method | Effect |
|---|---|
NSWindow.isKeyWindow |
Returns true always |
NSWindow.isMainWindow |
Returns true always |
_hasKeyAppearance |
Forces key appearance (private API) |
_hasMainAppearance |
Forces main appearance (private API) |
_shouldRenderAsActive |
Always renders as active (private API) |
This tricks NSVisualEffectView into rendering as if the window is always active, maintaining the beautiful transparency effect.
cd ~/zen-transparency-patch
sudo ./uninstall-daemon.shTo re-enable SIP:
- Restart in Recovery Mode (
Command + R) - Run:
csrutil enable - Restart
SIP is not disabled. Check with:
csrutil status
# Should show: disabledMake sure Frida is installed:
pip3 install frida-toolsCheck the logs:
cat ~/zen-transparency-patch/patch.log
cat ~/zen-transparency-patch/daemon-err.logMIT License - see LICENSE for details.
- 🤖 Created with assistance from Claude (Anthropic)
- 🔧 Uses Frida for dynamic instrumentation
- 🌐 Made for Zen Browser
