An unofficial, community-driven port of the Zalo desktop application for Linux only, created by repackaging the official macOS client into a standard AppImage with integrated ZaDark.
Thanks realdtn2 for the solution: realdtn2/zalo-linux-2026.
- ➖ Partly-fixed: Can't make or receive calls: Thanks to @collyn for setting up a Wine wrapper to solve this. See PR #62 for more info, but currently calling is not available on aarch64, because Windows
zcallonly supports x86_64. - System/Auto Theme not working: The app does not follow the system's dark/light mode. Both ZaDark and Zalo ignore
prefers-color-scheme. See issue #22.
💡 For the full list of resolved issues, workarounds, and community credits, see KNOWN_ISSUES.md.
This project is best suited for users who need a native-feeling Zalo client on Linux and are comfortable with the technical workarounds required for full functionality.
🙈 Start hidden in the tray
When Settings → Launch Zalo on startup is enabled, Zalo starts minimized
to the system tray at login. The autostart entry it writes to
~/.config/autostart/ launches it with --hidden. If you enabled the setting
with an older build, turn it off and on again to update the entry.
You can also pass the flag yourself (--start-hidden works too):
/path/to/Zalo.AppImage --hiddenOpen the window from the tray icon, by clicking a notification, or by launching Zalo again. If no system tray is available, the flag is ignored so the window is never unreachable.
Open Settings → Userscripts manager to create, paste, edit, import, delete,
and enable or disable scripts that run inside Zalo. Tampermonkey-style metadata
such as @name, @description, @version, @match, @include, and
@exclude is recognized. Imported scripts may use the .js or .user.js
extension.
The compatibility layer currently provides GM_info, GM_addStyle,
GM_getValue, GM_setValue, GM_deleteValue, GM_listValues, and
unsafeWindow. Changes take effect the next time the Zalo page is loaded.
Security: Userscripts execute with access to the current Zalo page and messages displayed in it. Only install scripts whose source you trust.
This project includes integrated ZaDark, ZaDark is an extension that helps you enable Dark Mode, more privacy features, and additional functionality.
ZaDark helps you experience Zalo 🔒 more privately ✨ more personalized.
- 🌙 Dark Mode optimized specifically for Zalo - Complete dark theme tailored for Zalo interface
- 🆃 Customize fonts and font sizes - Personalize text appearance to your preference
- 🖼️ Custom chat backgrounds - Set personalized backgrounds for conversations
- 🔤 Quick message translation - Instantly translate messages to your preferred language
- 😊 Express emotions with 80+ Emojis - Enhanced emoji reactions for messages
- 🔒 Anti-message peeking protection - Prevent others from secretly viewing your messages
- 👁️ Hide status indicators - Hide "typing", "delivered" and "read" status from others
- 📱 Native Integration - Seamlessly integrated during build process
Note: ZaDark is licensed under MPL-2.0 and is developed by Quaric. The setup process automatically prepares ZaDark, and build process integrates it seamlessly!
We strongly recommend using Gear Lever to integrate the AppImage perfectly into your system menu.
Note: Zalo for Linux comes with a built-in updater. Whenever a new release is available, you will be prompted within the Zalo app to download and apply the update seamlessly without leaving the application.
- Download the latest
.AppImagefile from the Releases page. - Install Gear Lever from Flathub.
- Open Gear Lever.
- Click the "Open" button in the top-left corner and select the
.AppImagefile you downloaded. - The app will now appear in Gear Lever. Click the "Unlock" button, then choose "Move to the app menu" to integrate it into your system's application launcher.
Prerequisites:
- Linux x86_64 or aarch64
- Node.js and npm
- 7z (p7zip-full) for extracting the macOS app during setup
- C++ build tools (for native addons):
build-essential,libssl-dev,liblzma-dev zcallbuild tools:gcc-mingw-w64-i686gcc-multiliblibc6-dev-i386libx11-devlibxcb1-devlibx11-dev:i386libxcb1-dev:i386libxext-dev:i386
On Debian/Ubuntu:
sudo dpkg --add-architecture i386
sudo apt update && sudo apt install -y liblzma-dev p7zip-full gcc-mingw-w64-i686 gcc gcc-multilib libc6-dev-i386 libx11-dev libxcb1-dev libx11-dev:i386 libxcb1-dev:i386 libxext-dev:i386 zsyncSteps:
# Clone the repository
git clone https://github.com/doandat943/zalo-for-linux.git
cd zalo-for-linux
# Then initialize or update submodules
git submodule update --init --recursive
# Run setup + build (downloads DMG, extracts, patches, packages)
npm run mainThe final AppImage will be in the dist/ directory.
For a detailed walkthrough of the build pipeline, scripts, environment variables, and how to add new patches, see DEVELOPMENT.md.
This project is not a from-scratch rewrite of Zalo. It works by:
- Downloading the official macOS
.dmgfile. - Using
7zto extract theapp.asararchive, which contains the main application logic written in JavaScript. - Removing incompatible native macOS files.
- Wrapping the extracted application in a minimal, Linux-compatible Electron shell.
- Using
electron-builder, thenquick-sharunto package everything into a single, portableAppImagefile.
For a deeper dive into the build pipeline and patching strategy, see ARCHITECTURE.md.
For native addons (db-cross-v4, etc.), see
nativelibs/README.md.
For the zcall bridge, see
If you encounter issues or want to inspect the app's behavior, you can easily open Chrome Developer Tools (DevTools) using the following methods:
- Keyboard Shortcut: Press
Ctrl+Shift+Iwhile the Zalo window is focused. - Tray Menu: Right-click the Zalo tray icon and select "Toggle DevTools".
- KNOWN_ISSUES.md — Known issues, workarounds, and resolved bug history
- ARCHITECTURE.md — How the build pipeline and patches work
- DEVELOPMENT.md — Building from source, scripts, adding patches
- nativelibs/README.md — Native addons (db-cross-v4, etc.)
- zcall-bridge/README.md —
zcallbridge
This project is licensed under the MIT License. Zalo is a trademark of VNG Corporation. This project is not affiliated with or endorsed by VNG Corporation.