diff --git a/data/com.mattjakeman.ExtensionManager.gschema.xml.in b/data/com.mattjakeman.ExtensionManager.gschema.xml.in
index 508f07c7..03579aa0 100644
--- a/data/com.mattjakeman.ExtensionManager.gschema.xml.in
+++ b/data/com.mattjakeman.ExtensionManager.gschema.xml.in
@@ -19,5 +19,10 @@
Sort Enabled First
Display enabled extensions first in the installed view.
+
+ true
+ Auto Check for Updates
+ Automatically check for extension updates on startup.
+
diff --git a/po/extension-manager.pot b/po/extension-manager.pot
index b167aa7c..528df589 100644
--- a/po/extension-manager.pot
+++ b/po/extension-manager.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: extension-manager\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-09-28 09:43+0000\n"
+"POT-Creation-Date: 2026-02-20 08:59-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -116,7 +116,7 @@ msgstr ""
msgid "_Load More Results"
msgstr ""
-#: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58
+#: src/exm-browse-page.blp:145 src/exm-installed-page.blp:68
msgid "No Results Found"
msgstr ""
@@ -348,32 +348,40 @@ msgstr ""
msgid "Extensions can cause performance and stability issues"
msgstr ""
-#: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135
+#: src/exm-installed-page.blp:38
+msgid "Auto Check for Updates"
+msgstr ""
+
+#: src/exm-installed-page.blp:39
+msgid "Check for extension updates on startup"
+msgstr ""
+
+#: src/exm-installed-page.blp:45 src/exm-upgrade-assistant.blp:135
msgid "User-Installed Extensions"
msgstr ""
-#: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139
+#: src/exm-installed-page.blp:50 src/exm-upgrade-assistant.blp:139
msgid "System Extensions"
msgstr ""
-#: src/exm-installed-page.blp:59
+#: src/exm-installed-page.blp:69
msgid "Try a different search or search online"
msgstr ""
-#: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87
+#: src/exm-installed-page.blp:76 src/exm-installed-page.blp:97
msgid "_Search Online"
msgstr ""
-#: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496
+#: src/exm-installed-page.blp:89 src/exm-upgrade-assistant.c:496
msgid "No Extensions Installed"
msgstr ""
-#: src/exm-installed-page.blp:80
+#: src/exm-installed-page.blp:90
msgid "Search online to install extensions"
msgstr ""
#. Translators: '%d' = number of extensions that will be updated
-#: src/exm-installed-page.c:315
+#: src/exm-installed-page.c:324
#, c-format
msgid "%d extension will be updated on next login"
msgid_plural "%d extensions will be updated on next login"
diff --git a/src/exm-installed-page.blp b/src/exm-installed-page.blp
index 46e11bef..62900b3d 100644
--- a/src/exm-installed-page.blp
+++ b/src/exm-installed-page.blp
@@ -28,6 +28,16 @@ template $ExmInstalledPage: Gtk.Widget {
title: _("Use Extensions");
subtitle: _("Extensions can cause performance and stability issues");
}
+
+ Adw.SwitchRow auto_check_updates_toggle {
+ [prefix]
+ Gtk.Image {
+ icon-name: 'software-update-available-symbolic';
+ }
+
+ title: _("Auto Check for Updates");
+ subtitle: _("Check for extension updates on startup");
+ }
}
Adw.PreferencesGroup user_prefs_group {
diff --git a/src/exm-installed-page.c b/src/exm-installed-page.c
index 3d2528b5..713eb2e7 100644
--- a/src/exm-installed-page.c
+++ b/src/exm-installed-page.c
@@ -40,12 +40,14 @@ struct _ExmInstalledPage
GtkStack *stack;
AdwBanner *updates_banner;
AdwSwitchRow *global_toggle;
+ AdwSwitchRow *auto_check_updates_toggle;
AdwPreferencesGroup *user_prefs_group;
AdwPreferencesGroup *system_prefs_group;
AdwPreferencesGroup *search_prefs_group;
GtkFilterListModel *search_list_model;
gboolean sort_enabled_first;
+ gboolean auto_check_updates;
gboolean search_mode_enabled;
const char *search_query;
guint signal_id;
@@ -57,6 +59,7 @@ enum {
PROP_0,
PROP_MANAGER,
PROP_SORT_ENABLED_FIRST,
+ PROP_AUTO_CHECK_UPDATES,
PROP_SEARCH_MODE_ENABLED,
PROP_SEARCH_QUERY,
N_PROPS
@@ -104,6 +107,9 @@ exm_installed_page_get_property (GObject *object,
case PROP_SORT_ENABLED_FIRST:
g_value_set_boolean (value, self->sort_enabled_first);
break;
+ case PROP_AUTO_CHECK_UPDATES:
+ g_value_set_boolean (value, self->auto_check_updates);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -126,6 +132,9 @@ exm_installed_page_set_property (GObject *object,
self->sort_enabled_first = g_value_get_boolean (value);
invalidate_model_bindings (self);
break;
+ case PROP_AUTO_CHECK_UPDATES:
+ self->auto_check_updates = g_value_get_boolean (value);
+ break;
case PROP_SEARCH_MODE_ENABLED:
self->search_mode_enabled = g_value_get_boolean (value);
switch_page (self);
@@ -450,7 +459,8 @@ on_bind_manager (ExmInstalledPage *self)
// Check if updates are available
// NOTE: We need to do this *after* connecting the signal
// handler above, otherwise we will not be notified.
- exm_manager_check_for_updates (self->manager);
+ if (self->auto_check_updates)
+ exm_manager_check_for_updates (self->manager);
}
static void
@@ -476,6 +486,13 @@ exm_installed_page_class_init (ExmInstalledPageClass *klass)
FALSE,
G_PARAM_READWRITE);
+ properties [PROP_AUTO_CHECK_UPDATES]
+ = g_param_spec_boolean ("auto-check-updates",
+ "Auto Check Updates",
+ "Auto Check Updates",
+ TRUE,
+ G_PARAM_READWRITE);
+
properties [PROP_SEARCH_MODE_ENABLED]
= g_param_spec_boolean ("search-mode-enabled",
"Search Mode Enabled",
@@ -499,6 +516,7 @@ exm_installed_page_class_init (ExmInstalledPageClass *klass)
gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, stack);
gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, updates_banner);
gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, global_toggle);
+ gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, auto_check_updates_toggle);
gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, user_prefs_group);
gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, system_prefs_group);
gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, search_prefs_group);
@@ -522,5 +540,13 @@ exm_installed_page_init (ExmInstalledPage *self)
self, "sort-enabled-first",
G_SETTINGS_BIND_GET);
+ g_settings_bind (settings, "auto-check-updates",
+ self, "auto-check-updates",
+ G_SETTINGS_BIND_DEFAULT);
+
+ g_object_bind_property (self, "auto-check-updates",
+ self->auto_check_updates_toggle, "active",
+ G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE);
+
g_object_unref (settings);
}