Hi.
Do you love AppImages? Awesome!
I don't.
I get it... portability, some kind of immutability, sure, but lack of availability shouldn't be insurmountable.
I recently distrohopped from Kubuntu to Fedora and was trying to figure out how to get Signal installed.
Only to discover- Signal doesn't provide an .rpm.
🤨
It does occur from time to time that a software distribution channel is excluded, but I didn't anticipate it would be something so widely used as Signal.
I Googled and I Googled and I found ... what the fuck is distrobox??
Ok, so I read through the instructions and they seemed... easy, even if said instructions definitely needed cleaning up. Put a distrobox on my box and then do a few things and boom? That was super appealing.
But I was also like... meeeh containers. Containers to me have always felt like a promise that didn't quite deliver in my space. Don't get me wrong, they're awesome for a great number of use cases, but anecdotally, they never fail to feel like a TUI VM with hexagrams, weird sacrifices, and -FlaGs that when accurately pronounced will unseal a mimic, or worse, summon a butterscotch pudding.
So I gave it a shot.
And now I've leveled up not only my application game, but also my knowledge game, and like a good netizen (that's still a thing, right? we're still saying that?) I thought to bring you a gift.
Yes, you, bestie. Duh.
I have this in a markdown, but you probably don't have my hand-rolled markdown reader that doubles as a not-browser-not-IDE-not-editor-with-markdown-preview-functionality markdown reader, so I'll just paste it below.
It does come with a small caveat which I feel obligated to disclose: It's not really that nerdy. It's just a couple of steps and you have Signal on Fedora. Also, the pattern is repeatable for anything else. Also, if you don't like doing it all in chunks, you can also just grab the final boss and throw it at your terminal and probably maybe you'll get Signal in Fedora. OK, now that I have that off my chest, here you: my copy pasta.
-----BEGIN MARKDOWN MESSAGE-----
Install Official Signal Desktop in Fedora
If you want the official Signal Desktop client on Fedora, the simplest supported approach is to run it inside a Debian/Debian-flavoured container using Distrobox and export it to your desktop menu.
Prerequisites
Install Distrobox on Fedora:
sudo dnf install -y distrobox
Create and enter a Distrobox container
Debian
distrobox create -n Debian -i debian:12
distrobox enter Debian -nw
Ubuntu
distrobox create -n Ubuntux -i ubuntu -ap libasound2t64
distrobox enter Ubuntux -nw
You are now inside the container.
Install Signal Desktop (inside the container)
Add Signal’s signing key
(
printf "\n%s\n" "Downloading and adding Signal signing key..."
wget -qO- https://updates.signal.org/desktop/apt/keys.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
printf "%s\n" "Signal signing key downloaded and added."
)
Add the Signal APT respository
(
printf "\n%s\n" "Downloading and adding APT respository source..."
sudo wget -qO /etc/apt/sources.list.d/signal-desktop.sources \
https://updates.signal.org/static/desktop/apt/signal-desktop.sources
printf "%s\n" "Signal APT respository source downloaded and added."
)
Install Signal Desktop
(
printf "\n%s\n" "Installing Signal..."
# Let's just shove the stdout to /yeet. We'll still get error messages.
# Is cool.
sudo apt-get update 1>/dev/null
sudo apt-get install -y signal-desktop 1>/dev/null
printf "%s\n" "Signal installed."
)
Export Signal to the Fedora app menu
Still inside the container:
distrobox-export --app signal-desktop
Signal will now appear in your host system’s application menu like a proper citizen.
Exit the container
exit
Notes
- Signal data is stored in:
~/.config/Signal/
- This directory is shared between the container and the Fedora host.
- The container can be reused for other Debian-only apps if desired.
You now have official Signal Desktop running on Fedora without Flatpak weirdness,
Snap side-eye, or AppImage nonsense.
All together now!
Or, just grab it and throw it all in at once! Nice, self-contained, all-in-oners. Paste and go!
Minor differences because now we're running in a non-interactive shell via heredoc. But, it's fine. You'll be fine. 😇
Debian in One
(
set -euo pipefail
sudo dnf install -y distrobox 2>/dev/null
NAME="Debian"
DISTRO="debian:12"
export PACKAGES="signal-desktop"
distrobox create -n $NAME -i $DISTRO
distrobox enter $NAME -nw -- bash <<"DONESIES"
#!/usr/bin/env bash
printf "\n%s\n" "Downloading and adding Signal signing key..."
wget -qO- https://updates.signal.org/desktop/apt/keys.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
printf "%s\n" "Signal signing key downloaded and added."
printf "\n%s\n" "Downloading and adding APT respository source..."
sudo wget -qO /etc/apt/sources.list.d/signal-desktop.sources \
https://updates.signal.org/static/desktop/apt/signal-desktop.sources
printf "%s\n" "Signal APT respository source downloaded and added."
printf "\n%s\n" "Installing Signal..."
# Let's just shove the stdout to /yeet. We'll still get error messages.
# Is cool.
sudo apt-get update 1>/dev/null
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y $PACKAGES 1>/dev/null
printf "%s\n" "Signal installed."
distrobox-export --app signal-desktop
DONESIES
)
Ubuntu in One
(
set -euo pipefail
sudo dnf install -y distrobox 2>/dev/null
NAME="Ubuntu"
DISTRO="ubuntu"
export PACKAGES="libasound2t64 signal-desktop"
distrobox create -n $NAME -i $DISTRO
distrobox enter $NAME -nw -- bash <<"DONESIES"
#!/usr/bin/env bash
printf "\n%s\n" "Downloading and adding Signal signing key..."
wget -qO- https://updates.signal.org/desktop/apt/keys.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
printf "%s\n" "Signal signing key downloaded and added."
printf "\n%s\n" "Downloading and adding APT respository source..."
sudo wget -qO /etc/apt/sources.list.d/signal-desktop.sources \
https://updates.signal.org/static/desktop/apt/signal-desktop.sources
printf "%s\n" "Signal APT respository source downloaded and added."
printf "\n%s\n" "Installing Signal..."
# Let's just shove the stdout to /yeet. We'll still get error messages.
# Is cool.
sudo apt-get update 1>/dev/null
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y $PACKAGES 1>/dev/null
printf "%s\n" "Signal installed."
distrobox-export --app signal-desktop
DONESIES
)
🇨🇦 Cautionary 🇨🇦
Before you embarass yourself, please understand that not everybody in the world spells the same as you. Further, understand that different nations have entirely different grammars from you.
Before you come for me, take a moment to consider that Canada is its own domain and is permitted, as such, to choose its own spellings.
Colour.
Rancour.
Beavour.
Respository.
Suspository.
You get it. You're smarter than that. This entire section was unnecessary.
🤗
-----END MARKDOWN MESSAGE-----
Nice, okay. That's over.
You know what? I still don't like containers. Well, that's not true, I don't love containers. But what I got out of this journey (is it still a journey if it took like 5 minutes to do?) was not just another sidequest (girl, you know I loves me some sidequests (maybe you're not a girl (but also maybe you don't know that I loves me some sidequests (we're all learning something today)))), but, OK you know what? I got me some sidequest that disentangentially rewarded me with getting what I wanted and not having to deal with containers, while simultaneously, although transparently, dealing with containers.
So, everybody wins. And the prize is: no butterscotch pudding.
You're welcome.
Top comments (2)
This is great! I loved the humor mixed with the practicality🤣. The step-by-step and all-in-one scripts are perfect.But I have question. Imagine I’m a kid, how would you explain what Distrobox actually is? I am still curious what’s happening under the hood.
Probably inadequately, since it requires you know what containers are.
So, I guess.. "it's like a lunchbox. but in another lunchbox. and that inner lunchbox has chunks of cheese in it that the outer lunchbox doesn't, but the inner lunchbox is accessible from the outer lunchbox, pursuant to physics and location and whatever Wiarton Willie predicts."
Ez.