hoehermann / purple-signal

Pidgin/libpurple plugin for signal using libsignal-service-java (and parts of signal-cli).
GNU General Public License v3.0
24 stars 3 forks source link
instant-messaging libpurple libpurple-plugin pidgin pidgin-plugins signal signal-client textsecure textsecure-client

purple-signal

A libpurple/Pidgin plugin for signal (formerly textsecure). Using modified parts of signal-cli which in turn is employing a fork of the official implementation.

Instant Message

State

This plug-in is no longer being developed. The author writes:

This plug-in essentially was a C/C++ wrapper around the (official) Java implementation libsignal-service-java. However, Signal itself is moving away from their own reference implementation. They now favour libsignal-client, which implements the same functionality in Rust. This plug-in ended up as a C wrapper around a Java compatibility layer around a Rust binary which is hard to build. Everything is moving in different directions and nothing is stable. Even nodejs seems to be involved at some point.

Moving away from the platform-independent Java implementation, Signal has pulled support win32 so hard not even third parties can maintain it. Maybe purple-signald will be revived so at least Linux users can have Signal in Pidgin again.

Download

Binaries once were availiable at https://buildbot.hehoe.de/purple-signal/builds/.

See INSTALL on how to install this plug-in.
If you want to build the plug-in yourself see BUILD.

Concept

libpurple plug-ins are written in C.
The signal client library is written in Java.
This project uses JNI to create a Java VM instance within the C part of the plug-in. An instance of the Java Class implementing the signal client is created. Upon receival of a message, a static method is called. This call-back method is a native method implemented in C. It forwards the data to libpurple.
This may be considered dark magic by some.

Please note this is the third purple plugin I have ever written. I still have no idea what I am doing.

Alternative Backends

These back-ends were considered, but not used:

Features

This plug-in is a proof-of-concept with very little features:

Please note that, as of now, you have to add your contacts manually and they appear "offline" in the buddy list.

For more functionality, check out purple-signald. It offers more features, but it depends on a third-party service and thus is Linux only.

Missing Features

Known Problems