Libpurple protocol plugin for matrix
C Makefile
Switch branches/tags
Nothing to show
Clone or download
Latest commit 5a7166a Aug 3, 2018
Permalink
Failed to load latest commit information.
.settings Eclipse settings Oct 21, 2015
.gitignore Initial attempts at displaying a room in pidgin Oct 16, 2015
.project Eclipse settings Oct 21, 2015
AUTHORS.rst Enable room invites when matrix handle is known Jan 5, 2017
CHANGES.md Update AUTHORS/CONTRIBUTING/CHANGES Jan 4, 2016
CONTRIBUTING.rst Update AUTHORS/CONTRIBUTING/CHANGES Jan 4, 2016
LICENSE Initial commit Oct 13, 2015
Makefile e2e: Wire in sqlite3 to hold e2e databases Feb 25, 2018
Makefile.common e2e: Create MatrixE2EData type and matrix-e2e.[ch] files Feb 25, 2018
Makefile.mingw e2e: Link with libolm Feb 25, 2018
README.md [README] Add Ubuntu pre-built binaries. Fixes #58 Nov 16, 2017
libmatrix.c e2e: Add device info action Feb 25, 2018
libmatrix.h e2e: Store OLM account state to the Purple Account data Feb 25, 2018
matrix-16px.png Install matrix icons Oct 22, 2015
matrix-22px.png Install matrix icons Oct 22, 2015
matrix-48px.png Install matrix icons Oct 22, 2015
matrix-api.c Merge pull request #70 from penguin42/crypt-push4 Aug 3, 2018
matrix-api.h e2e: Add matrix_api_upload_keys Feb 25, 2018
matrix-connection.c e2e: Retrieve or create Olm account state, send keys Feb 25, 2018
matrix-connection.h e2e: Create MatrixE2EData type and matrix-e2e.[ch] files Feb 25, 2018
matrix-e2e.c e2e: Utility to decrypt media data Feb 25, 2018
matrix-e2e.h e2e: Utility to decrypt media data Feb 25, 2018
matrix-event.c event hooks Sep 2, 2016
matrix-event.h event hooks Sep 2, 2016
matrix-json.c e2e: Add jws decode Feb 25, 2018
matrix-json.h e2e: Add jws decode Feb 25, 2018
matrix-room.c e2e: Wire in media decryption Feb 25, 2018
matrix-room.h Responding to PR comments May 28, 2017
matrix-roommembers.c Hopefully fix bugs where the member list got out of sync Nov 3, 2015
matrix-roommembers.h Hopefully fix bugs where the member list got out of sync Nov 3, 2015
matrix-statetable.c Send/receive typing notifications Mar 12, 2017
matrix-statetable.h Handle incoming room invites Nov 2, 2015
matrix-sync.c e2e: Parse received d2d m.room.encrypted messages Feb 25, 2018
matrix-sync.h Refactor the connection code Oct 22, 2015

README.md

purple-matrix

This project is a plugin for libpurple which adds the ability to communicate with matrix.org homeservers to any libpurple-based clients (such as Pidgin).

Status

This project is somewhat alpha, and only basic functionality has been implemented. Sending and receiving simple text messages is supported, as is joining rooms you are invited to by other users.

The following are not yet supported:

  • Creating new rooms (and one-to-one chats)
  • Joining existing rooms by alias instead of room_id
  • Presence indication
  • Typing indication
  • Videos/rich text in messages
  • Account registration
  • Room topics
  • Voice/video calling
  • End-To-End encryption via Olm (ticket)

The plugin requires a matrix homeserver supporting client-server API r0.0.0 Synapse v0.12.0-rc1 or later is sufficient.

Installation

Pre-built binaries are available for Ubuntu since version 17.04 (Zesty Zapus). You should be able to install them giving the following commands in a terminal window:

sudo apt update
sudo apt install purple-matrix

For other GNU/Linux systems the plugin needs to be built from source.

You will need development headers/libraries for the following:

  • libpurple 2.x [libpurple-dev]
  • libjson-glib [libjson-glib-dev]
  • libglib [libglib-dev (or libglib2.0-dev on Ubuntu 16.04 xenial)]
  • libhttp_parser [libhttp-parser-dev].

You should then be able to:

make
sudo make install

You will then need to restart Pidgin, after which you should be able to add a 'Matrix' account.

Building on Windows

Set up a build environment using the Pidgin BuildingWinPidgin docs

You should then be able to:

make -f Makefile.mingw
make -f Makefile.mingw install

You will then need to restart Pidgin, after which you should be able to add a 'Matrix' account.

Usage

  • Open the 'Manage accounts' dialog (under the 'Accounts' menu) and click 'Add'.
  • If the plugin was loaded successfully, you will be able to select 'Matrix' from the 'Protocol' dropdown.
  • Enter your matrix ID on the homeserver (e.g. '@bob:matrix.org' or 'bob') as the 'username', and the password in the 'password' field.
  • On the 'Advanced' tab, enter the URL of your homeserver.

The Advanced account option 'On reconnect, skip messages which were received in a previous session' is disabled by default. This means that pidgin will show the last few messages for each room each time it starts. If this option is enabled, only new messages will be shown.