A common complaint against Flatpak users have is that it does not have a native look because it doesn’t match your hosts Gtk theme. As of now this will hopefully become an issue of the past.

Background

For those not familiar with Flatpak a brief summary on why themes didn’t work in the first place is that all flatpaks are sandboxed and do not have the ability to read data files or libraries in /usr . This is done so it is portable across a wide range of distributions in a reproducable environment but has the downside of not being able to pick up themes.

The solution to this was simply to package themes as relying upon the host to have the correct version for every flatpak defeats the portability benefits it provides. These themes are provided as extensions to the Gnome runtime.

Installing themes

The current themes are packaged in the flathub repository which you can add by running:

flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo

To see a list of currently packaged themes you can run:

flatpak remote-ls flathub | grep org.gtk.Gtk3theme

The list as of posting is:

You can install them with flatpak install flathub org.gtk.Gtk3theme.Foo .

These themes should cover most KDE, Unity, Budgie, and some XFCE users. If there are any other popular themes you would like to request feel free to tell me on IRC or Reddit. If you are a theme author and would like to maintain it yourself stop by #flatpak on freenode and we can help you make one.

Notes

This requires Flatpak 0.8.4+ and applications using up to date org.gnome.Platform 3.24+.

The same solution exists for icon themes and more will be packaged soon. They can be searched with flatpak remote-ls flathub | grep org.freedesktop.Platform.Icontheme

This process will likely be automated by Gnome-Software at some point. The flatpak tool doesn’t depend upon Gtk so it will not automatically detect your theme.

Themes are picked up via GtkSettings, which means you require a settings-daemon running to set this. On GNOME this will already be running but for other desktops you can run gsd-xsettings directly in your libexec directory provided by gnome-settings-daemon .