Post

How to Properly Use Fedora Atomic Desktops: Silverblue, Kinoite, and Bazzite Explained

Learn the proper way to use Fedora’s atomic desktop variants—Silverblue, Kinoite, and Bazzite. This guide explains their unique features, package management, container workflows, and tips for a smooth, efficient experience on immutable Fedora desktops.

How to Properly Use Fedora Atomic Desktops: Silverblue, Kinoite, and Bazzite Explained

I have been using Fedora Atomic distro since Fedora released Kinoite with Fedora 35. For first few weeks it felt odd. I couldn’t install any apps using sudo dnf install htop. Fedora suggests that I use toolbox. I was introduced to podman.

Fedora devs want me to not install anything to the system. And use container based approach. They tell use to use flatpak apps, appimages or binaraies. I couldn’t understand the benefit.

One thing is clear my system is saved from all the thousands of dependencies that comes along with a app.

I discovered different ways to use apps and developments. I will share them below.

Flatpak

Fedora Atomic heart and soul is flatpak. Fedora defaults to flatpak apps. If you open Fedora software center or discover. You would get recommanded flatpak apps. Sometime Fedora defaults to Fedora flatpak repo. But a better way to use Flatpak is to use Flatpak central repo. Which is flathub.

1
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

If you see that Fedora has filtered flathub. You can remove the filter using

1
flatpak remote-modify --no-filter --enable flathub

You will notice that all default apps comes from fedora remote.

1
flatpak list

You can install these apps from flathub. It can help reduce runtime storage. Run this command to reinstall fedora flatpak repo applications with ones from flathub

1
flatpak install --reinstall flathub $(flatpak list --app-runtime=org.fedoraproject.Platform --columns=application | tail -n +1 )

This is optional. You can remove fedora flatpak repo entirely.

1
flatpak remote-delete fedora

Reinstall fedora remote using flatpak remote-add --if-not-exists fedora oci+https://registry.fedoraproject.org

Now install any app that is available in flathub.

1
flatpak install flathub com.google.Chrome

Appimage

Using appimage is straight forward. Download an appimage. And double click to use it. May need executable permission.

There are some apps avilable to integrate appimages.

Gear Lever

Gear Lever from flathub can manage appimages and integrate into system.

1
flatpak install flathub it.mijorus.gearlever

AppImageLauncher

AppimageLauncher provide some way to integrate appimage. The downside is this is a service that is always running in background.

They have 2 release. Traditional deb, rpm and a lite version using appimage.

Let’s see how to use lite appimage version.

Download lite appimage from here.

Make it executable. And install

1
2
chmod +x ./appimagelauncher-lite-3.0.0-alpha-4-gha275-x86_64.AppImage
./appimagelauncher-lite-3.0.0-alpha-4-gha275-x86_64.AppImage install

You should see AppImageLauncher Settings app in your app menu.

Put any appimage in ~/Applications folder. Your appimage will be auto integrated to the system.

Toolbox

Some apps do not have any flatpak and appimage release. These are hard to use. The better way to use these apps is using toolbox.

An app is MegaSync. This MegaSync app has no flatpak or appimage release. But MegaSync has traditional rpm release. We can use toolbox to use such apps.

Let’s create a toolbox named apps.

1
toolbox create --release f43 --container apps

Enter this toolbox using

1
toolbox enter apps

Now download the megasync rpm from their website. And install it from toolbox.

1
sudo dnf install ~/Downloads/megasync-Fedora_43.x86_64.rpm

Export the app.

Get the CONTAINER_ID of container apps

1
podman ps -a --filter "name=apps"

Check the .desktop if available inside container.

1
podman exec CONTAINER_ID ls /usr/share/applications

export the .desktop

1
podman cp CONTAINER_ID:/usr/share/applications/megasync.desktop ~/.local/share/applications/megasync.desktop

export the .icon

1
2
mkdir -p ~/.local/share/icons/hicolor/128x128/apps/
podman cp CONTAINER_ID:/usr/share/icons/hicolor/128x128/apps/mega.png ~/.local/share/icons/hicolor/128x128/apps/

Let’s modify the .desktop file .local/share/applications/megasync.desktop. We just have to change the executable to

1
Exec=toolbox run --container apps /usr/bin/megasync

We can set the .desktop to autostart by copying the file to ~/.config/autostart/.

Podman Quadlet

Podman has quadlet feature. Which integrates with systemd. Allows you to run container based applications.

All you have to do is create a .container quadlet file.

Let’s try one with Qbittorrent quadlet.

Create qbittorrent-nox.container in ~/.config/containers/systemd/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[Container]
Image=docker.io/qbittorrentofficial/qbittorrent-nox:latest

AutoUpdate=registry
PublishPort=8080:8080
PublishPort=6881:6881
PublishPort=6881:6881/udp
Timezone=Asia/Dhaka

Environment=PUID=1000
Environment=PGID=1000
# Set the port for qBittorrent Web UI access at http://localhost:8080
# You can change 8080 to any unused port you prefer.
Environment=QBT_WEBUI_PORT=8080

# Persistent Podman config storage (any local path, e.g., Volume=%h/.config/qBittorrent:/config)
Volume=qbittorrent-config:/config
Volume=%h/Downloads:/downloads

# SELinux considerations for Fedora/RHEL:
# - Use :Z on volume mounts to automatically relabel directories for container access.
#   Example:
#     Volume=%h/Downloads:/downloads:Z
# - If you prefer to manage SELinux labeling manually or want to disable relabeling:
#     SecurityLabelDisable=true

User=root
UserNS=keep-id
Network=host

[Service]
Restart=on-failure
TimeoutStartSec=900

[Install]
WantedBy=default.target

start the quadlet

1
2
systemctl --user daemon-reload
systemctl --user start qbittorrent-nox

You can find more quadlets in my repo, dwedia, herzenschein, appstore.

You can also convert a podman command to a quadlet using podlet.

Brew

Another way to use cli apps using brew.

Cli apps like htop, gh, yt-dlp can be installed using brew.

Check out How to install Homebrew (Brew / LinuxBrew) in Fedora Silverblue & Kinoite for more about installing Linuxbrew.

This post is licensed under CC BY 4.0 by the author.