74 lines
2.3 KiB
Markdown
74 lines
2.3 KiB
Markdown
# Telepathy for Delta Chat
|
|
|
|
## Who
|
|
|
|
Authored by [Nick Thomas](https://ur.gs) under the [MIT License](LICENSE).
|
|
|
|
## What
|
|
|
|
[Delta Chat](https://delta.chat) is IM over email.
|
|
[Telepathy](https://telepathy.freedesktop.org) is a framework for abstracting
|
|
over multiple IM protocols. This project glues the two together, allowing
|
|
Telepathy clients to send/receive Delta messages.
|
|
|
|
Telepathy CMs should have a name that is not the same as their protocol; so this
|
|
CM is hereby named "padfoot".
|
|
|
|
My first attempt was [purple-plugin-delta](https://code.ur.gs/lupine/purple-plugin-delta). This has some licensing issues (linking libpurple with OpenSSL)
|
|
that will be resolved with OpenSSL v3.0.0. At least until then, I've lost
|
|
interest in it; my efforts are going into this version instead.
|
|
|
|
## When
|
|
|
|
When it's ready.
|
|
|
|
## Where
|
|
|
|
Here's where we're at right now:
|
|
|
|
- [x] Connect to DBUS
|
|
- [x] Advertise enough properties / interfaces to become visible in Empathy
|
|
- [x] Connect to deltachat-core-rust
|
|
- [x] Set up an account via autoconfiguration
|
|
- [x] Appear as online in Empathy
|
|
- [x] Disconnect!
|
|
- [ ] Set up an account manually
|
|
- [ ] Contacts handling
|
|
- [~] Text messages
|
|
- [ ] Multimedia messages
|
|
- [ ] Setup messages
|
|
- [ ] Import/Export
|
|
- [ ] Group chats
|
|
- [ ] Geolocation messages
|
|
|
|
## Why
|
|
|
|
Mobile IM, mostly. Desktop IM, also. It's ideal for my pinephone, and lighter
|
|
than the electron desktop client.
|
|
|
|
At this point, I don't know Rust, I don't know DBUS, I don't know Telepathy, and
|
|
I don't know Deltachat particularly well either. So this also functions as a
|
|
learning exercise!
|
|
|
|
## How
|
|
|
|
This project is written in Rust, so you'll need a rust compiler to build it.
|
|
[Rustup]() comes highly recommended. Deltachat is also written in Rust and it
|
|
needs the `nightly` version, so follow the instructions for that.
|
|
|
|
It makes use of the `dbus-codegen-rust` crate to convert the
|
|
[telepathy interface specs](https://github.com/TelepathyIM/telepathy-spec) into
|
|
the executable code in `src/telepathy`. This is checked in, but can be
|
|
regenerated like so:
|
|
|
|
```bash
|
|
$ git submodule init telepathy-spec
|
|
$ git submodule update telepathy-spec
|
|
$ cargo install dbus-codegen
|
|
$ ./scripts/dbus-codegen
|
|
```
|
|
|
|
`dbus-codegen-rust` doesn't seem to handle namespaced attributes properly, so
|
|
we modify the XML files in `telepathy-spec`... with `sed`. The `tp:type`
|
|
attribute is renamed to `tp:typehint`.
|