How to apply any theme to a Flatpak application

Flatpak applications are sandboxed and hence cannot access any other files on your system, while this is a good practice for privacy reasons, there are downsides to using Flatpaks as well. The downside is all the Flatpak applications take up large space on your disk, and they do not respect your Desktop theme.

While you could attach more storage to your PC or live without a few 100 megabytes on your disk, you surely cannot live without the beautiful Dark mode on any application.

Flatpak Application Theming Is Different From The GTK Themes
Flatpak Application Theming Is Different From The GTK Themes

In this tutorial, I will show you how to set up GTK or QT themes on Flatpak applications via several methods.

Also read: How to set up and enable Flatpaks on Linux

Why do Flatpak applications not respect your theme?

As mentioned earlier, Flatpak applications run inside a ‘container’ and they do not have any access to the host file system, physical devices, or network if you haven’t given them any appropriate permissions. You can manually give the applications permission to access your theme and icons folder in order to detect the themes and apply them.

Now, you can do so using either the command line or using the Flatseal application from Flathub.

Applying GTK themes via the command line

Let’s now go over the steps to apply GTK themes via the command line to a Flatpak application.

Give appropriate permission to Flatpaks

Themes are stored locally for any user in the ~/.themes directory and the icons are stored in ~/.icons folder. But if you have installed any theme from the package manager (DNF, Pacman or APT) then they are stored in /usr/share/themes and /usr/share/icons respectively.

Now, you cannot give Flatpak applications the access to /user/share/themes and /usr/share/icons directory because it is blacklisted according to the Flatpak documentation. So let’s try giving it access to local themes and icons directories instead, from the Terminal, type the following commands :

sudo flatpak override --filesystem=$HOME/.themes
sudo flatpak override --filesystem=$HOME/.icons
Giving Theme And Icon Directory Permission To Flatpak Applications
Giving Theme And Icon Directory Permission To Flatpak Applications

You can also give permission to the Individual applications if you do not like giving all the Flatpaks installed on your system permission to see the content of ~/.themes and ~/.icons directory. You can do so by typing the command like this along with the application ID of the application:

sudo flatpak override org.videolan.VLC --filesystem=$HOME/.themes
sudo flatpak override org.videolan.VLC --filesystem=$HOME/.icons

Specify the Theme and Icon set

Now that you have given appropriate permissions to the application, you can set up any theme located in your ~/.themes and ~/.icons directories. To do that, you have to type the following command:

sudo flatpak override --env=GTK_THEME=THEME-NAME 
sudo flatpak override --env=ICON_THEME=ICON-THEME-NAME 
Setting Up GTK Icon And Themes For A Flatpak Application
Setting Up GTK Icon And Themes For A Flatpak Application

Now, simply restart your application, and you will see that your specified theme has been applied.

Tokyonight Dark Theme On Dialect Flatpak Application
Tokyo night Dark Theme On Dialect Flatpak Application

Similarly, you can set up Individual themes for each Flatpak application if you specify the application ID as well:

sudo flatpak override org.videolan.VLC --env=GTK_THEME=THEME-NAME 
sudo flatpak override org.videolan.VLC --env=ICON_THEME=ICON-THEME

Applying Themes with the Flatseal application (Graphical Method)

If you don’t like using the Terminal or you are not comfortable typing commands every time you change your system theme, then the Flatseal application might be the solution for you. It can help you manage the permissions for the Flatpak application in a Graphical way. You can install it from FlatHub by typing:

flatpak install flathub com.github.tchx84.Flatseal
Installing Flatseal Application
Installing Flatseal Application

Now, launch the application from the Application Grid/Menu and then go to the ‘File Permissions’ section. Now, add ~/.themes and ~/.icons in the ‘Other Files’ menu like this:

Managing Permissions Of All The Flatpaks
Managing Permissions Of All The Flatpaks

Now, navigate to the ‘Environment’ section and add your theme there like this:

GTK_THEME=THEME-NAME
ICON_THEME=ICON-THEME-NAME
Add Environtmen Variable To All The Flatpak Applications
Add Environment Variable To All The Flatpak Applications

Restart all the applications for changes to take effect.

Similarly, you can set up the theme for each individual application by going through the environment variable of each application.

Summary

Hopefully, you have learned in this tutorial the methods of changing themes of Flatpak applications using either the Graphical or the command line method. Note that every time you change the system theme, you have to manually change the Flatpak theme as well.