Clone wiki

purple-hangouts / Home



Hangouts Plugin for libpurple

This is the Hangouts plugin for libpurple and libpurple-based messengers (Pidgin, Finch, Bitlbee, etc). It aims to be a complete replacement for XMPP and support all the nice things that a native Hangouts user would expect. See Differences with XMPP for more details.

A replacement prpl for Hangouts in Pidgin/libpurple to support the proprietary protocol that Google uses for its Hangouts service. So far it supports all the fun things that aren't part of the XMPP interface, such as Group Chats, synchronised history between devices and SMS support via Google Voice.

This plugin is written by Eion Robb and Mike 'Maiku' Ruprecht. Heavily inspired by the hangups library by Tom Dryer (et. al.) using code from Nakul Gulati and protobufs from Darryl Pogue

Please read the FAQ before posting any issues


To compile, just do the standard make && sudo make install dance. You'll need development packages for libpurple, libjson-glib, glib and libprotobuf-c to be able to compile.


Run the following commands from a terminal

sudo apt-get install -y libpurple-dev libjson-glib-dev libglib2.0-dev libprotobuf-c-dev protobuf-c-compiler mercurial make;
hg clone && cd purple-hangouts;
make && sudo make install


On Fedora you can install package from Fedora's main repository:

sudo dnf install purple-hangouts pidgin-hangouts


On CentOS/RHEL you can install package from Fedora's EPEL7 repository:

sudo yum install purple-hangouts pidgin-hangouts

Arch Linux

On Arch Linux you can install a package from the AUR:

tar -xvf purple-hangouts-hg.tar.gz
cd purple-hangouts-hg
makepkg -sri

Building RPM package for Fedora/openSUSE/CentOS/RHEL

wget -O ~/rpmbuild/SPECS/purple-hangouts.spec
sudo dnf builddep ~/rpmbuild/SPECS/purple-hangouts.spec
spectool --all --get-files ~/rpmbuild/SPECS/purple-hangouts.spec --directory ~/rpmbuild/SOURCES/
rpmbuild -ba  ~/rpmbuild/SPECS/purple-hangouts.spec

The result can be found in ~/rpmbuild/RPMS/`uname -m`/ directory.


Use the Windows installer ( backup link ) to make life easier, otherwise development builds of Windows dll's live at ( backup link ) (you'll also need libprotobuf-c-1.dll and libjson-glib-1.0.dll in your Pidgin folder, included in the installer)

Like this plugin?

Say "Thanks" by sending us $1


To install the plugin, follow the instructions on the overview

Pidgin Instructions

Add a new account in Pidgin (or change your existing XMPP account) to 'Hangouts' in the dropdown box. The first time you connect your web browser should automatically open and ask you to authenticate with Google. It will then provide you a code that you need to copy-paste into the popup.

Bitlbee Instructions

See the Bitlbee FAQ for more details


Why do I get "Please wait a moment" when setting up OAuth?

That means it worked. Make sure you follow the instructions in the YouTube video to get the oauth cookie from the web inspector.

Why can't my buddies see me online?

Open up and go to the settings screen and turn on "Show when you were last seen online"

How do I add new buddies to my buddy list?

You'll need to search for them. From the buddy list, go to Accounts->{Your Hangouts Account}->Search for friends... then type in their email address or name or whatever

How can I start a group chat?

Right click the buddy in the buddy list and choose "Initiate Chat". After that you can invite more people to the group chat with Conversation->Invite...

How does the buddy list work?

The buddy list is made up of a combination of your most recent conversations and your Google contacts list. Deleting a buddy from the buddy list should archive the conversation, while deleting a group chat should make you leave it. You can also leave a group chat with the /leave command

How does setting status work?

If you set your status to Away, Hangouts won't think you're active so you'll get notified about received messages on other devices. Setting your status to "Do Not Disturb" is set across all of your devices, so no devices will get notified about any new messages.

How does other peoples statuses work?

What we get from the server is two flags: Available and Reachable. ("Available" is the solid green circle you see on the Hangouts webapp.) We use these two flags to set the status in Pidgin:

  • Available and Reachable? - Online
  • Reachable but not Available? - Away
  • Available but not Reachable? - Extended Away
  • Neither Available nor Reachable? - Offline/Invisible

What does "Un-Googlify URLs" mean?

If someone sends you a webpage link, if they're not on a Google-owned domain, they would normally display as one URL but when you click it would go to a webpage instead to be redirected. If you don't like the URL intercept page you can enable this setting to avoid that behaviour

Why does the Hangouts prpl show up as an "iOS Device" login?

To connect to the Hangouts api's we need to have 'uberauth' permissions. To get that we have to pretend to be a platform that supports the Hangouts app, which is limited to iOS, Android and Chrome. The Android and Chrome apps both use Google authentication bundled into the platform, which means we can't do an OAuth login, only leaving iOS which can login via the browser.