Skip to content

Latest commit

 

History

85 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

oxidezap

An unofficial WhatsApp client in Rust, built on whatsapp-rust.

Not affiliated with, endorsed by, or connected to WhatsApp or Meta.

Status

Early. Pairing, chats with durable history, media and 1:1 voice calls work. Read known limitations before relying on it.

Layout

The WhatsApp connection lives in one background process, oxidezapd. It holds the session, owns the store, shows a tray icon on Linux and serves front ends over a per-user local transport — a Unix socket, or a named pipe on Windows. oxidezap is the GPUI desktop window; it owns no session of its own and starts the daemon when none is running. One session per user, one process that opens the database, however many windows you like.

Crate What it owns
oxidezap-core Domain types: chats, messages, calls, UI events. No UI, no I/O — and the daemon's wire format.
oxidezap-audio Capture, playback, Opus encoding, waveforms.
oxidezap-chat-store SQLite chat history materialized from the event stream, with FTS5 search.
oxidezap-session Connection, event stream, sends, store hydration.
oxidezap-ipc The protocol between the daemon and its front ends, and the client end of the transport. No runtime.
oxidezap-daemon oxidezapd: the session, the socket and the tray.
oxidezap-gui oxidezap: GPUI front end, plus video decode.

Install

Prebuilt binaries for Linux, macOS and Windows are attached to each release. Builds of main are published continuously under the nightly tag.

Each asset is an archive holding two binaries that belong together: oxidezap is the window and oxidezapd holds the session. Keep them in the same directory — the window looks for the daemon beside itself.

tar -xzf oxidezap-nightly-linux-x86_64.tar.gz
cd oxidezap-nightly-linux-x86_64
./oxidezap

The binaries are unsigned, so macOS Gatekeeper and Windows SmartScreen will object. On macOS, clear the quarantine flag before the first run:

xattr -dr com.apple.quarantine oxidezap oxidezapd

Build

Stable Rust. On Linux you also need the ALSA, X11/Wayland and fontconfig development packages:

sudo apt install libasound2-dev libxkbcommon-dev libxkbcommon-x11-dev \
  libwayland-dev libxcb1-dev libfontconfig1-dev libfreetype6-dev

# Both, because the window starts the daemon beside itself.
cargo build --release --bin oxidezap --bin oxidezapd
./target/release/oxidezap

The first build compiles the GPUI tree and takes a while. Debug builds keep gpui itself optimized (see [profile.dev.package.gpui]), which is what makes them usable at all.

Data

State lives in one SQLite file under the platform data directory (~/.local/share/oxidezap/whatsapp.db on Linux): device identity, Signal state and chat history together. Deleting it unlinks the device and discards local history, which is exactly what the in-app "pair again" action does.

Known limitations

  • Voice calls only. The library's call facade is 1:1 audio, so video calls, group calls and output-device selection are drawn but disabled.
  • Spacing does not yet follow the rem scale, so the UI ignores base-font zoom.

License

MIT.

About

Unofficial WhatsApp client in Rust, built on whatsapp-rust. Not affiliated with WhatsApp or Meta.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages