A lightweight, unofficial WhatsApp Web client for Linux
Built with Electron — focused on performance, security, and native desktop integration.
| Feature | Description |
|---|---|
| System Tray | Minimize to tray instead of quitting. Click the tray icon to show or hide the window. |
| Unread Badge | Unread message count in the tray tooltip and app badge. |
| Notifications | Native Linux notifications with sound when new messages arrive (window hidden or unfocused). |
| Window State | Remembers size, position, and maximized state across sessions. |
| Single Instance | Prevents multiple instances; re-focuses the existing window instead. |
| External Links | Links outside WhatsApp Web open in your default browser. |
| Keyboard Shortcuts | Built-in shortcuts with no menu bar clutter (see table below). |
| Security | Runs with nodeIntegration disabled, contextIsolation enabled, and a sandboxed renderer. Only WhatsApp Web URLs are permitted; media and notification permissions are whitelisted. |
| Shortcut | Action |
|---|---|
Ctrl+Q |
Quit |
Ctrl+R |
Reload |
Ctrl+Shift+R |
Hard reload (ignore cache) |
Ctrl+Shift+I |
Toggle DevTools |
Ctrl+= / Ctrl++ |
Zoom in |
Ctrl+- |
Zoom out |
Ctrl+0 |
Reset zoom |
- Node.js (v18 or later recommended)
- npm (included with Node.js)
Clone the repo and run the install script. It will install dependencies, build the AppImage, copy it to ~/.local/bin/, and create a .desktop entry so Wave appears in your application launcher.
git clone https://github.com/srijxnnn/wave.git
cd wave
chmod +x install.sh
./install.shgit clone https://github.com/srijxnnn/wave.git
cd wave
npm install
npm run buildCopy the AppImage from dist/ to your preferred location and run it.
Run in development:
npm startBuild an AppImage:
npm run buildThe packaged AppImage is written to the dist/ directory.
Run the uninstall script to remove the AppImage and desktop entry:
chmod +x uninstall.sh
./uninstall.shYou will be prompted whether to also remove user data in ~/.config/Wave.
wave/
├── assets/
│ └── icon.png # App icon
├── main.js # Electron main process
├── package.json
└── README.md
Srijan Dhak · GitHub