This project is not affiliated with WhatsApp or Meta.
A Linux-first native client for WhatsApp. It uses whatsmeow to access the WhatsApp web multidevice API.
On Arch-based systems, Whatevr is available on the AUR:
yay -S whatevr-binNote: You can install the whatevr or whatevr-git packages also if you want to build yourself
For other systems, for now you can follow the build instructions below:
Build Instructions
whatevr builds through a single top-level justfile that compiles both the
daemon (whatevrd) and the Qt/Kirigami frontend (whatkevr). The daemon must be
running for any frontend to work.
Daemon: Go 1.25+, just, a C compiler, SQLite dev files, pkg-config. Frontend: C++20 compiler, CMake 3.21+, Ninja, Qt 6.8+, KDE Frameworks 6.5+ (KCoreAddons, KDBusAddons, KI18n, Kirigami, Prison), Kirigami Addons 1.0+, rlottie, Vulkan headers.
# Arch
sudo pacman -S --needed base-devel go just sqlite pkgconf cmake ninja \
extra-cmake-modules vulkan-headers qt6-base qt6-declarative qt6-shadertools qt6-grpc \
kcoreaddons kdbusaddons ki18n kirigami kirigami-addons prison rlottie
# Note: rlottie is not available on the official Arch repos, you can install it from the AUR
# Fedora
sudo dnf install go just gcc gcc-c++ sqlite-devel pkgconf-pkg-config cmake ninja-build \
extra-cmake-modules vulkan-headers qt6-qtbase-devel qt6-qtdeclarative-devel \
qt6-qtshadertools-devel qt6-qtgrpc-devel kf6-kcoreaddons-devel \
kf6-kdbusaddons-devel kf6-ki18n-devel kf6-kirigami-devel kf6-prison-devel \
kf6-kirigami-addons-devel rlottie-devel
# Debian 13 "trixie" (needs Go >= 1.25 — see Platform support)
sudo apt install golang just gcc g++ libsqlite3-dev pkg-config cmake ninja-build \
extra-cmake-modules vulkan-headers qt6-base-dev qt6-declarative-dev qt6-shadertools-dev \
qt6-grpc-dev libkf6coreaddons-dev libkf6dbusaddons-dev libkf6i18n-dev \
libkf6kirigami-dev libkf6prison-dev kirigami-addons-dev librlottie-devjust build # debug build for local testing
just build-release # optimized release build
just install "$HOME/.local" # user-local release install
# or system-wide:
sudo just install /usrjust install places the whatevrd and whatkevr binaries, desktop entry,
icon, AppStream metainfo and the systemd user units under the selected prefix.
Make sure the chosen bin directory is on your PATH (e.g. ~/.local/bin).
Other handy targets: just version, just validate, just artifacts, and
just clean.
Start the daemon, then the frontend:
whatevrd # or run it via systemd (below)
whatkevrjust install ships two mutually exclusive user units — enable one,
never both (they share the same socket path):
- Socket activation (recommended): the daemon starts on demand the moment a frontend connects, and keeps running afterwards.
- Always-on service: the daemon starts at login.
systemctl --user daemon-reload
systemctl --user enable --now whatevrd.socket # socket activation (recommended)
# or
systemctl --user enable --now whatevrd.service # always-onA user-local install puts the units under ~/.local/lib/systemd/user, which
systemd does not search. Copy them into a searched path first (the templated
service needs the binary path substituted):
mkdir -p ~/.config/systemd/user
sed "s|@BINDIR@|$HOME/.local/bin|g" packaging/systemd/whatevrd.service.in \
> ~/.config/systemd/user/whatevrd.service
cp packaging/systemd/whatevrd.socket ~/.config/systemd/user/
systemctl --user daemon-reloadDistro packages install both units to /usr/lib/systemd/user/ (shipped disabled).
Clicking a message notification opens that chat directly via the
whatevr://chat/<id> URL scheme. Distro packages register the handler
automatically; for a manual install, register it once:
update-desktop-database ~/.local/share/applications
xdg-mime default in.codelif.Whatevr.desktop x-scheme-handler/whatevrThe GTK4/libadwaita frontend is not actively maintained and is excluded from the main build and packaging. Build it manually if you want to hack on it:
# deps: rust, gtk4, libadwaita, pkg-config
cd whatgevr
cargo build --release
install -Dm755 target/release/whatevr ~/.local/bin/whatevrWhatevr is very early-stage software. It is usable for development and testing, but the should be treated as EXPERIMENTAL. There is lots of missing functionality that is considered essential, and there WILL be bugs.
Now with that, here is the current feature map, this is for whatevrd+whatkevr.
Feature Map
| Feature | Status | Notes |
|---|---|---|
| WhatsApp login with QR code | ✅ | |
| Persistent login session | ✅ | |
| Logout | ✅ | |
| Local message database | ✅ | SQLite |
| Older message loading | ✅ | |
| Incoming messages | ✅ | |
| Send text messages | ✅ | |
| Send image messages | ✅ | |
| Reply to messages | ✅ | |
| Message delivery/read status | ✅ | |
| Pin and unpin chats | ✅ | |
| Group chats | ✅ | Basic support + info display |
| Chat avatars | ✅ | |
| Media preview/display | ✅ | Images and cached media |
| Paste image from clipboard | ✅ | |
| Typing indicator | ✅ | Send/receive composing state |
| Online/last-seen presence | ✅ | |
| Offline/history sync progress | ✅ | |
| Desktop notifications | ✅ | Handled by daemon |
| Emoji picker | ✅ | Frontend-local |
| Message search | ✅ | |
| Chat search | ✅ | |
| Contact search/new chat | ✅ | |
| Voice messages | ❌ | |
| Audio playback | ❌ | |
| Video playback | ❌ | |
| View-once messages sending | ❌ | |
| Document/file sending | ❌ | Images/media path exists, general file UX missing |
| Stickers | ✅ | Receive and send stickers |
| Message reactions | ✅ | |
| Composer emoji inline search | ✅ | |
| Edit sent messages | ✅ | Received message edits are handled too |
| Delete messages | ✅ | |
| Forward messages | ✅ | |
| Star/bookmark messages | ✅ | |
| Archive chats | ✅ | |
| Mute chats | ✅ | |
| Pinned messages | ✅ | |
| Group management | ❌ | No create/invite/admin UI |
| Community management | ❌ | |
| Calls | ❌ | Voice/video calls unsupported |
| Status/stories | ❌ | |
| Settings UI | ✅ | |
| Account/profile editing | ✅ | Includes privacy settings |
| Import/export backups | ❌ | |
| DB encryption and keyring integration | ❌ | |
| Daemon SNI (Tray) | ❌ |
Whatevr is built around a single background daemon, whatevrd. The daemon owns WhatsApp connection, login session, local SQLite store, media cache, notifications, and local RPC API. Frontends connect to that daemon instead of speaking to WhatsApp directly.
This approach lets multiple frontends share the same backend. Currently frontend is mainly focused on the Qt/Kirigami frontend, whatkevr. There is a primitive GTK4/libadwaita frontend, whatgevr, but I will not be working on that for a while (see for my reasons).
I also have a TUI frontend and a scriptable CLI in mind, though they are far into the future, feel free to take up the task if you feel qualified.
Whatevr will be Linux-first for now until its stable. I am open to contributions for porting functionality to other platforms as long as they don't affect existing performance and Linux functionality significantly.
Whatevr stands on the shoulders of:
- whatsmeow — WhatsApp Web multidevice protocol library (MPL-2.0)
- Qt — cross-platform application framework (LGPL-3.0)
- KDE Frameworks / Kirigami — UI toolkit and helpers (LGPL)
- Kirigami Addons — convergent UI components (LGPL)
- rlottie — Lottie rendering for animated stickers (MIT)
- emojilib — emoji keyword / shortcode data, © 2014 Mu-An Chiou (MIT)
- Google Fonts emoji metadata — emoji ordering & grouping data (Apache-2.0)
Additionally, I took a fair amount of inspiration for UI layouts :from NeoChat
This program is licensed under the BSD-3-Clause License


