meta data for this page
Table of Contents
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
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:
- Anbox is available in the Debian repositories.
- Anbox images can be built using this image builder or extracted from the PostmarketOS package.
- The signal APK can be found at the official signal website.
Desktop
The current status of the desktop client can be found in this github issue. Successful compilation has been achieved, however, this required significant effort and even if community binaries are published, it's not easy to use them.
The community binary packages for Arch cannot be used on Mobian directly but have to run in an Arch chroot because of libc incompatibilities. Once all dependencies are installed one can start it from the Phosh session (not via SSH) with bwrap:
bwrap --tmpfs / --proc /proc --bind /sys /sys --dev-bind /dev /dev --bind /tmp /tmp --bind /var /var --bind /home/mobian/signal/usr /usr --symlink usr/bin /bin --symlink usr/lib /lib --bind /etc /etc --bind /home /home --bind /run /run --chdir / --setenv LD_PRELOAD /usr/lib/signal-desktop/libffmpeg.so --die-with-parent /usr/bin/signal-desktop --disable-gpu --no-sandbox %U
Alternatively, instructions for building a fresh Signal-Desktop install can be found at https://gitlab.com/undef1/Snippets/-/snippets/2100495. This is a long, poorly documented proceedure not for the faint of heart.
Due to the missing GPU support it is a bit slow but the bigger issue is that after zooming out to fit the screen, the font is barely readable because X and not Wayland is used.
Axolotl
Axolotl is currently the most stable and feature rich client, with the exception of Signal in Anbox. 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
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:
- Building Signald for arm64 requires manually compiling libzkgroup and loading it into Signald's Jar file. Instructions at this Gitlab issue
- 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 requires manually compiling and inserting the libzkgroup binary. The same process outlined for Signald applies. (Note, this is not required with version 0.6.12 as used by
purple-signald
) - 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:
- Register an account using
signal-cli
- Copy the content of
~/.local/share/signal-cli/data/<phone number>
to another file. - Replace all quotes with
"
. - Remove any newlines in the file.
- 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.
- 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.