Signal

This page outlines the current state of, and options for using Signal on Mobian. Each of these options is currently under heavy development.

Globally relevant issues:

  • Only the desktop client supports video and audio calls.
  • All currently functional signal clients are third-party. This means they are not supported/secured by the Signal Messenger company. However, both Signald and Signal-cli heavily use official libraries.

Official Clients

Desktop

The current status of the desktop client can be found in this github issue. Successful compilation and daily usage has been achieved.

Instructions for building a fresh Signal-Desktop .deb can be found at https://gitlab.com/undef1/signal-desktop-builder/-/packages or https://github.com/0mniteck/Signal-Desktop-Builder. This process is now automated, but experience with Docker is useful. Also a prebuilt .deb is available.

Android

The Android client is quite usable in Anbox (Version 20210106 with PostmarketOS Android image) once Anbox has been started.

Currently known issues:

  • Anbox does not receive upper case characters and a large number of symbols from Squeekboard. Workaround is to install a keyboard in Anbox.
  • Functions requiring hardware access do not work. Calls seem to work, but no audio is sent due to Anbox not passing the microphone to Android.
  • Sending files from the host device requires inserting them into android using adb.
  • Screen is slightly blurry due to XWayland rendering issues.

Packaging:

Axolotl

With the exception of Signal Desktop, Axolotl is currently the most stable and feature rich client. However, this is a complete re-implementation of the signal protocol in Go/JavaScript. For this reason, it is likely to be the least well tested client. This client is better documented at the Axolotl Wiki Page

Flare

Flare is a new unofficial Gtk client that is work in progress but already has basic features. It can be installed via Flatpak. It is based on libsignal-service-rs like Sailfish's Whisperfish.

Signald

Signald provides a system service for interacting with a Signal account. It can either be used manually over a Unix socket (nc -U /var/run/signald/signald.sock) or through another service such as libpurple-signald.

Currently known issues:

  • Manual usage is quite poor.
  • Service occasionally crashes without warning the user. This requires manual restart which may not be evident unless the user attempts to send a message.

Packaging: Partial packaging exists in the signald repository.

Signal-cli

Signal-cli provides a well featured Signal commandline client with a relatively easy to use interface. It can either be used directly, through a TUI such as siggo or through purple-signal.

Current known issues:

  • As with Signald, the latest version of Signal-cli depends on the libsignal-client and libzkgroup rust libraries that need to be compiled for ARM 64 architecture. Pre-compiled binaries can be downloaded here. (Note, this is not required with version 0.6.12 as used by purple-signal)
  • Signal-cli is slow to start. This can cause delays sending messages when used manually, but is quite fast when used by a library.

Packaging: Currently no package exists for signal-cli. However, (with the exception of libzkgroup from above) being a pure-Java application, cross-compilation for arm64 is relatively easy.

libpurple-signald

This is the most fully featured libpurple Signal Client, though development stopped in mid-2020 in favour of purple-signal.

Currently known issues:

  • Fails silently when signald crashes.
  • Message delivery may require a restart of signald.

Requires: Signald installed and running.

Packaging: A partially working package exists at this Gitlab repositiory.

purple-signal

This library is currently under heavy development. It is the most stable libpurple signal library, but has few working features.

Currently known issues:

  • Preliminary support for receiving attachments exists. Sending attachments is not available.
  • Adding an account can fail silently. To manually add an account after such a failure:
    1. Register an account using signal-cli
    2. Copy the content of ~/.local/share/signal-cli/data/<phone number> to another file.
    3. Replace all quotes with &quot;.
    4. Remove any newlines in the file.
    5. Insert the content of the file into the signaldata setting in the file .purple/accounts.xml.
      • Keep a backup of this file. Updates of purple-signal and changing the libpurple client tend to break it.
    6. Restart your libpurple client.

Requires: signal-cli (currently version 0.6.12) installed in /opt/signal-cli

Packaging status: No existing package. Compiling from source on the pinephone is relatively easy (instructions) with the following dependencies:

  • cmake
  • openjdk-11-jre-headless
  • default-jdk
  • make
  • gcc
  • libpurple-dev

Purple Clients

Chatty

Chatty has a list of allowed libpurple plugins. This list contains neither of the above libpurple clients. Manually adding the following lines to the accounts will cause them to show in chatty, but new messages cannot be sent and errors may cause Phosh to crash.

<settings ui='chatty-ui'>
    <setting name='auto-login' type='bool'>0</setting>
</settings>

Current issues:

  • Sending messages does not work, regardless of library used.
  • Received messages do not show in the chat list, but must be answered from their notification.
  • Only works with libpurple-signald at this time.

Pidgin

Pidgin works with both of the above libpurple plugins and it's main interfaces fit on mobile screens.

Current issues:

  • Chat history is saved, but accessible in the separate chat log, rather than the message interface.
  • Not notifications are provided by default. Instead, a message window pops up.

See also

An overview of the available third-party software for Signal