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 9b4bc38.
- Build using the supplied Makefile.
make update-dep for the most recent go-whatsapp version.
- 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
123456789 from Germany would use
This way, Pidgin's logs look sane.
- Upon login, a QR code is shown in a Pidgin request window.
Using your phone's camera, scan the code within 20 seconds – just like you would do with the browser-based WhatsApp Web.
Alternatively, you can receive the login code as an image message, as a file or as plain text (user configurable).
- 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
- 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
What could be done next
From approximate most important to approximate least interesting.
- Find memory leaks.
- Support stickers #32.
- Improve proxy support: Get proxy configuration from environment variables, if requested.
- Use a callback for getting current preferences everywhere consistently.
- Have purple handle the message, then conditionally request download where appropriate.
- 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.
- Wait for server message received acknowledgement before displaying sent message locally.
- Do not block while sending message.
- Mark messages as "read" only after the user interacted with the conversation #47.
- Defer logging debug messages from go-whatsapp to
- 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.
- Consistently use dashes in key names.