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:
- Sending invitations
- Creating new rooms (and one-to-one chats)
- Joining existing rooms by alias instead of room_id
- Presence indication
- Typing indication
- Videos/images/rich text in messages
- Emotes (/me does an action)
- File uploads
- Account registration
- Room topics
- Voice/video calling
The plugin requires a homeserver running a very recent (v0.11.0 is /not/ new enough), which is not (currently) the case for the matrix.org homeserver. You will therefore need to run your own homeserver from the 'develop' branch of synapse.
Installation
Currently there are no pre-built binaries, so 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]
- 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.
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.