- Rust 90.5%
- Meson 3.9%
- SCSS 2.6%
- Nix 1.8%
- Shell 1.2%
the changes in chat_list.rs and login.rs swap single-threaded Rc<Cell<bool>> for Arc<AtomicBool> with proper Acquire/Release ordering on all .load() and .store() calls, making the suppress_selection, valid_phone_number, and session_scan_expired flags safe to share across threads. |
||
|---|---|---|
| .github/workflows | ||
| build-aux | ||
| data | ||
| hooks | ||
| po | ||
| src | ||
| .editorconfig | ||
| .envrc | ||
| .gitignore | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| default.nix | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| meson.build | ||
| meson_options.txt | ||
| README.md | ||
| rust-toolchain.toml | ||
| shell.nix | ||
Papo
Unofficial GTK client for WhatsApp, built with Rust. This project is in an early stage and under active development.
What does "Papo" mean?
"Papo" is Brazilian Portuguese slang for "chat" or "conversation." It is commonly used in the expression "bater um papo," which means to have a chat.
Install
Nix
nix build github:AmanoTeam/Papo
nix run github:AmanoTeam/Papo
Flatpak
flatpak-builder --install --user build build-aux/com.amanoteam.Papo.json
Build from source
Requires Rust nightly, GTK4 (>= 4.20), libadwaita (>= 1.8), and Meson.
meson setup build
meson compile -C build
meson install -C build
Roadmap
- QR code login
- Chat list
- Message history
- Bidirectional infinite scroll pagination
- Go-to-bottom button
- Read receipts
- Local message storage (libSQL)
- Send messages
- Media messages (images, videos, documents)
- Voice messages
- Stickers and animated stickers
- Contact/chat info panel
- Notifications
- History sync (after pairing)
- Chat search
- Chat filters (unread, favorites, groups, non-contact)
- Chat functions (pin, mute, delete, archive)
- Chat admin functions (ban, change info/settings)
- Message search
- Message reactions
- Reply/quote messages
- Database encryption
- Online status indicators
- Typing indicators
- Profile pictures
Translations
The project uses gettext for internationalization. Brazilian Portuguese (pt_BR) is currently supported. Translation files are located in the po/ directory, and contributions for new languages are welcome.
Acknowledgements
- relm4 — Idiomatic GUI framework for GTK4 in Rust
- whatsapp-rust — Rust implementation of the WhatsApp Web API
Contributing
We accept pull requests from our Forjego instance and GitHub. Fork either repository, create a feature branch, and submit a pull request. Bug reports and feature requests are also welcome via the issue tracker.
License
Licensed under the Apache License 2.0. See the LICENSE file for details.
Author: Andriel Ferreira