Skip to content

hoehermann/purple-gowhatsapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

purple-gowhatsapp

A libpurple/Pidgin plugin for WhatsApp powered by whatsmeow. whatsmeow is written by Tulir Asokan.

Instant Message

Features

Standard features:

  • Connecting to existing account via QR code or 8-character code.
  • Receiving messages, sending messages.
  • Receiving files (image, video and note, audio and voice, document, sticker).
  • Received images are displayed in the conversation window (optional).
  • Sending JPEG images as image messages.
  • Sending opus audio files as voice messages.
  • Sending mp4 video files as video messages.
  • Sending other files as documents.
  • Fetching all contacts from account, showing friendly names in buddy list, downloading profile pictures (Markus "nihilus" Gothe for Peter "theassemblerguy" Bachmaier).
  • Sending receipts (configurable).
  • Displaying reactions.
  • Support for socks5 proxies.
  • Reasonable support for group chats by yourealwaysbe.
  • Under the hood: Reasonable callback mechanism thanks to Eion Robb.
  • Note: Although the name of the project suggests otherwise, this is not a perfect drop-in replacement for the plug-in with the obsolete gowhatsapp back-end. For this reason, it has a different ID: prpl-hehoe-whatsmeow

Other improvements:

  • Contact presence is regarded (buddies are online and offline).
  • Typing notifications are handled.
  • Logging happens via purple.
  • Messages which only consist of a single URL may be sent as media messages (disabled by default).
  • Account can be logged out via purple action.
  • Reactions are displayed as messages.
  • There is an "away" state.
    • For compatibility with the auto-responder plug-in.
    • Other devices (i.e. the main phone) display notifications while plug-in connection is "away".
    • WhatsApp does not send contact presence updates while being "away".
    • Caveat emptor: Other side-effects may occur while using "away" state.

Known issues:

  • Contacts:
    • If someone adds you to their contacts and sends you the very first message, the message will not be received. WhatsApp Web shows a notice "message has been delayed – check your phone". This notice is not shown by the plug-in.
  • Group Chats:
    • Purple prior to 2.14.0 cannot send files to groups.
    • No notification when being added to a group (the chat will be entered upon receiving a message).
    • The list of participants is not updated if a participants leaves the chat (on Pidgin, closing the window and re-entering the chat triggers a refresh).
  • Stickers:
    • A webp pixbuf loader must be present at runtime.
    • GDK pixbuf headers must be available at build time else presence of loader cannot be checked.
    • Stickers may or may not appear animated depending on loader.
  • Special messages:
    • Voice calls are not supported (a warning is displayed).
    • Polls are not supported (a warning is displayed).
    • Other special messages are ignored silently.
  • No support for mark-up in outgoing messages.
    Note: Due to the internal use of purple_markup_strip_html, you need to use a br-tag instead of newline. Pidgin does that automatically, but other clients might not.
  • Emojis: WhatsApp supports many emojis in text message bodies and reactions. The smiley themes shipped with Pidgin do not cover all emojis. You can install a smiley theme or a font which does, for example the Google Noto Color Emoji font. On Ubuntu, this is provided by the fonts-noto-color-emoji package. There is currently no experience if that works on Windows as well. Feedback is welcome.

Other planned features:

  • Support WhatsApp formatting.
  • Display receipts in conversation window.
  • Join group chat via link.
  • View group icon.
  • Gracefully handle group updates.
  • Action to refresh groups.
  • Support sending mentions.
  • Support replying to a specific message.

These features will not be worked on:

  • Accessing microphone and camera for recording voice or video messages.
    To prepare a voice message, you can use other tools for recording. I like to use ffmpeg:

    ffmpeg -f pulse -i default -ac 1 -ar 16000 -c:a libopus -y voicemessage.ogg # on Linux with PulseAudio
    

Building

Look at the build instructions. This project is being developed on Ubuntu 24.04. Support for other distributions and operating systems is community effort.

Installation

  • Place the binary in your Pidgin's plugin directory (on Linux, that is ~/.purple/plugins).

Set-Up

  • Create a new account
    You must enter your phone's internationalized number followed by @s.whatsapp.net.
    Example: 123456789 from Germany would use [email protected].

  • Upon login, a QR code and the 8-character code is shown in a Pidgin request window.
    Using your phone's camera, scan the code within 20 seconds or enter the 8-character code on your main device – just like you would do with WhatsApp Web.
    Note: On headless clients such as Spectrum, the QR code will be wrapped in a message by a fake contact called "Logon QR Code". You may need to temporarily configure your UI to accept messages from unsolicited users for linking purposes.
    Wait until the connection has been fully set up. Unfortunately, there is no progress indicator while keys are exchanged and old messages are fetched. Usually, a couple of seconds is enough. Some power users with many groups and contacts reported the process can take more than a minute. If the plug-in is not yet ready, outgoing messages may be dropped silently (see issue #142).

You probably want to have a look at the documentation of all the settings the plug-in offers.

Some in-depth documentation about obscure details can be found in the notes. Read this if you want to send files.

Acknowledgements

Sponsor this project

Contributors 7