Name Your Distro: Flatpaks irritatingly don’t follow desktop theme (written specific to KDE / Plasma-Desktop 6)

Brings back memories of being read the Ugly Duckling

This is not an issue with any Linux distro specifically, but with all distros in general. If anyone out there’s had this issue, I’m sure you’ve shared my pain. I’d struggled with getting flatpaks to follow the (dark) system theme I set for a while, and I finally just got it fixed, so I thought I’d run through the process real quick:

  1. make sure you’re setting a theme that has a flatpak version available (I chose adw-gtk3{,-dark})
  2. install the flatpak versions: as of writing, gtk3 flatpak themes are the only ones you need to download, but if your theme doesn’t include a gtk4 variant, YMMV
  3. install the gtk themes for your desktop environment and ensure they are in the proper location
  4. enable gtk themes in gsettings
  5. A couple last-ditch effort recommendations if 1-4 doesn’t work

Here’s the steps expanded:

Choose a theme you can get in a desktop version – a good place to see if you can find the theme you want is gnome-look.org. Make sure if you use both user and system flatpaks you have a theme for both (I personally only use userspace flatpaks from flathub to avoid complications) Here’s the current list of flatpak theme runtimes as of writing:

❯ clear && flatpak search --user --columns=app theme | grep org.gtk | sort -n
org.gtk.Gtk3theme.Adapta
org.gtk.Gtk3theme.Adapta-Brila
org.gtk.Gtk3theme.Adapta-Brila-Eta
org.gtk.Gtk3theme.Adapta-Eta
org.gtk.Gtk3theme.Adapta-Nokto
org.gtk.Gtk3theme.Adapta-Nokto-Eta
org.gtk.Gtk3theme.Adementary
org.gtk.Gtk3theme.Adwaita-dark
org.gtk.Gtk3theme.adw-gtk3
org.gtk.Gtk3theme.adw-gtk3-dark
org.gtk.Gtk3theme.Akwa org.gtk.Gtk3theme.Akwa-dark org.gtk.Gtk3theme.Akwa-light org.gtk.Gtk3theme.Ambiance org.gtk.Gtk3theme.Arc org.gtk.Gtk3theme.Arc-Dark org.gtk.Gtk3theme.Arc-Darker org.gtk.Gtk3theme.Arc-Darker-solid org.gtk.Gtk3theme.Arc-Dark-solid org.gtk.Gtk3theme.Arc-Lighter org.gtk.Gtk3theme.Arc-Lighter-solid org.gtk.Gtk3theme.Arc-solid org.gtk.Gtk3theme.Breeze org.gtk.Gtk3theme.Catppuccin-blue org.gtk.Gtk3theme.Catppuccin-green org.gtk.Gtk3theme.Catppuccin-orange org.gtk.Gtk3theme.Catppuccin-pink org.gtk.Gtk3theme.Catppuccin-purple org.gtk.Gtk3theme.Catppuccin-red org.gtk.Gtk3theme.Catppuccin-teal org.gtk.Gtk3theme.Catppuccin-yellow org.gtk.Gtk3theme.Chicago95 org.gtk.Gtk3theme.Communitheme org.gtk.Gtk3theme.CrosAdapta org.gtk.Gtk3theme.deepin org.gtk.Gtk3theme.deepin-dark org.gtk.Gtk3theme.elementary org.gtk.Gtk3theme.Flat-Remix-GTK-Blue org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Dark org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Darker org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Darker-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Darkest org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Darkest-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Darkest-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Darkest-Solid-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Dark-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Blue-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Green org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Dark org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Darker org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Darker-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Darkest org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Darkest-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Darkest-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Darkest-Solid-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Dark-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Green-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Red org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Dark org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Darker org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Darker-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Darkest org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Darkest-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Darkest-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Darkest-Solid-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Dark-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Red-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Dark org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Darker org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Darker-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Darkest org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Darkest-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Darkest-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Darkest-Solid-NoBorder org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Dark-Solid org.gtk.Gtk3theme.Flat-Remix-GTK-Yellow-Solid org.gtk.Gtk3theme.Greybird org.gtk.Gtk3theme.Greybird org.gtk.Gtk3theme.Greybird-dark org.gtk.Gtk3theme.Greybird-Geeko-Dark org.gtk.Gtk3theme.Greybird-Geeko-Light org.gtk.Gtk3theme.Helium org.gtk.Gtk3theme.Helium-dark org.gtk.Gtk3theme.High-Sierra org.gtk.Gtk3theme.High-Sierra-Dark org.gtk.Gtk3theme.Jade-1 org.gtk.Gtk3theme.Jade-1-Amber org.gtk.Gtk3theme.Jade-1-Aqua org.gtk.Gtk3theme.Jade-1-Blue org.gtk.Gtk3theme.Jade-1-Gray org.gtk.Gtk3theme.Jade-1-Green org.gtk.Gtk3theme.Jade-1-Indigo org.gtk.Gtk3theme.Jade-1-Purple org.gtk.Gtk3theme.Jade-1-Red org.gtk.Gtk3theme.Jade-1-Teal org.gtk.Gtk3theme.Lounge org.gtk.Gtk3theme.Lounge-compact org.gtk.Gtk3theme.Lounge-night org.gtk.Gtk3theme.Lounge-night-compact org.gtk.Gtk3theme.Matcha-aliz org.gtk.Gtk3theme.Matcha-azul org.gtk.Gtk3theme.Matcha-dark-aliz org.gtk.Gtk3theme.Matcha-dark-azul org.gtk.Gtk3theme.Matcha-dark-pueril org.gtk.Gtk3theme.Matcha-dark-sea org.gtk.Gtk3theme.Matcha-light-aliz org.gtk.Gtk3theme.Matcha-light-azul org.gtk.Gtk3theme.Matcha-light-pueril org.gtk.Gtk3theme.Matcha-light-sea org.gtk.Gtk3theme.Matcha-pueril org.gtk.Gtk3theme.Matcha-sea org.gtk.Gtk3theme.Materia org.gtk.Gtk3theme.Materia-compact org.gtk.Gtk3theme.Materia-dark org.gtk.Gtk3theme.Materia-dark-compact org.gtk.Gtk3theme.Materia-light org.gtk.Gtk3theme.Materia-light-compact org.gtk.Gtk3theme.Materia-nord org.gtk.Gtk3theme.Materia-nord-compact org.gtk.Gtk3theme.Mint-Y org.gtk.Gtk3theme.Mint-Y-Aqua org.gtk.Gtk3theme.Mint-Y-Blue org.gtk.Gtk3theme.Mint-Y-Brown org.gtk.Gtk3theme.Mint-Y-Dark org.gtk.Gtk3theme.Mint-Y-Dark-Aqua org.gtk.Gtk3theme.Mint-Y-Dark-Blue org.gtk.Gtk3theme.Mint-Y-Dark-Brown org.gtk.Gtk3theme.Mint-Y-Darker org.gtk.Gtk3theme.Mint-Y-Darker-Aqua org.gtk.Gtk3theme.Mint-Y-Darker-Blue org.gtk.Gtk3theme.Mint-Y-Darker-Brown org.gtk.Gtk3theme.Mint-Y-Darker-Grey org.gtk.Gtk3theme.Mint-Y-Darker-Orange org.gtk.Gtk3theme.Mint-Y-Darker-Pink org.gtk.Gtk3theme.Mint-Y-Darker-Purple org.gtk.Gtk3theme.Mint-Y-Darker-Red org.gtk.Gtk3theme.Mint-Y-Darker-Sand org.gtk.Gtk3theme.Mint-Y-Darker-Teal org.gtk.Gtk3theme.Mint-Y-Dark-Grey org.gtk.Gtk3theme.Mint-Y-Dark-Orange org.gtk.Gtk3theme.Mint-Y-Dark-Pink org.gtk.Gtk3theme.Mint-Y-Dark-Purple org.gtk.Gtk3theme.Mint-Y-Dark-Red org.gtk.Gtk3theme.Mint-Y-Dark-Sand org.gtk.Gtk3theme.Mint-Y-Dark-Teal org.gtk.Gtk3theme.Mint-Y-Grey org.gtk.Gtk3theme.Mint-Y-Orange org.gtk.Gtk3theme.Mint-Y-Pink org.gtk.Gtk3theme.Mint-Y-Purple org.gtk.Gtk3theme.Mint-Y-Red org.gtk.Gtk3theme.Mint-Y-Sand org.gtk.Gtk3theme.Mint-Y-Teal org.gtk.Gtk3theme.Mojave-light org.gtk.Gtk3theme.Numix org.gtk.Gtk3theme.Numix-Frost org.gtk.Gtk3theme.Numix-Frost-Light org.gtk.Gtk3theme.Obsidian-2 org.gtk.Gtk3theme.Obsidian-2-Amber org.gtk.Gtk3theme.Obsidian-2-Aqua org.gtk.Gtk3theme.Obsidian-2-Gray org.gtk.Gtk3theme.Obsidian-2-Green org.gtk.Gtk3theme.Obsidian-2-Indigo org.gtk.Gtk3theme.Obsidian-2-Mint org.gtk.Gtk3theme.Obsidian-2-Purple org.gtk.Gtk3theme.Obsidian-2-Red org.gtk.Gtk3theme.Obsidian-2-Teal org.gtk.Gtk3theme.Plata org.gtk.Gtk3theme.Plata org.gtk.Gtk3theme.Plata-Compact org.gtk.Gtk3theme.Plata-Compact org.gtk.Gtk3theme.Plata-Lumine org.gtk.Gtk3theme.Plata-Lumine org.gtk.Gtk3theme.Plata-Lumine-Compact org.gtk.Gtk3theme.Plata-Lumine-Compact org.gtk.Gtk3theme.Plata-Noir org.gtk.Gtk3theme.Plata-Noir org.gtk.Gtk3theme.Plata-Noir-Compact org.gtk.Gtk3theme.Plata-Noir-Compact org.gtk.Gtk3theme.Pop org.gtk.Gtk3theme.Pop-dark org.gtk.Gtk3theme.Pop-light org.gtk.Gtk3theme.Pop-slim-dark org.gtk.Gtk3theme.Pop-slim-light org.gtk.Gtk3theme.Qogir org.gtk.Gtk3theme.Qogir org.gtk.Gtk3theme.Qogir-dark org.gtk.Gtk3theme.Qogir-light org.gtk.Gtk3theme.Qogir-light org.gtk.Gtk3theme.Qogir-manjaro org.gtk.Gtk3theme.Qogir-manjaro org.gtk.Gtk3theme.Qogir-manjaro-dark org.gtk.Gtk3theme.Qogir-manjaro-dark org.gtk.Gtk3theme.Qogir-manjaro-light org.gtk.Gtk3theme.Qogir-manjaro-light org.gtk.Gtk3theme.Qogir-manjaro-win org.gtk.Gtk3theme.Qogir-manjaro-win org.gtk.Gtk3theme.Qogir-manjaro-win-dark org.gtk.Gtk3theme.Qogir-manjaro-win-dark org.gtk.Gtk3theme.Qogir-manjaro-win-light org.gtk.Gtk3theme.Qogir-manjaro-win-light org.gtk.Gtk3theme.Qogir-ubuntu org.gtk.Gtk3theme.Qogir-ubuntu org.gtk.Gtk3theme.Qogir-ubuntu-dark org.gtk.Gtk3theme.Qogir-ubuntu-dark org.gtk.Gtk3theme.Qogir-ubuntu-light org.gtk.Gtk3theme.Qogir-ubuntu-light org.gtk.Gtk3theme.Qogir-ubuntu-win org.gtk.Gtk3theme.Qogir-ubuntu-win org.gtk.Gtk3theme.Qogir-ubuntu-win-dark org.gtk.Gtk3theme.Qogir-ubuntu-win-dark org.gtk.Gtk3theme.Qogir-ubuntu-win-light org.gtk.Gtk3theme.Qogir-ubuntu-win-light org.gtk.Gtk3theme.Qogir-win org.gtk.Gtk3theme.Qogir-win org.gtk.Gtk3theme.Qogir-win-dark org.gtk.Gtk3theme.Qogir-win-dark org.gtk.Gtk3theme.Qogir-win-light org.gtk.Gtk3theme.Qogir-win-light org.gtk.Gtk3theme.Sierra-Negra org.gtk.Gtk3theme.SolArc-Dark org.gtk.Gtk3theme.Yaru org.gtk.Gtk3theme.Yaru-Amber org.gtk.Gtk3theme.Yaru-Amber org.gtk.Gtk3theme.Yaru-Amber-dark org.gtk.Gtk3theme.Yaru-Amber-dark org.gtk.Gtk3theme.Yaru-Amber-light org.gtk.Gtk3theme.Yaru-Amber-light org.gtk.Gtk3theme.Yaru-Aqua org.gtk.Gtk3theme.Yaru-Aqua org.gtk.Gtk3theme.Yaru-Aqua-dark org.gtk.Gtk3theme.Yaru-Aqua-dark org.gtk.Gtk3theme.Yaru-Aqua-light org.gtk.Gtk3theme.Yaru-Aqua-light org.gtk.Gtk3theme.Yaru-Aubergine org.gtk.Gtk3theme.Yaru-Aubergine-dark org.gtk.Gtk3theme.Yaru-Aubergine-light org.gtk.Gtk3theme.Yaru-bark org.gtk.Gtk3theme.Yaru-bark-dark org.gtk.Gtk3theme.Yaru-Blue org.gtk.Gtk3theme.Yaru-Blue org.gtk.Gtk3theme.Yaru-Blue-dark org.gtk.Gtk3theme.Yaru-Blue-dark org.gtk.Gtk3theme.Yaru-Blue-light org.gtk.Gtk3theme.Yaru-Blue-light org.gtk.Gtk3theme.Yaru-Brown org.gtk.Gtk3theme.Yaru-Brown org.gtk.Gtk3theme.Yaru-Brown-dark org.gtk.Gtk3theme.Yaru-Brown-dark org.gtk.Gtk3theme.Yaru-Brown-light org.gtk.Gtk3theme.Yaru-Brown-light org.gtk.Gtk3theme.Yaru-Cinnamon org.gtk.Gtk3theme.Yaru-Cinnamon org.gtk.Gtk3theme.Yaru-Cinnamon-dark org.gtk.Gtk3theme.Yaru-Cinnamon-dark org.gtk.Gtk3theme.Yaru-Cinnamon-light org.gtk.Gtk3theme.Yaru-Cinnamon-light org.gtk.Gtk3theme.Yaru-dark org.gtk.Gtk3theme.Yaru-Deepblue org.gtk.Gtk3theme.Yaru-Deepblue org.gtk.Gtk3theme.Yaru-Deepblue-dark org.gtk.Gtk3theme.Yaru-Deepblue-dark org.gtk.Gtk3theme.Yaru-Deepblue-light org.gtk.Gtk3theme.Yaru-Deepblue-light org.gtk.Gtk3theme.Yaru-Green org.gtk.Gtk3theme.Yaru-Green org.gtk.Gtk3theme.Yaru-Green-dark org.gtk.Gtk3theme.Yaru-Green-dark org.gtk.Gtk3theme.Yaru-Green-light org.gtk.Gtk3theme.Yaru-Green-light org.gtk.Gtk3theme.Yaru-Grey org.gtk.Gtk3theme.Yaru-Grey org.gtk.Gtk3theme.Yaru-Grey-dark org.gtk.Gtk3theme.Yaru-Grey-dark org.gtk.Gtk3theme.Yaru-Grey-light org.gtk.Gtk3theme.Yaru-Grey-light org.gtk.Gtk3theme.Yaru-Lavender org.gtk.Gtk3theme.Yaru-Lavender-dark org.gtk.Gtk3theme.Yaru-Lavender-light org.gtk.Gtk3theme.Yaru-light org.gtk.Gtk3theme.Yaru-magenta org.gtk.Gtk3theme.Yaru-magenta-dark org.gtk.Gtk3theme.Yaru-MATE org.gtk.Gtk3theme.Yaru-MATE org.gtk.Gtk3theme.Yaru-MATE-dark org.gtk.Gtk3theme.Yaru-MATE-dark org.gtk.Gtk3theme.Yaru-MATE-light org.gtk.Gtk3theme.Yaru-MATE-light org.gtk.Gtk3theme.Yaru-olive org.gtk.Gtk3theme.Yaru-olive-dark org.gtk.Gtk3theme.Yaru-Orange org.gtk.Gtk3theme.Yaru-Orange org.gtk.Gtk3theme.Yaru-Orange-dark org.gtk.Gtk3theme.Yaru-Orange-dark org.gtk.Gtk3theme.Yaru-Orange-light org.gtk.Gtk3theme.Yaru-Orange-light org.gtk.Gtk3theme.Yaru-Pink org.gtk.Gtk3theme.Yaru-Pink org.gtk.Gtk3theme.Yaru-Pink-dark org.gtk.Gtk3theme.Yaru-Pink-dark org.gtk.Gtk3theme.Yaru-Pink-light org.gtk.Gtk3theme.Yaru-Pink-light org.gtk.Gtk3theme.Yaru-prussiangreen org.gtk.Gtk3theme.Yaru-prussiangreen-dark org.gtk.Gtk3theme.Yaru-Purple org.gtk.Gtk3theme.Yaru-Purple org.gtk.Gtk3theme.Yaru-Purple-dark org.gtk.Gtk3theme.Yaru-Purple-dark org.gtk.Gtk3theme.Yaru-Purple-light org.gtk.Gtk3theme.Yaru-Purple-light org.gtk.Gtk3theme.Yaru-Red org.gtk.Gtk3theme.Yaru-Red org.gtk.Gtk3theme.Yaru-Red-dark org.gtk.Gtk3theme.Yaru-Red-dark org.gtk.Gtk3theme.Yaru-Red-light org.gtk.Gtk3theme.Yaru-Red-light org.gtk.Gtk3theme.Yaru-remix org.gtk.Gtk3theme.Yaru-remix-dark org.gtk.Gtk3theme.Yaru-remix-light org.gtk.Gtk3theme.Yaru-sage org.gtk.Gtk3theme.Yaru-sage-dark org.gtk.Gtk3theme.Yaru-Teal org.gtk.Gtk3theme.Yaru-Teal org.gtk.Gtk3theme.Yaru-Teal-dark org.gtk.Gtk3theme.Yaru-Teal-dark org.gtk.Gtk3theme.Yaru-Teal-light org.gtk.Gtk3theme.Yaru-Teal-light org.gtk.Gtk3theme.Yaru-Yellow org.gtk.Gtk3theme.Yaru-Yellow-dark org.gtk.Gtk3theme.Yaru-Yellow-dark org.gtk.Gtk3theme.Yaru-Yellow-light org.gtk.Gtk3theme.Yaru-Yellow-light org.gtk.Gtk3theme.Zukitre org.gtk.Gtk3theme.Zukitwo

You can see at the top of the list adw-gtk3 and adw-gtk3-dark are separate packages, so if you wanted to support both light and dark modes, install them both:

for T in adw-gtk3 adw-gtk3-dark; do flatpak install -uy org.gtk.Gtk3theme.$T; done Code language: Bash (bash)

See if there’s a packaged or scripted version of the same theme on your distro before installing from Gnome Look – I lucked out and there was one already in the AUR (number 3 looked good to me!):

❯ paru -Ss adw-gtk3
<strong>aur</strong>/<strong>adw-gtk35.3-1</strong> [<strong>+43 ~3.15</strong>]
   The theme from libadwaita ported to GTK-3
<strong>aur</strong>/<strong>adw-gtk3-git1.0.r2.a2a0114-1</strong> [<strong>+15 ~1.21</strong>]
   The theme from libadwaita ported to GTK-3
<strong>aur</strong>/<strong>adw-gtk-theme1.1-2</strong> [<strong>+12 ~1.00</strong>]
   LibAdwaita Theme for all GTK3 and GTK4 Apps. NOTE: This is a meta package
   which uses adw-gtk3 for GTK3 and official LibAdwaita theme for GTK4
Code language: Bash (bash)

If you do have to install a theme package manually, just remember they can go in either /usr/share/themes/. (system-wide) or $HOME/.local/share/themes (user), but not both!

Go to kcm_style in your KDE settings panel and choose “Configure GNOME/GTK Application Style” (top right)

❯ systemsettings <strong>kcm</strong>_styleCode language: Bash (bash)
KDE Settings Configuration (part 1)
KDE Settings Configuration (part 2)

Last step (hopefully):

Tell gsettings your defaults – this has to be done from the command line unless you have dconf-editor or gnome-tweaks installed for some reason (unusual and unnecessary for a KDE-centric system). Here’s the key-value pairs:

❯ gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3-dark'; 
  gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'Code language: Bash (bash)

Replace the values at the end with your particular theme and preference, of course (again, I choose adw-gtk3-dark, mostly because I knew it would be the best supported theme). Obviously, if you don’t 'prefer-dark' that second line is optional.

OK now try starting one of the flatpaks you’ve been having issues with and see how it went!

If it’s still not loading in your preferred theme, I’d go back and check the steps to make sure you covered them properly. You can try gsettings get on org.gnome.desktop.interface gtk-theme to check that it has your proper value, or check /usr/share/themes to make sure a folder exists with the name of the theme you thought you installed (manually or with a package manager) or $HOME/.local/share/themes/ if you installed it manually to your user folder.

If those all seem legit, check out xsettingsd: It looks like it’s a dependency of kde-gtk-config on Arch Linux currently, so you might already have it:

❯ pacman -Qi xsettingsd
Name            : xsettingsd
Version         : 1.0.2-1
Description     : Provides settings to X11 applications via the XSETTINGS specification
Architecture    : x86_64
URL             : https://github.com/derat/xsettingsd
Licenses        : custom:BSD
Groups          : None
Provides        : None
Depends On      : libx11  gcc-libs
Optional Deps   : None
Required By     : kde-gtk-config
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 78.82 KiB
Packager        : Antonio Rojas <arojas@archlinux.org>
Build Date      : Mon 09 Aug 2021 04:16:10 AM PDT
Install Date    : Sat 16 Mar 2024 10:31:30 PM PDT
Install Reason  : Installed as a dependency for another package
Install Script  : No
Validated By    : Signature
Code language: Bash (bash)

Do the usual checks to make sure it’s running (it’s only visible using systemctl --user in Arch):

❯  systemctl --user status xsettingsd.service
● xsettingsd.service - XSETTINGS-protocol daemon
     Loaded: loaded (/usr/lib/systemd/user/xsettingsd.service; static)
     Active: active (running) since Sat 2024-03-23 14:35:18 PDT; 1h 52min ago
   Main PID: 469119 (xsettingsd)
      Tasks: 1 (limit: 9084)
     Memory: 156.0K (peak: 696.0K swap: 344.0K swap peak: 344.0K zswap: 55.8K)
        CPU: 4ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/xsettingsd.service
             └─469119 /usr/bin/xsettingsd

Mar 23 14:35:18 purplehippo systemd[1283]: Started XSETTINGS-protocol daemon.
Mar 23 14:35:18 purplehippo xsettingsd[469119]: xsettingsd: Loaded 14 settings from /home/avery/.config/xsettingsd/xsettingsd.conf
Mar 23 14:35:18 purplehippo xsettingsd[469119]: xsettingsd: Created window 0xc00001 on screen 0 with timestamp 5373106
Mar 23 14:35:18 purplehippo xsettingsd[469119]: xsettingsd: Selection _XSETTINGS_S0 is owned by 0x0
Mar 23 14:35:18 purplehippo xsettingsd[469119]: xsettingsd: Took ownership of selection _XSETTINGS_S0
Mar 23 14:53:07 purplehippo xsettingsd[469119]: xsettingsd: Reloading configuration
Mar 23 14:53:07 purplehippo xsettingsd[469119]: xsettingsd: Loaded 14 settings from /home/avery/.config/xsettingsd/xsettingsd.conf
Code language: JavaScript (javascript)

If it’s having an issue, try restarting it, or you can examine the configuration file it creates automatically in your $XDG_CONFIG_HOME dir and make sure it all looks reasonable:

❯ bat $XDG_CONFIG_HOME/xsettingsd/xsettingsd.conf
──────┬──────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /home/avery/.config/xsettingsd/xsettingsd.conf
──────┼──────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ Gdk/UnscaledDPI 98304
   2   │ Gdk/WindowScalingFactor 1
   3   │ Gtk/EnableAnimations 1
   4   │ Gtk/DecorationLayout "icon:minimize,maximize,close"
   5   │ Net/ThemeName "adw-gtk3-dark"
   6   │ Gtk/PrimaryButtonWarpsSlider 0
   7   │ Gtk/ToolbarStyle 3
   8   │ Gtk/MenuImages 1
   9   │ Gtk/ButtonImages 1
  10   │ Gtk/CursorThemeSize 64
  11   │ Gtk/CursorThemeName "Posy_Cursor_125_175"
  12   │ Net/SoundThemeName "ocean"
  13   │ Net/IconThemeName "Papirus"
  14   │ Gtk/FontName "Noto Sans,  10"
  15   │ 
──────┴──────────────────────────────────────────────────────────────────────────────────────────────────────Code language: JavaScript (javascript)

if THAT all looks fine, there was one last thing on wiki.archlinux.org that looked like it might work (especially with Window Manager-type setups like minimal tiling desktop such as sway and dwm – although, if you’re into minimal WMs, not sure if you’d like flatpaks – in any event, nobody’s a monolith…). You could put something like this in $HOME/bin and call it refresh-flatpak-themes (etc.) then run it when you see one getting dodgy:

#!/usr/bin/env bash
for FLATPAK_APP in "$HOME/.var/app/*"; do
  [ -d "$HOME/.var/app/$FLATPAK_APP/config/gtk-3.0" ] ||
  /usr/bin/ln -s "$HOME/.config/gtk-3.0" "$HOME/.var/app/$FLATPAK_APP/config/"
done
Code language: JavaScript (javascript)

Which basically just loops through each flatpak app you have in your user’s .var folder, checks to see if it has a gtk-3.0 definition folder, and if not, makes a symbolic link to where one usually lives in your $XDG_CONFIG_HOME. You could try making the symlink to one manually to see if it works before setting up a script, but if it works out, hey, go for it.

Another option I saw which looks pretty elegant is outlined here on a xerolinux-specific BB, but should apply to pretty much any distro using the xdg user-dirs spec:

❯ export GTK3_THEME=(name of preferred theme);
  flatpak --user override --filesystem=$HOME/.local/share/themes;
  flatpak --user override --filesystem=$XDG_CONFIG_HOME/gtk-3.0:ro;
  for FLATPAK_APP in $HOME/.var/app/*; do flatpak --user override \
  $FLATPAK_APP --env=GTK_THEME=$GTK3_THEME; doneCode language: PHP (php)

Quick pointers for troubleshooting:

  1. The user-dirs.dirs file usually lives at $HOME/.config/user-dirs.dirs
  2. Any $VARIABLE can be echoed to the screen using echo $VARNAME (make sure they’re properly set)

Author: averyfreeman

Recovering zfs evangelist. Random tech tip disseminator. React/Next.JS site developer, but currently only in spare time. Previously resided: Oakland, SF, Tokyo. Now near Seattle, loving vote by mail.

Leave a Reply

Your email address will not be published. Required fields are marked *