diff --git a/data/gtk/help-overlay.blp b/data/gtk/help-overlay.blp
index 633ef9ac6e937bd5db92bcb968238ad53740d3a1..218adf252d44c0d3c4d9f61518168d1a2793d1b7 100644
--- a/data/gtk/help-overlay.blp
+++ b/data/gtk/help-overlay.blp
@@ -27,6 +27,11 @@ ShortcutsWindow help_overlay {
         title: "Decrement score";
         action-name: "win.score-changed::down";
       }
+
+      ShortcutsShortcut {
+        title: "Show try filter";
+        action-name: "win.show-try-filter";
+      }
     }
   }
 }
diff --git a/data/gtk/window.blp b/data/gtk/window.blp
index 1045cc9acf3b94ad2a3d95678812d8581b0079b9..0b31f50bb3800eb7debb25a9daa9e03464f81b42 100644
--- a/data/gtk/window.blp
+++ b/data/gtk/window.blp
@@ -24,10 +24,9 @@ template RugbyAppWindow : Adw.ApplicationWindow {
       }
 
       ToggleButton filter_toggle {
+        action-name: "win.show-try-filter";
         icon-name: "funnel";
         tooltip-text: "Show Try Filter";
-
-        toggled => filter_toggle_toggled_cb();
       }
 
       [end]
diff --git a/src/main.c b/src/main.c
index 2777032a7cd2e6323b0fdd0793344cc085bcdbf4..1c9abb08531b744b0d5cf7488aaea69f292a29f3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -77,6 +77,9 @@ on_startup (GApplication          *app,
     gtk_application_set_accels_for_action (GTK_APPLICATION (app),
                                            "win.score-changed::down",
                                            (const char*[]) { "<Ctrl>Down", "<Ctrl>Left", NULL });
+    gtk_application_set_accels_for_action (GTK_APPLICATION (app),
+                                           "win.show-try-filter",
+                                           (const char*[]) { "<Ctrl>F", NULL });
 }
 
 int
diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index 4c5a69246112b8ffff0cbe85ed0eda1f1dc37db1..fc77882cc11059c0a8421b962a3e65d64a483af1 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -148,12 +148,13 @@ try_filter_func (gpointer item,
 }
 
 static void
-filter_toggle_toggled_cb (GtkToggleButton *btn,
-                          gpointer         user_data)
+show_try_filter_change_state (GSimpleAction *action,
+                              GVariant      *value,
+                              gpointer       user_data)
 {
     RugbyAppWindow *self = RUGBY_APP_WINDOW (user_data);
 
-    if (gtk_toggle_button_get_active (btn))
+    if (g_variant_get_boolean (value))
     {
         gtk_custom_filter_set_filter_func (self->try_filter, try_filter_func, self, NULL);
         gtk_filter_changed (GTK_FILTER (self->try_filter), GTK_FILTER_CHANGE_DIFFERENT);
@@ -162,6 +163,8 @@ filter_toggle_toggled_cb (GtkToggleButton *btn,
     {
         gtk_custom_filter_set_filter_func (self->try_filter, NULL, NULL, NULL);
     }
+
+    g_simple_action_set_state (action, value);
 }
 
 static void
@@ -171,6 +174,7 @@ rugby_app_window_init (RugbyAppWindow *self)
 
     const GActionEntry win_entries[] = {
         { .name = "score-changed", .activate = activate_score_changed, .parameter_type = "s" },
+        { .name = "show-try-filter", .state = "false", .change_state = show_try_filter_change_state },
     };
 
     g_action_map_add_action_entries (G_ACTION_MAP (self),
@@ -201,7 +205,6 @@ rugby_app_window_class_init (RugbyAppWindowClass *klass)
 
     gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, try_filter);
 
-    gtk_widget_class_bind_template_callback (widget_class, filter_toggle_toggled_cb);
     gtk_widget_class_bind_template_callback (widget_class, try_spin_value_changed_cb);
     gtk_widget_class_bind_template_callback (widget_class, item_tooltip_cb);
     gtk_widget_class_bind_template_callback (widget_class, list_store_items_changed_cb);