Flatpak themes and keyboard shortcuts

I posted last September about using a theme’s gtk.css file in ~/.themes to modify some keyboard shortcuts in Geary. This was for Geary installed from apt-type repos. Now that I have Geary v40 via Flatpak I find that it doesn’t use the same theme directory. Here is a way to specify a theme and keyboard shortcuts for Geary installed via Flatpak. I changed one or two of the shortcut command letters and also added the “step-up” feature, so after delete or archive, the next (newer) message is selected.

First run:
flatpak info org.gnome.Geary | grep Runtime

Suppose the output is:
Runtime: org.gnome.Platform/x86_64/40

Then the Flatpak theme dir is:

/var/lib/flatpak/runtime/org.gnome.Platform/x86_64/40/active/files/share/themes

Let’s call this $theme-dir. And let’s say your preferred theme is Blue-Submarine. Your preferred theme must have a gtk3.0 subdir.

Create a Geary-Blue-Submarine dir in $theme-dir:

mkdir $theme-dir/Geary-Blue-Submarine

Copy some of the files from /usr/share/themes/Blue-Submarine (as root):

# cd /usr/share/themes/Blue-Submarine
# cp -r gtk-3.0 index.theme $theme-dir/Geary-Blue-Submarine

Now go into the $theme-dir/Geary-Blue-Submarine directory.

Add these lines to gtk.css (I put them at the top). Adjust bindings as you wish.

@binding-set SingleKeyShortcuts {
  bind "c" {
    "archive-conversations" ()
    "navigate" (step-up)
  };
  bind "d" {
    "trash-conversations" ()
    "navigate" (step-up)
  };
  /*
  bind "r" { "reply-conversation-sender" () };
  bind "f" { "forward-conversation" () };
  bind "R" { "reply-conversation-all" () };
  bind "slash" { "find" () };
  bind "k" { "navigate" (step-up) };
  bind "j" { "navigate" (step-down) };
  */
}
window.geary-main-window {
  -gtk-key-bindings: SingleKeyShortcuts;
}

Then to test, run

GTK_THEME=Geary-Blue-Submarine flatpak run org.gnome.Geary

If you use a .desktop file in ~/Desktop, use this for the Exec line:

env GTK_THEME=Geary-Blue-Submarine flatpak run org.gnome.Geary

I got a lot of the above info from here:
https://forums.linuxmint.com/viewtopic.php?t=284418

I am not a theme expert or a Flatpak expert, so there may be other/better ways to do this :slight_smile:.

Also note that the theme directory location for Geary may change after a Geary update. So you would need to do this (as root):

mv gtk-3.0/ index.theme $newdir
or
cp -r gtk-3.0/ index.theme $newdir

Also, since the above changes are in /var, you should back up any added files in case some system update/re-install wipes them out.

Hi Doug, this isn’t a Geary-specific issue, but per the Flatpak section in the FAQ for themes to work in Flatpak, they need to be installed via Flatpak. So you’d need to create a Flatpak package for your custom theme, or use a workaround as described in the FAQ.

Right, not a Geary issue. But the above approach does work to theme Geary (and provide the modified shortcuts).