Flatpak is one of the best things that happened to desktop Linux.
It is also one of those things that people can easily turn into a mess.
On paper, the idea is simple: install Linux apps in a more universal way. You do not need to care if you are using Fedora, Debian, Arch, openSUSE, Linux Mint, Pop!_OS, or some weird distribution you installed at 2 AM because YouTube told you it was “minimal and beautiful.”
You open the software center, install the app, and it works.
That is the dream.
And honestly, Flatpak gets pretty close.
But there is a catch: Flatpak is not magic. It does not automatically make every app safe. It does not automatically make every app better than a native package. It does not mean you should install everything as a Flatpak and forget how your system works.
Flatpak is a tool. A very good one. But like every good tool, you need to use it properly.
This article is about the practical way to use Flatpak without breaking your Linux setup, duplicating half your apps, or giving every random program access to your entire home folder.
What Flatpak Actually Solves
Before talking about best practices, we need to be fair.
Flatpak solves a real problem.
Traditional Linux packaging is fragmented. A developer may need to package an app for Debian, Ubuntu, Fedora, Arch, openSUSE, and other distributions. Each distro has different library versions, different rules, different repositories, and different update cycles.
That is annoying for developers.
It is also annoying for users.
Sometimes the version in your distro repository is old. Sometimes the app is not available at all. Sometimes the developer only supports one package format. Sometimes you install a random .deb file from a website and hope it does not do something stupid.
Flatpak tries to make desktop app distribution less painful.
The basic idea is:
- app developers can ship one package for many distributions
- apps can use shared runtimes instead of depending completely on your host system
- apps can run with some level of sandboxing
- users can get newer desktop applications without replacing their entire operating system
- Flathub becomes something close to an “app store” for Linux
This is especially useful for desktop apps like:
- OBS Studio
- Kdenlive
- GIMP
- Inkscape
- Audacity
- LibreOffice
- Bottles
- Telegram
- Discord
- Spotify
- Steam
- VLC
- Flatseal
For these kinds of graphical applications, Flatpak often makes sense.
For system-level tools, drivers, shells, compilers, terminal utilities, Docker, VPN clients, and low-level development tools, it often does not.
That distinction matters.
Best Practice 1: Use Flatpak Mostly for Desktop Apps
This is probably the most important rule.
Use Flatpak for desktop applications.
Do not try to make Flatpak your entire operating system.
A good Flatpak candidate is usually an app you launch from your desktop environment:
- video editors
- audio editors
- image editors
- chat apps
- browsers
- media players
- office apps
- game launchers
- note-taking apps
- creative tools
A bad Flatpak candidate is usually something that needs deep system integration:
- kernel tools
- drivers
- VPN daemons
- package managers
- shells
- compilers
- Docker
- Android platform tools
- system monitors that need full system access
- command-line tools you use inside scripts
Can some of these exist as Flatpaks? Yes.
Should you use them that way by default? Not really.
This is where many people go wrong. They hear “Flatpak is the future” and then install everything through Flatpak. Then they wonder why file access is weird, why command-line integration is annoying, why plugins do not see the same paths, why themes look different, and why two versions of the same app exist.
Flatpak is excellent for apps.
It is not a replacement for understanding your system.
Best Practice 2: Prefer Flathub, But Do Not Turn Off Your Brain
Flathub is the main place most people get Flatpak apps.
For normal users, this is good. It gives Linux something that finally feels close to an app store. You search for an app, install it, update it, and move on.
But there are a few things to understand.
Not every app on Flathub is packaged directly by the original developer. Some are official. Some are maintained by the community. Some are verified. Some are not.
A verified app on Flathub means the developer has confirmed ownership of the app ID. That is useful. It gives you a signal that the app is more likely to be controlled or approved by the real developer.
But “verified” does not mean “audited by angels.”
It does not mean the app is bug-free. It does not mean it has perfect permissions. It does not mean you should install anything blindly.
My rule is simple:
- if the app is verified, that is a good sign
- if the app is popular and actively maintained, that is a good sign
- if the app has weird permissions, check why
- if the app is unknown and asks for broad filesystem access, be careful
- if you are installing security-sensitive tools, check the upstream project too
Flatpak reduces some risks, but it does not remove common sense from the equation.
Best Practice 3: Check App Permissions
This is where Flatpak becomes interesting.
Flatpak apps usually run in a sandbox. That means they do not automatically get unlimited access to your whole system in the same way a normal native package might.
But the sandbox is not always strict.
Apps can request permissions. Some need filesystem access. Some need network access. Some need access to devices, audio, webcams, sockets, or specific desktop features.
You can check permissions from the command line:
flatpak info --show-permissions com.example.App
For a real app, replace the ID with the actual Flatpak app ID.
For example:
flatpak info --show-permissions org.gimp.GIMP
This gives you a better idea of what the app can access.
The beginner mistake is thinking:
It is Flatpak, so it is automatically safe.
No.
The better way to think is:
It is Flatpak, so I have more control and better isolation options than with many traditional packages.
That is the correct mindset.
Best Practice 4: Install Flatseal
Flatseal is one of the first apps I install on any Flatpak-heavy Linux setup.
It is a graphical permission manager for Flatpak apps.
Instead of memorizing every flatpak override command, you can open Flatseal, choose an app, and change what it can access.
This is especially useful for things like:
- allowing a video editor to access your Videos folder
- allowing an image editor to access your Pictures folder
- removing unnecessary filesystem access
- checking if an app has access to your home folder
- debugging why an app cannot see a file
- fixing weird permission problems without guessing
Install it:
flatpak install flathub com.github.tchx84.Flatseal
Then launch it:
flatpak run com.github.tchx84.Flatseal
Flatseal makes Flatpak usable for normal people.
Without it, permissions are still manageable, but you will spend more time in documentation and terminal commands.
Best Practice 5: Do Not Give Every App Full Home Folder Access
This is the big one.
A lot of people get annoyed when a Flatpak app cannot see some random folder. Their first reaction is to give the app access to the entire home directory.
Something like:
flatpak override --user --filesystem=home com.example.App
This works.
It is also often lazy.
If Kdenlive only needs your video project folder, give it that folder.
For example:
flatpak override --user --filesystem=~/Videos org.kde.kdenlive
If GIMP only needs your Pictures folder:
flatpak override --user --filesystem=~/Pictures org.gimp.GIMP
If an app only needs one project directory, give it that one directory.
This is the whole point of using a sandboxed app format. If you give every application full access to everything, you are basically turning Flatpak into a more complicated way of installing normal apps.
The practical rule:
Give an app the access it actually needs, not the access you are too lazy to think about.
For casual users, yes, full home access may be convenient. But if you care about security, privacy, or just having a clean system, try to be more specific.
Best Practice 6: Understand Portals
Flatpak uses something called portals.
The simple explanation: portals let sandboxed apps ask the desktop for access to specific things, instead of having permanent direct access to everything.
A common example is the file picker.
An app does not need full access to your entire filesystem just to open one file. It can use the desktop file picker. You choose the file, and the app gets access to that file.
This is a better model.
But it can also confuse users.
Sometimes an app can open a file you selected through the file picker, but it still does not have general access to the folder. That is not necessarily a bug. That is the permission model working.
So when a Flatpak app behaves differently from a traditional app, do not immediately assume it is broken.
Ask:
- did I open the file through a portal?
- does the app have static filesystem access?
- did I give it permission through Flatseal?
- is it trying to access a folder directly?
- is the app old and not using portals properly?
This is why newer GTK and KDE apps usually behave better as Flatpaks than some older or weirdly packaged applications.
The ecosystem is still improving.
Best Practice 7: Do Not Install the Same App Three Different Ways
This is a classic Linux mess.
You install Firefox from your distro repository.
Then you install Firefox as a Flatpak.
Then maybe your distro also has a Snap version.
Then you wonder which one is actually launching, why the profile is different, why downloads go somewhere weird, why extensions behave differently, and why your desktop menu has duplicate entries.
Do not do this.
Pick one format per app unless you have a specific reason.
For normal GUI apps, I usually choose like this:
| App Type | Best Option |
|---|---|
| Desktop creative apps | Flatpak is usually good |
| System tools | Native package |
| Development tools | Native package, language manager, or container |
| CLI utilities | Native package |
| Proprietary GUI apps | Flatpak can be convenient |
| Apps needing deep desktop integration | Test both Flatpak and native package |
| Browsers | Depends on distro and your needs |
There is no universal answer.
But having three versions of the same app is almost always a bad idea.
It makes troubleshooting annoying and your system dirtier than it needs to be.
Best Practice 8: Use the Command Line When It Helps
You do not need to become a terminal wizard to use Flatpak.
But a few commands are worth knowing.
List installed Flatpak apps:
flatpak list
Update everything:
flatpak update
Search for an app:
flatpak search obs
Install an app:
flatpak install flathub com.obsproject.Studio
Run an app:
flatpak run com.obsproject.Studio
Show app permissions:
flatpak info --show-permissions com.obsproject.Studio
Remove unused runtimes:
flatpak uninstall --unused
List remotes:
flatpak remotes
Add Flathub if your distro does not include it by default:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
These commands are enough for most users.
You do not need to memorize every advanced option. But you should know how to inspect your system when something behaves strangely.
Best Practice 9: Clean Up Unused Runtimes
Flatpak apps use runtimes.
That is part of the design. Instead of each app depending directly on your distribution libraries, apps can use shared runtime environments like GNOME, KDE, Freedesktop, and others.
This is good for compatibility.
It can also use disk space.
After removing several apps, you may have unused runtimes left behind. Usually this is not a big disaster, but on older laptops or small SSDs it matters.
Run:
flatpak uninstall --unused
This removes runtimes and extensions that are no longer needed.
I would not obsess over this every day. But running it occasionally is a good habit.
Especially if you test a lot of apps.
Best Practice 10: Be Careful With Themes
Flatpak theming is better than it used to be, but it can still be weird.
Sometimes Flatpak apps do not follow your system theme. Sometimes they look slightly different. Sometimes they need a matching theme installed as a Flatpak runtime extension. Sometimes the problem is GTK. Sometimes it is Qt. Sometimes it is your desktop environment doing something strange.
Welcome to Linux.
My practical advice:
- do not over-customize your desktop if you want fewer problems
- use common themes if you care about Flatpak compatibility
- expect some apps to look slightly different
- do not waste three hours fixing one button color unless you are making a YouTube video about suffering
If you use GNOME, Flatpak usually feels more natural.
If you use KDE, it is also pretty good, especially with KDE apps.
If you use a heavily customized XFCE, Cinnamon, i3, or some macOS-like Frankenstein setup, expect more visual weirdness.
That does not mean Flatpak is bad. It just means Linux desktop theming is still Linux desktop theming.
Best Practice 11: Know When Native Packages Are Better
Flatpak is not always the best version of an app.
Sometimes the native package is better because it integrates more deeply with the system.
Examples:
- browser integration with password managers
- file manager extensions
- shell integration
- hardware tools
- virtualization tools
- IDEs needing compilers and SDKs
- Android development tools
- apps that need access to system services
- tools that work with udev rules
- apps that need plugins from system directories
For example, if you are doing Android development, security testing, or QA automation, I would not try to manage everything through Flatpak.
ADB, Java, Gradle, Python, Node, Docker, Appium, Playwright, and similar tools are usually better installed through native packages, official installers, language managers, or containers.
Flatpak can be great for the GUI around your workflow.
It is not always great for the low-level tools inside your workflow.
Best Practice 12: Use Flatpak for Apps You Want Newer Than Your Distro Provides
This is one of the best reasons to use Flatpak.
If you are on Debian Stable, Linux Mint, or another conservative distribution, your system packages may be older. That is not always bad. Stability matters.
But for desktop apps, old versions can be annoying.
A newer version of OBS, Kdenlive, GIMP, Bottles, or HandBrake may have features you actually need.
Flatpak lets you keep the base system boring and stable while getting newer desktop applications.
That is a very good setup.
For many users, the ideal Linux desktop is not “everything bleeding edge.”
It is more like:
- stable base system
- newer desktop apps through Flatpak
- development tools managed separately
- fewer random third-party
.debfiles - fewer weird PPAs
- less dependency chaos
That is where Flatpak makes a lot of sense.
Best Practice 13: Avoid Random Third-Party Packages When Flatpak Exists
Before Flatpak became common, Linux users often installed apps through random methods:
- third-party
.debfiles - AppImages from GitHub releases
- PPAs
- custom shell scripts
- vendor repositories
- manual tarballs
- weird install commands copied from forums
Sometimes that is still necessary.
But if a good Flatpak exists, I usually prefer it for graphical apps.
Why?
Because it is easier to remove. It is easier to update. It is less likely to modify random parts of your base system. It is easier to inspect. It is more consistent across distributions.
A random install script can do anything.
A Flatpak still deserves caution, but at least the model is more predictable.
This matters if you reinstall often, distro-hop, test old laptops, or keep a clean system.
Best Practice 14: Do Not Pretend Flatpak Is Perfect Security
This is important.
Flatpak is not a full security guarantee.
It is not the same as running apps in separate virtual machines. It is not magic malware protection. It is not a reason to install sketchy software from unknown sources.
Flatpak gives you a sandboxing model and permission controls.
That is good.
But apps can still have access to things you allow. Apps can still use the network if they have network permission. Apps can still read files you give them. Apps can still abuse broad permissions if you give broad permissions.
Also, some apps need wide access to work properly.
A browser, video editor, game launcher, or IDE may not be locked down in the way you imagine.
So the correct security take is:
Flatpak can reduce risk and improve control, but it does not remove the need to trust the software you install.
That is boring, but true.
Security is usually boring.
Best Practice 15: Keep Your Base System Simple
The best Flatpak setup is not complicated.
You do not need five package formats fighting each other.
A clean practical setup could look like this:
- system updates through your distro package manager
- GUI apps through Flatpak where it makes sense
- command-line tools through the distro package manager
- development tools through language-specific managers when needed
- containers for isolated dev environments
- Flatseal for Flatpak permissions
- occasional cleanup with
flatpak uninstall --unused
That is it.
You do not need to make Linux harder than it already is.
Flatpak vs Snap vs AppImage
People love turning this into a religious war.
I think that is mostly a waste of time.
Each format has a place.
| Format | Good For | Main Problem |
|---|---|---|
| Flatpak | Desktop Linux apps | Permissions and integration can be confusing |
| Snap | Ubuntu-centered app delivery and server-ish use cases | Centralized store, slower startup complaints, mixed reputation |
| AppImage | Portable single-file apps | Updates, sandboxing, and integration are inconsistent |
| Native packages | System tools and deep integration | Versions depend on distro |
| Manual install scripts | Last resort | Can be messy and risky |
For my own desktop Linux use, I usually prefer Flatpak for GUI apps.
I use native packages for system tools.
I use AppImage only when there is no better option or when I want something portable.
I do not hate Snap, but outside Ubuntu I rarely feel a strong reason to use it.
That is not ideology. That is just practical.
My Recommended Flatpak Setup
If I were setting up a normal Linux laptop today, I would do something like this.
Install Flathub:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Install Flatseal:
flatpak install flathub com.github.tchx84.Flatseal
Install common desktop apps as Flatpaks:
flatpak install flathub org.gimp.GIMP
flatpak install flathub org.kde.kdenlive
flatpak install flathub com.obsproject.Studio
flatpak install flathub org.videolan.VLC
Then check permissions in Flatseal.
For media work, I would allow access only to the folders I actually use:
~/Videos~/Pictures~/Music- maybe a specific
~/Projectsfolder
I would not automatically give every creative app full access to my entire home directory.
For development and QA tools, I would mostly stay outside Flatpak:
- Java
- Node
- Python
- Android SDK
- ADB
- Docker
- Git
- Playwright
- Appium
- command-line tools
That gives you the best of both worlds: clean desktop apps and a system that still behaves like a proper Linux workstation.
Common Flatpak Mistakes
Here are the mistakes I see all the time.
Installing Everything as Flatpak
Bad idea.
Use Flatpak where it makes sense.
Giving Every App Full Filesystem Access
Convenient, but it defeats much of the point.
Mixing Flatpak, Snap, AppImage, and Native Versions of the Same App
This makes troubleshooting miserable.
Blaming Flatpak for Every Linux Desktop Problem
Sometimes the problem is Flatpak.
Sometimes the app is badly packaged.
Sometimes your theme is weird.
Sometimes your distro is old.
Sometimes Linux is just being Linux.
Ignoring Permissions
If you never check permissions, you are not really using one of Flatpak’s biggest advantages.
Expecting Flatpak to Fix Bad Apps
A badly designed app is still a badly designed app.
Flatpak can package it. It cannot make it good.
So, Should You Use Flatpak?
Yes.
But use it intelligently.
Flatpak is one of the most practical ways to install desktop applications on Linux today. It is especially useful if you want newer GUI apps without turning your base system into a dependency experiment.
For normal users, it makes Linux less scary.
For creators, it makes apps like OBS, Kdenlive, GIMP, and HandBrake easier to install.
For distro-hoppers, it makes setups more consistent.
For people using stable distributions, it gives access to newer desktop software.
But it is not a replacement for understanding permissions. It is not perfect security. It is not always better than a native package. And it is definitely not a reason to install ten versions of the same app.
The right way to use Flatpak is simple:
- use it mainly for desktop apps
- prefer Flathub
- check permissions
- install Flatseal
- avoid broad filesystem access
- clean unused runtimes
- do not duplicate apps across package formats
- keep system tools native
- treat sandboxing as helpful, not magical
That is the healthy Flatpak workflow.
Not hype. Not fear. Just a practical way to install Linux apps without breaking your system.