Flatpaks are extremely useful in many regards, but they take a fair bit of work to integrate properly into window manager environments. I decided to write a little guide to hopefully help other people trying to get them to work right on their desktops!
If there isn't a D-Bus session running on the host, most Flatpaks will refuse to open. This can be resolved by going in your
.xinitrc and using
dbus-launch to launch your window manager session. Here's what that looks like for me:
exec dbus-launch --exit-with-x11 bspwm
--exit-with-x11 bit, in essence, ensures that the D-Bus session ends when the X session does.
Launching Flatpak programs
Ensure that your program launcher supports desktop files; for instance,
dmenu doesn't support them by default, but I think there are ways to supplement that functionality.
rofi, which has this functionality built in when running it using the
drun mode, which is what I use!
A friend told me that you can add
$HOME/.local/share/flatpak/exports/bin to your
$PATH, which allows you to launch Flatpaks from the terminal by just typing the name of the Flatpak without needing to type
flatpak run. I haven't been able to try this for myself yet, but this might also expose Flatpaks to
dmenu without the need for an external script or program!
Making Flatpaks use your system GTK theme and font
At this point, you'll most likely notice that Flatpaks look really out-of-place on your system, particularly if you're not using Adwaita as your system GTK theme.
The official Flatpak documentation states that Flatpak reads the
GTK-theme D-Conf key to determine your system's current GTK theme, but this depends on you having the GNOME XSettings daemon (
gsd-xsettings) up and running on your system; ergo, just doing a global filesystem override to your themes directory won't actually do anything unless you're on a desktop environment or you have this manually set up on your own desktop :-(
1. Setting up the GNOME XSettings daemon
On Debian or Debian-based distributions, this is provided by the
gnome-settings-daemon package and
gsd-xsettings can be found at
/usr/libexec/gsd-xsettings; there might be a better way of doing this, but I launch it from my
.xinitrc with this line:
2. Installing your host GTK theme as a Flatpak
Next, you can install your host GTK theme as a Flatpak using pakitheme (huge shoutout to refi64 for making this!)
If you aren't running a Polkit authentication agent, you'll need to edit the script and remove
-y from the final Flatpak command.
3. Specifying your system GTK theme and font flags in D-Conf
You'll also have noticed by now that all of your non-Flatpak GTK applications are also using Adwaita; this is because your system is now using
gsd-xsettings to manage your GTK themes. This means that things like
lxappearance won't work anymore, instead you'll be using D-Conf to manage your GTK themes and system fonts. You can set your GTK theme either by using the D-Conf editor or by running the following:
gsettings set org.gnome.desktop.interface GTK-theme [your GTK theme here]
And you can set your fonts with the
monospace-font-name keys in the same directory. At this point, your Flatpaks should be using your system GTK theme and fonts!
This method is actually really neat because it auto-reloads your GTK theme and is scriptable; you can set an alias in your shell to change your GTK theme, stick it in your
sxhkdrc and make keybinds to easily change between light and dark GTK themes, or do whatever else comes to mind!