A libpurple/Pidgin protocol plugin for Signal (formerly textsecure) using presage.
- Create a new Pidgin account. Enter your Signal account UUID as username. In case you do not know your UUID, just enter anything. The plug-in will tell you what to use.
- Enable the connection. A window with the QR-code should pop-up. Scan it with your master device. Wait for the window to close.
- Can link as secondary device via QR-Code.
- Receives a simple text message from a contact or a group.
- Displays quotes, reactions and incoming calls.
- Receives attachments (see caveats below).
- Can reply with a simple text message.
- Will add buddies to contact list unconditionally.
- Can list groups as rooms and open the chat.
These lists are not exhaustive.
- Add chats to contact list unconditionally.
- Forward all errors to front-end properly.
- Send an attachment (example exists in flare).
- Mark messages as "read" (currently not implemented in back-end, see whisperfish/presage#141). At time of writing, notifications on main device are deleted after answering via linked device. So that is working alright.
- Reply to a specific message (no example exists in back-end).
- Configuration option whether to add contacts to buddy list or not
- Reasonable generation of C headers and rust constants
- Stickers, mentions, replies, styles,…
- Display typing notifications
- Display receipts (not important)
- Support for alternative UIs (Spectrum, Bitlbee)
- Support for adding contacts via phone number
- Handling errors when sending messages is barely tested.
- Attachments end up in the conversation of the sender, not the destination (espeically confusing when a group chat is involved).
libpurple-dev
libqrencode-dev
protobuf
(or any other package which provides theprotoc
compiler)
git clone --recurse-submodules https://github.com/hoehermann/purple-presage
mkdir purple-presage/build
cd purple-presage/build
cmake ..
cmake --build .
sudo cmake --install .
purple-presage is known to compile with MSVC 19.30 and rust 1.75. You need the version of rust mentioned in libsignal-service-rs. A newer version will probably work, too. Using the "x86 Native Tools Command Prompt for VS 2022" is recommended.
Install dependencies via vcpkg:
vcpkg.exe install libqrencode:x86-windows-static
protoc needs to be in your PATH. You can install it with any method you like, including vcpkg:
vcpkg.exe install protobuf
Same as Linux build instructions, but may need to modify the configuration:
-
Generate project:
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE="…/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x86-windows-static -DRust_CARGO_TARGET="i686-pc-windows-msvc" ..
If necessary, the rust toolchain version can be specified via
-DRust_TOOLCHAIN="1.75-i686-pc-windows-msvc"
. -
Build, Install and Run:
cmake --build . cmake --install . cmake --build . --target run
purple-presage must be built with MSVC. MinGW's GCC encountered a number of issues such as incompatibility with rustc versions newer than 1.69 and not shipping libbcrypt by default.
Needs a whooping 6 GB of disk space during build! :o