From my experience, it's actually the best free, open source, and underrated email app on Linux, see its GitHub repo.
- The GUI is sharp and modern.
- It has an excellent built-in email language translator.
- It follows the system's light/dark theme (using a plug-in system).
- Many email providers are supported OOTB with single sign-on system.
- It is able to run in the background with the obvious
--backgroundoption. - Pro subscription is available for more features, see here!
But if you only use one email, an email client probably doesn't matter much 😂
Why Not Geary?
This is the go-to email client for many. With the adw-gtk3 theme and the Legacy (GTK3) Theme Scheme Auto Switcher GNOME extension, it blends very well with GNOME and other Adwaita apps. It also integrates with GNOME Online Accounts.
Unfortunately, its Flatpak version is plagued with a non-debuggable crashing issue (Geary issue #1679) to the point that it's unusable for me now.
And as I am on Fedora Silverblue, I am not willing to layer something like an email client... And I can't find a way to make it follow the system's light/dark theme in a container.
Therefore, I uninstalled it and never looked back.
Why not Evolution?
I don't want to use an email client with the 90s graphical interface.
Why not Thunderbird?
I want my email client to be an email client, not also a calendar client, etc.
Table of contents
- Install Distrobox and Podman
- Configure Distrobox to Use Podman
- Create a Container
- Enable x86-64-v3 Packages
- Install Required Packages
- [optional] Symlink fonts and fontconfig Directories on the Host
- Install Mailspring
- Export Mailspring to the Host
- Make Mailspring Follow the System’s Light/Dark Theme
- Make Mailspring Run In the Background on Startup and When It’s Closed
- Update the Container Automatically, Zero Maintenance!
1. Install Distrobox and Podman
The command will differ based on your specific package manager. Refer to your distro's docs. For example, on Arch based distros:
sudo pacman -S distrobox podman
On Fedora Silverblue, Podman is installed by default. The rest is layering Distrobox:
sudo rpm-ostree install distrobox
You need to reboot to use the layered package.
2. Configure Distrobox to Use Podman
echo 'container_manager="podman"' > ~/.config/distrobox/distrobox.conf
3. Create a Container
I use openSUSE container image because:
It has x86-x64-v3 packages.
It uses a rolling release model, so I don't have to manually major upgrading my container.
distrobox-create -i registry.opensuse.org/opensuse/distrobox:latest -n email-dbx -H ~/distrobox/email-dbx --volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket
Don't forget to add
--nvidiaif you have NVIDIA GPU. See more here.
4. Enable x86-64-v3 Packages
Enter the container and update all the packages first:
sudo zypper dup
Enable x86-64-v3 packages:
sudo zypper install patterns-glibc-hwcaps-x86_64_v3
5. Install Required Packages
sudo zypper install zenity mozilla-nspr mozilla-nss libcanberra-gtk3-module libwebkitgtk-6_0-4
6. [optional] Symlink fonts and fontconfig Directories on the Host
This is usually necessary for multilingual individuals if they want to change the font for a specific language.
Make the Required Directories Inside the Container
mkdir -p ~/.local/share
mkdir -p ~/.config/fontconfig
Symlink With the Host
ln -s /var/home/archerallstars/.local/share/fonts ~/.local/share/
ln -s /var/home/archerallstars/.config/fontconfig/conf.d ~/.config/fontconfig/
Replace
/var/home/archerallstarswith your home directory!
7. Install Mailspring
Simply go to the official download page and download the .rpm package.
You can install any .rpm packages locally (inside the container) with:
sudo zypper install ./<package-name>.rpm
For example:
sudo zypper install ./mailspring-1.16.0-0.1.x86_64.rpm
When you're being asked about the package's signature, just ignore it (hit
i).
8. Export Mailspring to the Host
distrobox-export -a mailspring
You should see the app's icon on your app drawer on the host now.
Exit the container with exit.
9. Make Mailspring Follow the System’s Light/Dark Theme
Many thanks to Andrew Minion and his Mailspring Automatic Light-Dark Mode plug-in.
Simply download or clone the repo directory, then copy the entire directory to ~/distrobox/email-dbx/.config/Mailspring/packages
Then, in the Mailspring app, from the menu bar:
Developer > Install a Plugin...
Choose the plug-in directory in ~/distrobox/email-dbx/.config/Mailspring/packages.
The plug-in works instantly without having to restart the app. You can try switching your system them between light and dark.
After this, you can hide the ancient menu bar, as shown in the screenshot below:
Toggle the menu bar with
Alt.
10. Make Mailspring Run In the Background on Startup and When It’s Closed
OOTB, Mailspring has the system tray that would let it runs in the background looking for new emails.
But it doesn't work well, at least in GNOME.
So, I disabled it and replacing it with a systemd service.
Create a User systemd Service on the Host
nano ~/.config/systemd/user/mailspring.service
Inside the service file:
[Unit]
Description=Mailspring
RequiresMountsFor=/run/user/1000/containers
[Service]
Type=exec
ExecStart=/usr/bin/distrobox-enter -n email-dbx -- mailspring --background
Restart=always
RestartSec=15
TimeoutStopSec=30
Create a Timer
nano ~/.config/systemd/user/mailspring.timer
Inside the timer file:
[Unit]
Description=Start Mailspring service with some delay.
[Timer]
OnStartupSec=40
RandomizedDelaySec=10
Persistent=true
[Install]
WantedBy=timers.target
Then, enable the timer:
systemctl --user daemon-reload && systemctl --user enable mailspring.timer
11. Update the Container Automatically, Zero Maintenance!
This will automatically update all rootless Distrobox containers on your system!
Create a User systemd Service on the Host
nano ~/.config/systemd/user/dbx-upgrade.service
Inside the service file:
[Unit]
Description=Upgrade all Distrobox containers
RequiresMountsFor=/run/user/1000/containers
StartLimitBurst=3
StartLimitIntervalSec=600
[Service]
Type=exec
ExecStart=sh -c "distrobox-upgrade --all"
Restart=on-failure
RestartSec=60
Create a Timer
nano ~/.config/systemd/user/dbx-upgrade.timer
Inside the timer file:
[Unit]
Description=Start Distrobox containers upgrade service with some delay.
[Timer]
OnStartupSec=45
RandomizedDelaySec=15
Persistent=true
[Install]
WantedBy=timers.target
Reload and enable the timer:
systemctl --user daemon-reload && systemctl --user enable dbx-upgrade.timer
Cover Photo by Utsav Srestha on Unsplash

Top comments (0)