ZapZap β WhatsApp Desktop for Linux
ZapZap brings the WhatsApp experience on Linux closer to that of a native application.
Since Meta does not provide a public API for third-party applications, ZapZap is developed as a Progressive Web Application (PWA), built with PyQt6 + PyQt6-WebEngine.
π About notifications and icons on Flatpak: See docs/notifications.md
π Technical documentation: See docs/technical-documentation.md
ZapZap extends WhatsApp Web with additional features:
- Adaptive light and dark mode
- Fullscreen mode
- Custom window decorations
- Interface scaling adjustment (ideal for 2K/4K screens)
- Keyboard shortcuts for main options
- Adaptive system tray icon (notifies new messages)
- Background process support
- Drag-and-drop functionality
- Ability to select a custom folder for downloads
- Temporary folder for opening files
- Spellchecker with language selection via context menu
- Customizable system tray icons
- Option to choose a folder for custom dictionaries
- Setting to disable the native file selection dialog (Hyprland)
- Custom CSS/JS with global + per-account override
- Reorganized Settings Panel
- Added Performance section
- New Customizations page in Settings
- Supports Global customization and Current account customization
- Account mode supports inherit global settings + optional override
- Users can:
- import
.cssand.jsfiles - create and edit CSS/JavaScript files in dialogs
- enable/disable each imported CSS/JS file independently
- import CSS/JavaScript from any
https://URL - open customization folders directly
- import
- Supports many userstyle files (
.user.css) by extracting WhatsApp-targeted@-moz-documentblocks - Page actions:
Save,Save and reload,Reload
Customization files are stored in the app local data path under:
customizations/global/csscustomizations/global/jscustomizations/accounts/<id>/csscustomizations/accounts/<id>/js
Reserved for future extension support:
customizations/extensions
To enable file uploads (documents, images, videos, audio, etc.) in WhatsApp Web, ZapZap requires access to the userβs folders.
This is due to technical limitations of QtWebEngine (Chromium) in modern environments such as Wayland and sandboxed applications (for example, Flatpak).
Under these conditions, the embedded browser cannot upload files correctly without direct access to the filesystem.
- Without filesystem access:
- file uploads may fail
- files may be sent with no content
- With the required permissions granted:
- file uploads work correctly
- the experience matches that of a regular web browser
When running in a sandboxed environment (such as Flatpak), it is recommended to grant access to at least:
DocumentsVideosPicturesDownloads
These permissions are used only to allow the user to select and upload files and are not used for automatic file scanning, indexing, or data collection.
If ZapZap was installed via Flatpak, you can manage filesystem permissions using Flatseal (a graphical permission manager for Flatpak apps):
π https://flathub.org/apps/com.github.tchx84.Flatseal
Steps:
- Install and open Flatseal
- Select ZapZap from the application list
- Enable access to the recommended folders (
Documents,Videos,Pictures,Downloads) - Restart ZapZap
Optional terminal alternative:
flatpak override --user --filesystem=home com.rtosta.zapzapAfter adjusting these permissions, file uploads, opening PDFs, and drag-and-drop should work normally.
- Python 3.9 or higher
If pip install -r requirements.txt fails due to dbus-python:
sudo dnf install -y dbus-devel pkg-config gcc python3-develThen:
pip install -r requirements.txtpython run.py [dev|preview|build] [options]Without translations:
python run.py devWith translations:
python run.py dev --build-translations- Open DevTools for current account page:
View -> Open DevTools(Ctrl+Shift+I)
Flatpak:
python run.py preview --flatpakAppImage:
python run.py preview --appimageWith translations:
python run.py preview --build-translations --flatpak python run.py build --appimage <version>Example:
python run.py build --appimage 6.0python run.py build --flatpak-onefileOutput:
dist/com.rtosta.zapzap.flatpak
pip install .pip uninstall zapzapuv tool install . --with-requirements requirements.txtZapZap supports translations. If your language file is missing from the po folder, submit a pull request or open an issue.
Contributions are welcome! Please submit a pull request with any improvements or changes you wish to propose.
This project is licensed under the GPL. See the LICENSE file for more information.
PayPal: Donate via PayPal
Pix: Donate via Pix
Ko-fi: Donate via Ko-fi
Maintainer: Rafael Tosta
Email: rafa.ecomp@gmail.com
