Install Signal Desktop in Distrobox Instead of Flatpak

Signal Desktop is available as a flatpak. Unfortunately, that flatpak is unofficial. That bothered me, so I looked for a way to get the official Signal Desktop installed. It turns out, it’s fairly easy. I’m documenting that process here in case anyone else wants to go this route. In a nutshell, install a Debian-based linux distribution in a DistroBox and then install the official Signal version there:

  1. DistroShelf:
    1. It’s possible to create a distrobox through the command line, but Bazzite already includes DistroShelf (which is a GUI for that). So, I opened DistroShelf and hit the plus sign (“+”) at the upper-left to create a distro. Under the Guided tab, I went to Base Image, searched for Debian (any Debian-based distro will do (such as Mint or Ubuntu) so you could search for those), and chose debian-toolbox:latest (choose whatever you’d like from whatever Debian-based distro you like). I gave it a name, kept everything else at default and hit Create.
    2. When it was done installing, I went to Status and clicked on the terminal icon to open a terminal in Debian. At Signal >> Download Signal , I copied, pasted into that terminal, and ran each of the 3 commands for installing to linux (install the signing key, add the repository, update all and install Signal).
    3. Once Signal was installed, I closed the terminal and went to Quick Actions > Upgrade Container.
    4. To get Signal to show up in Bazzite, I went to Quick Actions > Applications > Signal, clicked on the hamburger icon and told it to Export App.
  2. To get Signal to start automatically, I went to Start > System > System Settings > Autostart > Add New > Application, searched for Signal and added it. After rebooting the computer, Signal started up and was working fine.

Yes, I run mine in distrobox as well. It’s the only way to run it outside of flatpak on non Debian type systems.

I’m now looking into a method of installing/recreating a Debian-based Signal distrobox via the command line. First, I had to come up with a manifest file. Here’s my first stab at that (note – don’t trust my init_hooks from Signal – double-check from the source):

[testdistrobox]
# any debian-based distribution will do #
image=debian:latest
# minimal debian distributions don't have curl? #
additional_packages="curl"
init=false
nvidia=false
# re-pull the image every time this runs #
pull=true
start_now=true
# These are from the "Download for Linux (Ubuntu and Debian-based)" area on https://signal.org/download/ #
init_hooks="curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg;"
init_hooks="cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null"
init_hooks="curl -o signal-desktop.sources https://updates.signal.org/static/desktop/apt/signal-desktop.sources;"
init_hooks="cat signal-desktop.sources | sudo tee /etc/apt/sources.list.d/signal-desktop.sources > /dev/null"
init_hooks="sudo apt update && sudo apt install signal-desktop"
exported_apps=signal-desktop

I temporarily stored that in my home directory in testdistrobox.ini. I did a dry-run create in the terminal with:

distrobox assemble create --file ~/testdistrobox.ini --dry-run

and there doesn’t appear to be any errors.

When I’m ready to actually use this, I’ll have to choose the actual distribution I want and create its own manifest file. The inital creation of that distrobox will be:

distrobox assemble create --file ~/[manifestfilename].ini

and when I want to re-create and replace the distrobox with a fresh copy, the command will be:

distrobox assemble create --replace --file ~/[manifestfilename].ini

At some point, I’ll have to figure out how to store that manifest out on Github.

If anyone has any experience with this, does that look reasonable/correct?