A libpurple/Pidgin plugin for WhatsApp Web.
Powered by go-whatsapp, which is written by Lucas Engelke.
Being developed on Ubuntu 18.04.
Last seen working with go-whatsapp 5e33cb4.
- Build using the supplied Makefile.
Optional: Trymake update-dep
for the most recent go-whatsapp version.
- Download a nightly build (Ubuntu 18.04 and Windows *new*).
- Tested Windows binaries are kindly provided by EionRobb on occasion.
- Place the binary in your Pidgin's plugin directory (
~/.purple/plugins
on Linux).
- Create a new account
You can enter an arbitrary username. However, it is recommended to use your own internationalized number, followed by@s.whatsapp.net
.
Example:123456789
from Germany would use49123456789@s.whatsapp.net
.
This way, Pidgin's logs look sane. - Upon login, a fake conversation should pop up, showing a link to a QR code.
Using your phone's camera, scan the code within 20 seconds – just like you would do with the browser-based WhatsApp Web. - Note: Some settings only take effect after a re-connect.
Please also notice the wiki page regarding common problems.
Spectrum 2 users must set this plug-in's option system-messages-are-ordinary-messages
to true. By default, the log-in message is a system message and Spectrum 2 ignores system messages.
- Receive text messages.
- Sending text messages.
- Download files from image, audio, media, and document messages.
Files are downloaded to~/.pidgin/gowhatsapp
. - Under the hood: Reasonable callback mechanism thanks to Eiron Robb.
- Fetch contacts from phone, keep track of time last seen, download of user profile pictures courtesy of Markus Gothe.
Note: You may need to force the TLS version to 1.2 using the NSS plug-in for download of user profile pictures to work on some systems.
- Anything beyond simple messaging, really
From approximate most important to approximate least interesting.
- Find memory leak.
- Support stickers.
- Add proxy support.
- Use a callback for getting current preferences everywhere consistently.
- Have purple handle the message, then conditionally request download where appropriate.
- Add option to ignore invalid message IDs silently.
- Sanitize invalid message IDs (e.g.
I/fb36
). - Support group conversations properly.
- Sort old messages by date.
- Improve spectrum support:
- Make online status work.
- Handle incoming files the way purple-skypeweb does.
- Support sending document messages.
- Find out how whatsapp represents newlines.
- Wait for server message received acknowledgement before displaying sent message locally.
- Do not block while sending message.
- Defer logging debug messages from go-whatsapp to
purple_debug_info()
. - Refactor the file-handling code as it is really ugly.
- Be compatible with the "Autoreply" plug-in by having an "Away" state.
- Be compatible with the "Conversation Colors" plug-in.
- Find spurious segfault.
- Consistently use dashes in key names.