Move away from Electron

Hi @aesrentai, I am trying to organize people who are interested in working on a native Linux mobile client for Signal. I am not trying to get the Signal developers to help with it. They’ve repeatedly said they’re not interested, nor are they interested in adapting the Electron client to meet the needs of mobile Linux. So it’s up to us to make something that works for us.

Any new client should use the new Rust libraries from the Signal developers, even if they are incomplete. There are several paths forward:

  1. A new application with the GTK Rust bindings. This would have the advantage of not needing any intermediate layers between the upstream libraries and the client application.
  2. A new application with Qt and Kirigami. I discussed this idea with the Plasma Mobile developers and they suggested it could work by making a QObject wrapper class around the Rust libraries using cxx, run that in its own thread to handle the networking, and use Qt signals & slots to communicate with QAbstractItemModels backing the QML.
  3. Integrate the Rust Signal libraries with an existing chat application instead of writing a whole new GUI. Integrating into Chatty would have the advantage of also handling SMS & MMS like the Signal Android client, but I’m unclear how audio and video calls could be integrated into Chatty. Maybe that could be separately integrated into Calls. Integrating Signal into Fractal or NeoChat could be other approaches, but would make those applications much more complex and I’m not sure their developers would welcome that.

I’ve also started a thread on the Pine64 forum about this.

For push notifications, I think we should implement a native Linux daemon for Firebase Cloud Messaging without Android. This would require no extra effort for the Signal Foundation. It could also be used for reimplementations of other Android chat applications such as WhatsApp, Facebook Messenger, Slack, Zulip, and more. microG has already reimplemented the Android API in Kotlin and studying that code could be helpful.

If someone wants to make this client work on Windows and macOS, notifications could be done with WebSocket. But I’m far more interested in getting it working on Linux smartphones.

3 Likes