WhatsApp on Linux as a desktop app
WhatsApp's download page offers apps for Mac and Windows and lists none for Linux, so on Linux the usual route is WhatsApp Web in a browser tab. Pake CLI can wrap web.whatsapp.com in a window of its own with a tray icon and desktop alerts: one build command, then you link it to your phone by QR code. It is the same web client as in a browser, running on the system WebKitGTK, so you test it before relying on it.
What WhatsApp offers
On WhatsApp's desktop download page, WhatsApp Desktop is listed for 64-bit Windows 10 version 1903 or later and for macOS 11 or later. For every other system the page points to WhatsApp Web in a browser, so on Linux web.whatsapp.com is the way in. Check the page again before building, in case that has changed.
WhatsApp Web links to your phone rather than replacing it. You open the site, scan the QR code from the phone's linked devices screen, and the phone's account appears in the browser. Working in a browser does not guarantee the same behavior in Pake's embedded WebKitGTK view. Check the functions you need before relying on the app.
When a Pake window makes sense
A browser tab is fine until you want WhatsApp to behave like an app: its own entry in the launcher, a place in the alt-tab list, a tray icon, and alerts that arrive while the window is closed. Pake gives you those. It does not add anything WhatsApp's own apps have. It is a web view onto the web client, so features that exist only in the Mac and Windows apps stay out of reach, and a feature the web client lacks is lacking here too. If a browser's installed-app feature already covers you, that works as well.
What you need
Pake CLI needs Node.js 20.9 or later, Rust 1.85 or later and your distribution's WebKitGTK development packages. The CLI FAQ lists them, including libwebkit2gtk-4.1-dev and libayatana-appindicator3-dev, and without the appindicator one the build stops with "Can't detect any appindicator library". The getting started guide covers the rest. The ChatGPT and Claude on Linux guide walks through the same build and package formats in more detail, so this post sticks to what is specific to WhatsApp.
Build it
npm install -g pake-cli
pake https://web.whatsapp.com --name WhatsApp --width 1100 --height 760 --show-system-tray --hide-on-close
--name sets the app name; on Linux it is lowercased with hyphens for spaces, so the package is whatsapp. --width and --height set the starting window size, 1200 by 780 by default. --show-system-tray adds a tray icon, and --hide-on-close makes the close button hide the window instead of quitting, which is off by default on Linux. Together they keep the app running so messages can alert you. Add --targets deb or --targets appimage for a single package format, as listed in the CLI options. The first build compiles dependencies and takes several minutes.
Install the result as you would a local package, for example sudo apt install ./whatsapp.deb on Debian or Ubuntu.
Link your phone
Open the app and WhatsApp Web shows a QR code. On your phone, open WhatsApp's linked devices screen, choose to link a device and scan the code. The chats then load in the window. The exact menu wording is WhatsApp's and varies by phone and version, so follow the phone's own prompts.
Pake does not start in a private mode unless you pass --incognito, so the sign-in stays between launches. Quit and reopen once to confirm you are not asked for the code again. If you are, check that you did not build with --incognito.
How the window behaves underneath
On Linux, a Pake app is a Tauri shell drawing the page in the system's WebKitGTK, not a bundled Chromium. The engine version is whatever your distribution ships, which keeps the package small and makes behavior differ between distributions. WhatsApp Web is a single large page that stays open all day, so expect the web process to use a few hundred megabytes; the FAQ says that figure comes from the engine and the page.
Pake also swaps the page's Notification API for its own. It reports permission as already granted and passes each alert to the Tauri notification plugin, which the source describes as going through notify_rust, so your desktop's notification service shows it. For more on this path, see website notifications in a desktop app. Pake cannot learn which alert you clicked on Linux, so it guesses from window focus within a minute, and a click may not open the right chat. Alerts only reach you while the app is running, which is the reason for --hide-on-close and the tray.
Check that it works
After linking, test things in order: send a message, receive one from another device, attach a file, and send a voice note if you use them. Check calls, uploads and voice notes on the Linux system where you will use the app. Watch for three problems:
- A "browser not supported" or update screen. If the page rejects the window,
--user-agentcan change what the app reports; see changing the user agent. Pake CLI 3.17.6 sends a Safari-style string on Linux by default. Rebuild with the user agent from a current browser and check whether WhatsApp accepts it. Changing the string does not replace the WebKitGTK engine. - No alerts. Check your notification service and any do-not-disturb mode, then the app's own notification switch inside WhatsApp's web settings.
- Clicks or keys do nothing, or the window stays blank, under Wayland. The FAQ suggests
PAKE_LINUX_WEBKIT_SAFE_MODE=0when clicks and typing do not reach the page and=1when the window is blank, for examplePAKE_LINUX_WEBKIT_SAFE_MODE=1 ./whatsapp.AppImage.
If WhatsApp does not accept the window at all, a regular browser is the fallback, and nothing in Pake can override the site's decision.
Two accounts
WhatsApp Web links one account per session. To keep two apart, build two apps with different names:
pake https://web.whatsapp.com --name WhatsApp-Work --show-system-tray --hide-on-close
Pake derives the app identifier from the URL and the name, so two apps wrapping the same address under different names install separately and keep separate data, and --identifier lets you set it by hand. The two accounts guide covers the pattern. After the second build, confirm it starts unlinked before you scan a code.
Update
The site updates itself on each load. The Pake runtime around it does not, so to pick up a newer one, update pake-cli and run the same command again with the same URL and name.
FAQ
Is there an official WhatsApp app for Linux?
Not on its download page, which lists Mac and Windows and sends other systems to WhatsApp Web. Check the page for changes.
Does the Pake desktop app work on Linux?
No. The Pake desktop app covers Mac and Windows, and Linux uses the CLI.
Will messages arrive when the window is closed?
Only if the app is still running. Build with --hide-on-close and --show-system-tray, then close the window instead of quitting.
