Signal is an open-source messaging application that provides end-to-end encrypted instant messaging, voice calls, and video calls.
Contents
Installation
Signal is not currently packaged on Debian. Upstream (Signal Technology Foundation, Signal Messenger LLC) provides Debian packages and AppImages on its download page. They include installation instructions.
Known problems
Signal generally works well on Debian trixie. The following section documents known issues that may affect some systems. Tested using the provided Debian packages.
Not sending/receiving messages after screen lock
When using the LXDE desktop environment, the default screen locker may be light-locker, provided by the package of the same name.
In some cases, after the session has been locked for a while, Signal Desktop may stop sending or receiving messages.
A possible workaround is to replace light-locker with xscreensaver:
$ sudo apt install xscreensaver $ sudo apt remove light-locker $ xscreensaver-settings
Use xscreensaver-settings to configure screen locking as required. You may need to log out and back in for the change to take effect.
Not sending/receiving messages after suspend-resume cycle
On some systems, after resuming from suspend, Signal may stop sending and receiving messages until it is restarted.
One workaround is to restart Signal automatically when the network connection is re-established. This is a workaround with at least one problem: unsent messages may be lost, but it avoids having to restart Signal manually after every suspend/resume cycle.
If using NetworkManager on your Debian, create a file in /etc/NetworkManager/dispatcher.d/90-restart-software with the following contents:
Then, create the file /home/$USER_NAME/bin/restart-apps-after-connecting.sh with the following contents:
1 #!/bin/sh
2
3 # Script referenced from /etc/NetworkManager/dispatcher.d/90-restart-software
4
5 USER_ID=$(id -u "$USER")
6
7 export DISPLAY=:0
8 export XAUTHORITY="/home/$USER/.Xauthority"
9 export XDG_RUNTIME_DIR="/run/user/$USER_ID"
10 export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$USER_ID/bus"
11 export HOME="/home/$USER"
12 export USER="$USER"
13 export LOGNAME="$USER"
14 export LANG=C.UTF-8
15 export PATH="/usr/local/bin:/usr/bin:/bin"
16
17 restart_if_running() {
18 name="$1"
19 cmd="$2"
20
21 if pgrep -u "$USER" -f "$name" >/dev/null; then
22 pkill -u "$USER" -f "$name" || true
23
24 timeout=5
25 end=$(( $(date +%s) + $timeout ))
26
27 while pgrep -u "$USER" -f "$name" >/dev/null
28 do
29 if [ "$(date +%s)" -ge "$end" ]
30 then
31 echo "Timed out waiting for $name" >&2
32 break
33 fi
34
35 sleep 0.1
36 done
37
38 setsid "$cmd" </dev/null >>"/tmp/restart-$name.log" 2>&1 &
39 fi
40 }
41
42
43 restart_if_running signal-desktop /usr/bin/signal-desktop
Adjust it for your case (specially the top environment variables).
